TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: How to get started with serious programming as a math liker?

6 pointsby optbuildover 2 years ago
I like math and can read and do elementary proofs. If required I can learn more of math because that interests me.<p>I want to become a hacker kind of programmer. By hacker I mean someone who can build stuff. Not always the perfect and best possible stuff, but, stuff that works good enough. By that I don&#x27;t imply that I lean towards messy programming sphagetti style over good readable and modifiable code.<p>One advice I hear all the time is get to building stuff. But before building I need to know the bare minimum, otherwise there will be huge gaps and misconceptions in my mental space.<p>So my questions are:<p>1. From where do I learn the bare minimum? MOOCs, books, etc? Any suggestions?<p>2. I believe in building tiny projects. Lots of them to gain confidence so that I can take over bigger ones later. What type of things can I build? Is there a list? Again, suggestions.<p>I wonder in awe how people go like - &quot;I need to accomplish this job. Let me think about it. Ok so now let me code up a small tool that does the job for me&quot;.<p>How to achieve this level, where the ideas don&#x27;t get bottlenecked due to my inability to think what can be achieved using a programming language and how to achieve that?

4 comments

rzzzwilsonover 2 years ago
Truth be told, there isn&#x27;t a lot of <i>mathematics</i> used in general programming. It&#x27;s mostly logic and some arithmetic. If you work on some problem that is in the maths domain then you need to know that your code is doing the right thing in the problem domain, so you should understand the maths.<p>If you haven&#x27;t programmed before then you need to get started. Any mainstream language would do, really, but you want one that is easy to learn but doesn&#x27;t limit you when you get more advanced. Remember that your first language is just your first, you will probably change to another later. What you are really learning, besides the language, is how to solve problems with a computer. That&#x27;s why your first language is harder to learn than your second - the problem solving skills from your first language transfer, mostly, to your second language.<p>I&#x27;m going to suggest you start learning python. It&#x27;s a relatively simple language with powerful libraries such as numpy and sympy you an use once you have the basics down. The &#x2F;r&#x2F;learnpython subreddit is very helpful for beginners to ask questions. The subreddit wiki has learning resources for beginner and intermediate python users:<p><a href="https:&#x2F;&#x2F;old.reddit.com&#x2F;r&#x2F;learnpython&#x2F;wiki&#x2F;index#wiki_new_to_programming.3F" rel="nofollow">https:&#x2F;&#x2F;old.reddit.com&#x2F;r&#x2F;learnpython&#x2F;wiki&#x2F;index#wiki_new_to_...</a><p>Once you have learned a bit start a project of any type. You learn a computer language just like a human language, you must use it.
ggeorgovassilisover 2 years ago
&gt; I like math and can read and do elementary proofs.<p>It probably helps when you are familiar with mathematical concepts and notations - proving theorems is, I think, less relevant in everyday programming than universities make it out to be.<p>&gt; otherwise there will be huge gaps and misconceptions in my mental space.<p>That is part of the journey. Programming isn&#x27;t something you plan at the beginning of your career and then you just happen to make all the right decisions on the way. You&#x27;ll fill those gaps as you progress, and it helps talking to experienced programmers. HN is great for that.<p>&gt; 1. From where do I learn the bare minimum? MOOCs, books, etc? Any suggestions?<p>Youtube, blogs, Linkedin&#x2F;Udemy&#x2F;Coursea classes. Books are also cool if you&#x27;re the reading type of person, but they are non interactive and you can&#x27;t ask any questions.<p>&gt; What type of things can I build?<p>Build something you like or need. My first programmes were text-only games, a text editor and Tetris. I think web programming in the browser (HTML + Javascript) is the quickest way to productivity, but it&#x27;s a bit messy because of the high rate of evolution. Embedded device programming (eg Arduino) can make for a cool holiday-illumination or home&#x2F;car automation project. If you&#x27;re more the analytical type of person, you could re-implement the most important algorithms (operations on data structure, sorting, searching, computing various functions, numerical algebra) with a scripting language like Python.<p>&gt; I wonder in awe how people go like - &quot;I need to accomplish this job. Let me think about it. Ok so now let me code up a small tool that does the job for me&quot;.<p>Problem decomposition. Just like maths.<p>&gt; How to achieve this level, where the ideas don&#x27;t get bottlenecked<p>As an individual, that is never going to happen. Even after decades in the game, I still got more ideas than time. But you can run open source projects and speed things up with the contribution of multiple people.
评论 #33951391 未加载
cable2600over 2 years ago
A friend of mine likes Math, he writes small programs in C in Linux. He is learning Python with SQL and GUI features. Stick with the free and open source languages like Python, Python supports complex numbers.
anigbrowlover 2 years ago
I&#x27;m like you. I prefer books.<p>I suggest Python and to a lesser extent Jupyter for now. Julia is better, C is faster, but Python is so ubiquitous that someone has already had your problem and written about it. Lots and lots of scientists (including mathematicians) use Python, and there is a huge ecosystem of tools for it.<p>It matters what you want to make. If it&#x27;s games, then disregard the above and maybe try Godot, but it sounds more like you want to be a swiss-army-knife kind of programmer that uses code to solve problems vs a pro software developer.<p>You should probably roll with Anaconda, despite its flaws. It&#x27;s an OK system for managing your programming environments&#x2F;dependencies without being completely overwhelmed in the first month. Python package&#x2F;dependency management out of the box is ass so unless you enjoy screaming at the command line you should outsource that task.<p>You&#x27;ll need a decent IDE. You might like Spyder which is aimed at Scientists. I like PyCharm (and its cousin DataSpell) from Jetbrains. You&#x27;ll feel a bit overwhelmed at first because there are over 9000 features you don&#x27;t need in the early days, but you do want something that can grow with you. Some people love VScode but they are wrong and also bad. The two IDEs I like are both installable via Anaconda and despite its flaws that&#x27;s the easiest way to get rolling.<p>Get familiar with SciPy, which is a suite of scientifically oriented python librarys including a computer algebra system (SymPy), vectorized computation (NumPy). You will probably find yourself using the latter a lot because Python is slow as mud by default so intense computation requires optimized libraries, usually written in C and given a Python interface.<p>You will need a good Python language reference book. I like O&#x27;Reilly books for most purposes, <i>Learning Python</i> by Mark Lutz is boring and tedious but a good complete reference for the early stages. You can safely ignore all the stuff about Python 2, most of the world has moved on and you probably won&#x27;t have to struggle with trying to convert code from Python 2 to Python 3.<p>Get a book or print out a cheat sheet on the Python standard library. It&#x27;s huge and getting a top level familiarity will save you a lot of time reinventing the wheel - although reinventing the wheel in pure Python is not that hard, doing it well is another thing, so often you&#x27;ll implement something for your own understanding, realize your implementation is not very good, and then have to make a decision between betting better at a very narrow task or going with the much-better-written library that already exists. C programmers will deride you for this because C is the kind of language where you start out with a hammer and use it to make your own nails. (I actually love C but it&#x27;s kind of a desert island language and you will get frustrated if you want to to anything remotely complex&#x2F;user-friendly until you have much more experience).<p>Do you wanna do &#x27;data science&#x27;? Probably, because that&#x27;s the hot word for waving your arms around and making the computer do stuff that isn&#x27;t easy to do in Excel. You&#x27;ll want <i>Python for Data Science</i> by Wes McKinney. This is a bit about Python, a bit more about NumPy, and a whole lot about Pandas, which he invented. Pandas is somewhere between a spreadsheet and a database. It&#x27;s verbose and not fun until it is and then you start opening .xls files in pandas because you can get stuff done faster than you can in Excel. It&#x27;s not hard, but it&#x27;s like its own second language that sits on top of Python at right angles. You need to know it because it&#x27;s so widespread that even more clever replacements aim to be compatible or at least similar to it.<p>If you just wanna make hardcore graphs you might get on great with Matlotlib, which is a Mathematics Plotting Library. It&#x27;s quirky but accessible, also ubiquitous. But it&#x27;s also too quirky ofr a lot of people and has a lot of competitors on the output&#x2F;user interface&#x2F;dashboard side. The big two are Bokeh (gorgeous visuals) and Plotly (slightly less gorgeous, but more extensible).<p>You&#x27;ll want some sort of output library to make pdfs, user interfaces, or web dashboards. Your main choices are Streamlit and Dash. Dash is from the makers of Plotly. It&#x27;s harder than Streamlit but not much, and better.<p>You should get used to doing stuff int he cloud, with stuff like Python Anywhere (part of Anaconda), AWS, or Google Colab. Otherwise you will be like me, running almost everything on your local machine and doing a bad job to pushing it into the outside world, while you instead supervise your own private infinity.<p>Did I say push? You NEED ot learn version control, and the easiest one is probably Git, as in Github. Your IDE will handle most of this for you and you should let it, unless you like screaming the command line. <i>Advanced Python Development</i> by Matthew Wilkes is not the most gripping read but it is good on how to manage your ridiculously large number of tools without completely losing your mind.<p>Remember I mentioned Jupyter? And Swiss Army knives? and remember how you just wanted something to hack around with, instead of mortgaging your cognitive capacity for the next half-decade? Get you a copy of <i>Python Interactive Computing and Visualization Cookbook</i> by Cyrille Rossant which is the best bridge between &#x27;I know some Python and some math and I could probably implement the ideas in this paper I just read&#x27; and Getting Shit Done in science Python. It&#x27;s very accessible and holds your hand well but also assumes you&#x27;re intellectually curious and want a wide breadth of knowledge. I wish I had bought it much earlier, it would have saved me a lot of time running down dead ends.<p>Anyway that ought to be enough to wreck your social life&#x2F;get yourself into moderately serious trouble. Expect to be constantly pissed off for maybe the first 3 months or so, as every new line of inquiry seems to turn up 10 fresh obstacles, partly because you are trying to get familiar with so many different things at once (IDE, language, libraries, program design, problem analysis...). At some point it starts to gel and you can get small tasks done easily enough that researching the next sub-topic becomes empowering rather than overwhelming.
评论 #33951893 未加载