5 ms·
First, we teach people variables, loops and conditions. Then we teach them procedures. Then we are horrified that newly minted "programmers" write code that is
by romaniv 9y ago
First, we teach people variables, loops and conditions. Then we teach them procedures. Then we are horrified that newly minted "programmers" write code that is a giant mess of nested loops and conditionals, split across arbitrarily created procedures that manage bloated and fully mutable program state.
Mental models are important. Life would be better for everyone if people started learning programming with LISP, Smalltalk, or at least C#'s LINQ in LINQPad.
- hasanas 9y agoCould you recommend a remedy for someone who's spent a great chunk of their programming experience in misdirection? I have only recently realised that my terrible misunderstanding of programming is slowing me a lot.
- noir_lord 9y agoDepends on your background, if you are .Net maybe F#, Java maybe Kotlin, PHP (and I say this as someone who writes PHP as a day job) maybe any other language in existence. Functional programming is a completely different conceptual model and even if you don't use it day to day it teaches you some important principles.
- hasanas 9y agoI have been badly taught Java at university (not sure if the course sucked, or I did, but I am a blunder) and have just found myself drawn into the JS world. I really enjoy the concepts of OO, but I feel like my knowledge is very shallow. Is it good if I rebuild my foundation on JS? I feel like JS is a bit, uh, messy.
- rubicon33 9y agoDo yourself a favor (if you want to be a web developer): Understand JavaScript deeply. Write your applications in TypeScript.
- Roboprog 9y agoIt’s a bit dated, but read “JavaScript, The Good Parts”. Also, check out the Ramda.js library, which brings quite a few good functional programming (FP) techniques to JS. Function scope is good. Closures are good. Higher order functions are good. Partial function application is good :-) Warning: if you get too used to FP style programming in JS, Java will feel quite painful afterward.
- felideon 9y agoEloquent JavaScript is probably what you are looking for: http://eloquentjavascript.net http://eloquentjavascript.net
- romaniv 9y agoDepends on what you want. If you want to learn about functional programming, something like this could give you fun and relatively painless head start: http://www.4clojure.com/ http://www.4clojure.com/ . Also, you could try to download LINQPad and look at code examples. If you want to learn about real OOP, I would recommend looking into Smalltalk, learning about design principles behind Xerox Alto/Star and listening to some OOP seminars from mid-80s. If you want to learn about high-level system design, here are some intelligent people I would listen to: Alan Kay, Rich Hickey, Peter Norvig, Salvatore Sanfilippo. I would also recommend every programmer to watch through at least one introductory AI class. Not because they necessarily need to work with AI algorithms, but because those classes teach to solve programming problems in a better way than just "write more logic and abstractions". https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-034-artificial-intelligence-fall-2010/ https://ocw.mit.edu/courses/electrical-engineering-and-compu... https://www.youtube.com/watch?v=mkBM4jvrhzk&list=PLAwxTw4SYaPlqMkzr4xyuD6cXTIgPuzgn https://www.youtube.com/watch?v=mkBM4jvrhzk&list=PLAwxTw4SYa... Hope this helps.