7 ms·
Here's a quote from the Ada interview with S. Tucker Taft >Do you have any advice for up-and-coming programmers? > Learn several different programming languag
by open-source-ux 7y ago
Here's a quote from the Ada interview with S. Tucker Taft
>Do you have any advice for up-and-coming programmers?
> Learn several different programming languages, and actually try to use them before developing a religious affection or distaste for them.
> Try Scheme, try Haskell, try Ada, try Icon, try Ruby, try CAML, try Python, try Prolog. Don’t let yourself fall into a rut of using just one language, thinking that it defines what programming means.
> Try to rise above the syntax and semantics of a single language to think about algorithms and data structures in the abstract. And while you are at it, read articles or books by some of the language design pioneers, like Hoare, Dijkstra, Wirth, Gries, Dahl, Brinch Hansen, Steele, Milner, and Meyer.
I think this point...
Try to rise above the syntax and semantics of a single language to think about algorithms and data structures in the abstract.
...is a stage that not many programmers reach (I certainly haven't). Agree or disagree? Or do you think it's importance is overstated?
- choeger 7y agoIt is absolutely correct. And if you can, you should try to gain some understanding of the inner workings of the languages you use. That often explains why feature X is not implemented.
- pjmlp 7y agoI agree with him. Read CS books about algorithms and datastructures that use pseudo-code instead of specific languages. Lambda calculus, denotional semantics, theory of objects, ... Then try to map how those concepts map to the daily languages that you use. A very contrived example, a B-Tree doesn't stop being a B-Tree just because you switched languages. It just might require a different way to map the abstract concept "B-Tree" to the actual hardware, using the specific set of language features available.
- AtomicOrbital 7y agoAbsolutely spot on ... learn assembly language then use to draw 3d graphics as well as impliment io or your favorite data structure ... true eye opener
- jstimpfle 7y agoLearn what you need the machine to do to accomplish a task. In theory, the language shouldn't matter much. In practice, I find syntactical conciseness important.
- chubot 7y agoI will be immodest and say that I reached that stage a long time ago. Because, for better or worse, I learned CS before I really learned to program :-/ I did program in middle/high school, but not very often, and I was bad it. I was better at reasoning about data structures than debugging, and I think the latter skill is "table stakes" before calling yourself a programmer. As a concrete example of thinking outside a particular language, My shell Oil is 24K lines of code that does most of what bash does at 140K LOC, written not in Python, but: 1. OPy, a subset of Python 2 -- http://www.oilshell.org/blog/2018/03/04.html#faq http://www.oilshell.org/blog/2018/03/04.html#faq 2. Zephyr ASDL -- http://www.oilshell.org/cross-ref.html?tag=zephyr-asdl#zephyr-asdl http://www.oilshell.org/cross-ref.html?tag=zephyr-asdl#zephy... 3. a mathematical dialect of regular expressions (that runs under both Python's re engine and re2c's dialect, via translation). In other words, it's a composition of DSLs, independent of any language. I started a translator from OPy (typed with MyPy) to C++. It partially works but doesn't translate the whole codebase yet. If it works then I will have fully achieved this "language abstraction" goal. It's analogous to how TeX was implemented by Knuth. TeX is not implemented in Pascal and compiled with a Pascal compiler. It's implemented in H-Pascal, and abstract subset of Pascal. Then it's translated to C and compiled with a C compiler! https://news.ycombinator.com/item?id=16526151 https://news.ycombinator.com/item?id=16526151 In case it isn't obvious, this makes the style of code VERY different and more abstract than what you see in every other codebase. This approach has downsides -- namely that the shell is way too slow right now. Hopefully the translation will fix that. Either way, I can definitely claim that the ideas and architecture are completely separate from any programming language. I've documented a lot of these ideas on the blog: http://www.oilshell.org/blog/ http://www.oilshell.org/blog/
- smcl 7y agoHave you got an article where you talk a bit about point #3 - "a mathematical dialect of regular expressions". The words all make sense, but I cannot picture it :-). Your Oil posts always appear up on lobste.rs shortly after they're posted and I thoroughly enjoy them, but I must have missed a few!
- carapace 7y ago
- carapace 7y agoYou remind me of one of my favorite jokes: "Computer science could be called the post-Turing decline in the study of formal systems."