5 ms·
Non-programmers make this mistake all the time: thinking that the syntax is the hard part of programming. No, the hard part of programming is understanding in
by dasil003 10y ago
Non-programmers make this mistake all the time: thinking that the syntax is the hard part of programming.
No, the hard part of programming is understanding in very specific and rigid details how to accomplish a task. What the author doesn't realize is the enormous amount of processing power, shared culture and empathy that goes into human interaction.
Even mighty Google doesn't have the compute power or the architecture to replicate this. Until computers can understand humans at a human-level this will not be possible. Several breakthroughs will be necessary, and even still I expect decades/centuries before it happens if it even happens. Essentially we're talking about the Singularity.
- bdrool 10y ago> Non-programmers make this mistake all the time: thinking that the syntax is the hard part of programming. Programmers make it all the time too, or at least something very similar. See all those people who are on the endless quest for the "perfect" language, which usually means one which allows for writing the shortest code, sometimes at a very high cognitive cost for very little payoff. No, I really don't want to do a massive amount of mental backflips just to save a few characters, thanks.
- pm90 10y agoThere isn't anything wrong with this kind of obsession tbh. We do need SOMEONE inventing, experimenting with new languages and if someone else is excited about doing so I'm quite ok with that :)
- Jtsummers 10y agoMany people looking for the "perfect language" want one that minimizes cognitive costs. An initial increase (comprehensive type systems like in MLs; rust's notion of ownership and lifetimes; Spark Ada's comingling of specification, code, and types) in cognitive cost which, once internalized, results in reduced cognitive costs for certain tasks. Less time spent developing tests. Less time debugging. Less time spent in maintenance (not because it's not needed, but because it goes faster when it's done).
- maxxxxx 10y agoOr learning one javscript framework after the other where you do the same thing with different syntax.
- brianwawok 10y agoDo you write in assembly? If not, you clearly see some gain in more terse syntax. Seems like a good thing to explore, although perhaps it should not be one's sole focus in life.
- openasocket 10y agoThe difference comes down to syntax vs. semantics. The problem with assembly isn't its syntax (mov eax, ebx is fairly readable), it's that the underlying semantics are too low level. Exploring new abstractions/semantics to use is very useful (local variables, first-class functions, algebraic data types, etc.), but optimizing solely for source program size leads to a language that's great for code golf and not much else.
- Jtsummers 10y agoOutside of J/K/APL few languages truly attempt to optimize for source size. Few people truly, deliberately optimize around source size outside those language programmers, demoscene types, and mathematicians/engineers-turned-programmers.
- majewsky 10y agoAdd Ruby to the list. Many gems (and frameworks) advertise with how much you can pack into a single line of code, at the expense of seemingly impenetrable magic happening behind the scenes.
- brianwawok 10y agoNot sure. I mean yes you can abuse some languages and fit an entire program on 1 line (see any golf project). But I can generally grok a 100 line scala program in the same time as a 100 line Java program, and the scala program is usually about twice as dense. (So I am groking scala twice as fast).
- i_are_smart 10y agoI generally find this to be true for myself, too. Although I would add the qualifier that I find Java to be an exceptionally wordy language, for lack of a better term. It seems to take a lot of talk to do a little in Java even compared to other object oriented languages.
- humanrebar 10y ago> See all those people who are on the endless quest for the "perfect" language To be fair, many programming language enthusiasts understand this and seek languages that properly frame the problems that need to be solved. Sometimes languages seem to have a high cognitive cost because they expose that the underlying problem has a high cognitive cost. Some things that seem really simple are actually rather complex, like string manipulation and data sharing.
- pjmlp 10y agoQuite true. Apparently many programmers keep forgetting that the syntax is just a small part of: - language itself - toolchains (compilers, interpreters, AOT, JIT, hybrid) - differences between implementations and specific behaviour - libraries, both standard and the most well known third party ones - IDEs - build systems and deployment options - extra tooling for correctness like static analysers - culture of the people that usually cater for the language Hence why it is easy to dabble and grasp concepts from multiple languages, but very hard to very quite proficient in a few of them.
- avindroth 10y agoI am obsessed with programming paradigms, not languages. Best way to learn a new programming paradigm is by learning a new programming language conducive towards a certain manner of problem-solving. So yes, I am obsessed with programming languages. But not for the reasons you listed.
- sofa42 10y agoThe language is the medium. I like writing code that I can look at and be happy, for no real reason. For traditional art, some prefer oils some prefer water-colors. It's the same for programmers. http://programmers.stackexchange.com/a/16164 http://programmers.stackexchange.com/a/16164
- Jtsummers 10y agoYou agree with the author. >> No, the hard part of programming is understanding in very specific and rigid details how to accomplish a task. The real benefit of something like Project Bloks is that it actually removes the code; it allows children to begin thinking programmatically, without the obstacle of syntax. And this is a tough distinction to make, because people often use “programming” and “coding” synonymously. But the fact of the matter is thinking programmatically needs to be divorced from writing code: the former offers large educational value to a broad range of students, while the latter offers very little.
- pystack 10y agoOnce I figure out the difficult specific and rigid details, I just want the most productive way to communicate these details to the computer. Writing code is the most productive, because it is more exact and I am faster typing than drawing/dragging/clicking. For example, with Vim, I can do a quick "Ack def function_name" to find the definition of a function. For learning purposes, Project Bloks looks great. But when it comes to real work, I'd happily learn the syntax, as it lets me be more productive.
- Jtsummers 10y agoI agree and I disagree at the same time. For professional programmers, many people on this forum, the format that we use (text) is almost certainly the most efficient (yet conceived). It's made better with better tooling, of course, like IDEs that help us refactor, show errors in code as we edit, etc. The author's point is that many more people will be programming in the future (hopefully) than are today. But not as professional programmers. For them, tools like (but not, of course, the same as) Project Bloks will be better. Hell, we already do this today for ourselves. How many people get into the code-behind on GUIs regularly? Do you detail in code "button x will be placed to the left of button y, the center point between them will be ...". No, we often use some combination of markup language (XML-based like XAML, or something else) or visual designer (that may be generating a markup language version behind the scenes). Then we connect the dots, the various objects to various actions or data sources, and off we go. Just like 80% of my (early career) programming was really just gluing together a bunch of data sources for generating reports, much of what businesses need is in the same vein. Relatively (compared to the scale professional programmers like to think of our own work) trivial applications, that exist at a relatively high level (they're not writing a new DB server), connecting pieces together based off logical rules.
- sapphireblue 10y agoSeems like a gross overestimation of time needed for said advances and complexity of such systems. There is already a research-grade approach to learn to generate short programming-challenge-like programs from natural language description: http://arxiv.org/abs/1510.07211 http://arxiv.org/abs/1510.07211 >This paper envisions an end-to-end program generation scenario using recurrent neural networks (RNNs): Users can express their intention in natural language; an RNN then automatically generates corresponding code in a characterby-by-character fashion. We demonstrate its feasibility through a case study and empirical analysis. To fully make such technique useful in practice, we also point out several cross-disciplinary challenges, including modeling user intention, providing datasets, improving model architectures, etc. Although much long-term research shall be addressed in this new field, we believe end-to-end program generation would become a reality in future decades, and we are looking forward to its practice.
- dasil003 10y agoYeah, well I could be wrong, I'm not up to speed on the research, however the claims of general purpose AI have been "just around the corner" for half a century now so I'll take that bet.
- cinquemb 10y agoWhat the author doesn't realize is the enormous amount of processing power, shared culture and empathy that goes into human interaction. Much of this isn't even useful for getting a task done, but mainly to keep the human in the loop as to how things can proceed… wasteful. I personally can't wait for prevalent brain computer interfaces. I don't think there is a need for computers to "understand" humans as far as it can observe the things we are optimizing for and do it better whatever way… For me if I could choose between typing into keyboard on the seconds-hours timescale- latency in vs us timescales via other transmission channels, I'd pick the later every time, and twice on Sundays (which i guess is no surprise since I actually worked on such systems lol).
- ihaveahadron 10y agoThere has been no evidence suggesting that computer circuitry is anything more than a small, complex, form of metal and stuff; the same as buildings. So it is assumed that biologics circuit is the only circuitry that produces consciousness. Those who think differently have been proven to be mentally incopetent( mentally ill).
- bordercases 10y agoCame here to say this. And text is still by far the most flexible modality, not physical blocks. Show me a templating or metaprogramming engine written in LEGO blocks and I'll show you a Grey Goo scenario.