4 ms·
> 19. A language that doesn't affect the way you think about programming, is not worth knowing. Can someone give an example of this for someone who has program
by tictoc 7y ago
> 19. A language that doesn't affect the way you think about programming, is not worth knowing.
Can someone give an example of this for someone who has programmed primarily in java, python, and javascript? What would be one worth learning?
- casion 7y agoA lisp, an assembly language, prolog, a (mostly) pure functional language.
- gumby 7y agoProlog is not just a "(mostly) pure functional language" (nicely put) but as a production system or "logic programming language" will change how you think of what it means to write code.
- casion 7y agoI wasn't saying prolog was mostly functionally pure, I was suggesting a (mostly) functional pure language as a 4th choice. Something like Haskell.
- tosh 7y agoHaskell / F# / Miranda / Ocaml / Reason SQL / datalog apl / j / k Rust Clojure / Racket / Scheme / Common Lisp Forth Julia Mathematica
- RandomInteger4 7y agoLua is nice.
- einpoklum 7y agoIt's nice because it's small and embeddable. I'm not sure it that significant educationally...
- RandomInteger4 7y agoIt teaches you the beauty of minimalism.
- einpoklum 7y agoThen... APL perhaps? https://tryapl.org/ https://tryapl.org/
- JustSomeNobody 7y ago> Can someone give an example of this... java, python, and javascript
- mistrial9 7y agoan assembly language used to be a major contributor, but now, not so sure.. choose a simple, high-level ASM to study.. perhaps the Motorola 68xxx type When this text was written, Object-Oriented programming was exotic.. now, most large kits of any flavor use OO structures without mentioning it.. and a new coder may not know what is OO and what is not.. so something basic with Objects, to make the layout clear.. A very simplified Javascript might do this. If your direction is math, then there are certain choices, but as we all know now, not all programming is actually related to classical math.. Functional programming got a new life with massive data graph traversal, but how many individuals do that ? I would say not "functional programming" but .. explicit graph traversal more .. like Sparql or something.. lastly, what used to be someone's "little language" is now just a set of expressions in a bigger, more stable language.. so the old lex-yacc skills are not so much critical IMHO, as something with patterns and patterned thinking.. the old pattern wiki is interesting if you can make yourself go through some kind of hands-on practice.. http://wiki.c2.com/ http://wiki.c2.com/
- andrewbinstock 7y agoIf you went Java -> Python -> JS, then surely you saw how the lack of the strong typing you enjoy in Java affects Python and JS. You also saw how those languages allowed scripting that is for all intents impossible in Java, and so forth.
- RandomInteger4 7y agoCan you elaborate on what you mean by "allowed scripting that is for all intents impossible in Java"?
- onei 7y agoI'd swap impossible with awkward or unweildy. Things like generators (might be in more recent versions of Java), list comprehensions and duck typing make Java feel clumsy and slow by comparison. You can replicate them, but I'd give up pretty quickly.
- BoiledCabbage 7y agoAs people have already listed a flavor of Lisp/Scheme would probably give you the biggest bang for your buck on changing how you think when programming. And that perspective will translate back to any language you use. Since you're already familiar with Java, Clojure is likely the best bet for you as it builds on top if it. Otherwise the slightly easier to learn but a bit less real world practical is Racket Scheme.
- voldacar 7y agoC if you want more control over the hardware, any lisp if you want a higher level of abstraction and the ability to manipulate your progam itself as a data structure. Pure functional programming languages can also be mind-altering
- anon1253 7y agoKnowing some C/C++ is very useful if you want to get a better understanding of what the computer is doing. Or Assembly of course, but that gets complicated fast. Common Lisp / Clojure / Scheme (or any language from that family) will really let you appreciate some fundamental functional programming tricks once you finally "grok" them. Prolog, it's great. You'll never look at graphs, trees, search or first order logic the same way. And, maybe, some day you'll be the one that says "that's just two lines of prolog". Haskell, or any other very strongly statically typed language. I'm definitely partial to dynamically typed languages, but you gotta try it before you knock it :-) Also if you have some money to spend, try Mathematica. It's one of those things that keeps getting reinvented, but poorly. Shamefully it's not open.
- abc_lisper 7y agoMathematica is not open, but the engine is free(as in beer) now
- einpoklum 7y agoProlog is a small language to learn, and has some interesting concepts very closely related to formal logic. You likely won't program with it but if you're after a bit of inspiration, go for it. Scala is Java's more upstanding, though less popular, sister. There's some online course for the basics of it by Martin Odersky. C is essentially a nicer way to write PDP-7 assembly. If you learn about that processor, and C, in parallel, it's an interesting experience. And C is not so big. C++ is a complex and multi-faceted beast which would take you forever to learn - "teach yourself C++ programming in 10 years". It's also not done, i.e. there are important parts of the language which don't yet exist, but should, and will, it's just taking a bit of time. So by the time C++ becomes 50 years old it will be kind-of ready. SQL is a domain-specific language. It's actually pretty big but you can just learn a fragment of it and it's basically enough for the gist of the thing. It's essential for working with (most) databases. There are more of course.
- gumby 7y agoScheme, Prolog and Smalltalk should each blow your mind in a different way -- make you think differently about control flow and what object oriented might mean. Writing processor microcode will change your view of the computer. It's harder to do that these days but if you've been programming at an extremely high level, even assembly code will change your conception of the machine.
- jkoudys 7y agoNo shortage of good answers, so I'll share my last experience: Rust. The incredibly strict compiler has made me much better at types in TypeScript. My understanding of how memory gets assigned, managed, and passed around has improved tremendously too. I've also gotten a lot better at writing iterators too.