TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Coding is not the new literacy

229 点作者 wglass大约 10 年前

24 条评论

desdiv大约 10 年前
Previous discussion from a month ago: <a href="https://news.ycombinator.com/item?id=8947603" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=8947603</a>
tyrfing大约 10 年前
I think it&#x27;s something a bit more basic - logic. Learning programming teaches logic, because the computer will find every logical shortcoming in what you tried to express.<p>Natural language is the bread and butter of our every day existence, and it is a veritable swiss cheese of logic. Most people won&#x27;t hear your argument and notice the unfounded assumption that destroys the whole thing, but a compiler will. Most people won&#x27;t notice if you leave some of what you say implicit, but your compiler will.<p>Something I&#x27;ve noticed over the years is that people, in general, are just not good at logic. Very few things teach it, the few that explicitly cover it like symbolic and formal logic classes are arcane, scary corners of the educational system. Logic doesn&#x27;t win arguments, it doesn&#x27;t get you laid, it generally doesn&#x27;t help you interact with other people. It does teach you to think, but like deodorant, nobody knows they need it until they already have it.<p>So, start small. Teach logic, teach people to think, teach them the very fundamental underpinnings of programming. Programming is then just another way for people to express what they already know, like learning a foreign language rather than learning language in the first place.<p>I think most people saying &quot;teach them to program!&quot;, at least the ones I&#x27;ve seen calling out the &quot;it teaches you a new way to think&quot; part, actually mean logic in general.
评论 #9131454 未加载
评论 #9131455 未加载
评论 #9131573 未加载
评论 #9131434 未加载
评论 #9131513 未加载
评论 #9131432 未加载
评论 #9132322 未加载
noelwelsh大约 10 年前
The piece argues that &quot;[c]oding, like writing, is a mechanical act&quot;. It&#x27;s certainly not the intent of the learn to code movement to teach typing skills! This statement seems to grossly misrepresent what people mean when they say &quot;learn to code&quot;.<p>To learn to code <i>is</i> to learn to model systems. Programs are built from components -- abstractions -- and good programmers know a wide variety of abstractions and understand how to combine them to achieve the desired effect. A good program is one that accurately models the phenomena of interest, whether that phenomena is something as simple as &quot;display the user&#x27;s profile&quot; or a complex simulation like a game.<p>Now I would agree that many of the current curriculums are terrible, and teach no great insight into modelling. But that is the fault of the curriculum designers -- often people who have neither great experience in teaching or in programming. That doesn&#x27;t mean there isn&#x27;t good work being done, such as the Program by Design team (<a href="http://www.programbydesign.org/" rel="nofollow">http:&#x2F;&#x2F;www.programbydesign.org&#x2F;</a>).<p>In short, I think the blog post builds a straw man argument. I agree it absolutely belts crap out of that straw man, but that is beside the point.
评论 #9131182 未加载
评论 #9131288 未加载
fizixer大约 10 年前
- Coding is not the new literacy.<p>- Neither is modeling.<p>- Neither is externalizing mental models or whatever.<p>It&#x27;s not the human obligation to become more and more creative and resourceful, when less creative activities become less and less valuable, and fail to help earn a living.<p>The author of this article claims that people are missing the point. He&#x27;s right. But he&#x27;s missing the point as well, or at least arriving at a very wrong conclusion.<p>We&#x27;re at a cusp of a very very strange era. This is the era where humans, and the capacity of human intellect, is approaching obsolescence. And the solution is not to train everyone to become like Einstein or, in this case, Knuth, or Steele, or Torvalds, or whatever.<p>&quot;There can only be so many people in the entertainment industry&quot; as Aubrey de Grey puts it.<p>Similarly, there can only be so many people in the &quot;coding industry&quot;.<p>These people are missing a key property of coding: Coding eats itself! Or as Andreessen puts it &quot;Software is eating the world&quot;. Meaning, coding by virtue of it happening, ends up automating aspects of itself, to the point where, a small kernel of information processing is able to carry out vast amounts of informational activity, as opposed to requiring a vast number of coders as those not familiar with coding tend to believe.<p>And this trend of automation will keep on increasing, giving rise to more and more serious technological unemployment, all the way to the logical conclusion of technological singularity. The sooner the &quot;people in charge&quot; realize this bitter truth, the better it would be for everyone.
评论 #9131354 未加载
评论 #9131371 未加载
Animats大约 10 年前
When you get to the end of the article, it turns out that they&#x27;re building the next generation of Visual Basic.<p>That&#x27;s not a fundamentally bad idea. It&#x27;s also interesting that they focus on modeling and simulation. That&#x27;s what Alan Kay thought personal computers were going to be for. But all we got is the VisiCalc&#x2F;Lotus&#x2F;Excel world. That&#x27;s useful, but limited.<p>The problem with visual programming languages has usually been that they don&#x27;t scale. You end up with a huge collection of lines and boxes. (For a good example, find a game implemented with Blender&#x27;s game engine and open up the wiring diagram.) They have a chance of solving that problem, because program interconnection has made some progress since the days of Hypercard and UNIX pipes.<p>There are a lot of line-and-box programming systems in domain-specific areas. LabView, for industrial and research control systems, is one of the most successful. But no one has yet solved the scaling problem. On larger problems, things just get too tangled.
评论 #9131134 未加载
评论 #9131095 未加载
评论 #9131123 未加载
评论 #9131048 未加载
评论 #9131025 未加载
dschiptsov大约 10 年前
Oh, this thread again.)<p>There is almost no relation between knowing a language (vocabulary and grammar) and the ability to write, say, 1984 or Zen and Art of Motorcycle Maintenance. It requires a different set of skills (explained, btw, in the Pirsig&#x27;s book).<p>The &quot;new literacy&quot; is, basically, a &quot;model extraction&quot; - ability to understand the principles form the emerged phenomena on the go. It is about learning new skills on the go - you need to perform some data analysis - well, just pick up the required skills (it is not that hard, by the way).<p>Again, coding is not programming. These two are different skills. Programming is an engineering discipline. Coding is a translation skill. To be a translator one have to know the languages, but this is not nearly enough to be a writer (an inventor). A typist, who is literate enough to be able to make a carbon copy of someone&#x27;s else fine poetry is usually incapable to write her own (neither are the guys who study literature).<p>To put it another way - &quot;to know C&quot; is not enough to write nginx or redis. It is not about languages (well, almost - a language that fits the task best is a requirement), the way a &quot;good idea&quot; could be expressed in any language.
评论 #9131598 未加载
rjbwork大约 10 年前
I agree wholeheartedly.<p>We have some QA folks at work. Our best is a former database programmer from way back in the day, and she has a REALLY good &quot;systems way of thinking&quot; and has a mental model of how things work and are united conceptually. This ability, her &quot;systems way of thinking&quot; sets her far and away above every other QA person I&#x27;ve ever worked with.<p>Being able to come up with a mental model of a system and encode it, either in code or as a document or description is truly valuable in today&#x27;s increasingly complex and nuanced world.
TeMPOraL大约 10 年前
I have to partially disagree with Chris here on two aspects.<p>First of all, programming indeed seems to be a fundamental thing, on the level of reading, writing and arithmetics. It gives you new classes of mental tools that allow you to think thoughts previously unthinkable.<p>People sometimes say it&#x27;s very arrogant of some programmers to think they have something important to say in fields of biology, physics, philosophy, etc. But it&#x27;s not arrogance. There are important insights in CS shining light on every other branch of science that are often noticed by people related to programming and CS fields because no one else is trained to think in this fundamental new way.<p>But I strongly agree with Chris on one thing here - this is <i>not</i> what you get in those &quot;Teach Children to Code&quot; programs. Those will teach you how to become a frontend developer in a year and earn good money, which honestly doesn&#x27;t require you to think <i>at all</i>. It&#x27;s a trained-monkey level thing. They took what was supposed to be an idea about education and turned it into something that&#x27;s about money and career.<p>I think Bret Victor did the best summary of why current &quot;teach kids to code&quot; movement is just total bullshit.<p><a href="http://worrydream.com/MeanwhileAtCodeOrg/" rel="nofollow">http:&#x2F;&#x2F;worrydream.com&#x2F;MeanwhileAtCodeOrg&#x2F;</a><p>Second - modeling. I agree with the sentiment that it&#x27;s modeling that&#x27;s (one of) fundamental thing(s). But it can&#x27;t just be any modeling. Because typical &quot;modeling&quot; of today is that diagram your chief marketer drew on a whiteboard that conveys exactly zero knowledge (or even negative knowledge, if you count in confusion it caused). Typical &quot;modeling&quot; gets you UML diagrams, which we all know are most useful as padding at the bottom of the trash can, so there&#x27;s something to absorb coffee from the cup that you just have thrown away.<p>The modeling that programming is about is careful and very precise expression of concepts. It&#x27;s like that saying goes - &quot;if you want to really understand something, teach it to someone; but if you want to <i>really, really</i> comprehend it, teach a computer to do it&quot;. Computers are unforgiving - either you exactly understand what you&#x27;re doing and can express it precisely, or it doesn&#x27;t work. There&#x27;s no room for error or hand-waving around difficult concepts that people do when explaining things to one another.<p>So modeling may be the new literacy, but this must be <i>careful and precise</i> modeling.
评论 #9131394 未加载
评论 #9131559 未加载
评论 #9131062 未加载
cm2187大约 10 年前
I think that coding is the last chapter of a computer litteracy education.<p>Kids should learn to: - type with a keyboard - understand how a computer works: cpu, ram, disks, etc - understand softwares, OS, security - understand internet, html, ssl certificates - use office&#x2F;office style softwares - basic programming skills in an easy language<p>Computers are here to stay and will be an everyday technology like cars and electricity. Kids have to learn thermodynamics and electricity at school not because they will all become physicists or engineers, but because they need a basic understanding of what they will be exposed to their whole life.
Terr_大约 10 年前
&quot;No... but it might be the new <i></i>numeracy<i></i>.&quot;<p>Especially with all the tools people have to do raw calculations for them (hardware or software calculators, spreadsheet, equation solvers) the coding &quot;benefit for people who won&#x27;t continue it professionally&quot; is similar to math education.<p>In both cases, the takeaway involves establishing certain critical-thinking skills, for creating mental models of a real or desired thing, trying to break that model down into solvable chunks, recognizing chunks you already know how to solve, and building upwards again.
评论 #9131296 未加载
nickstefan12大约 10 年前
&gt; There are a number of tools that already help us do this - from Matlab to Quartz Composer - but Excel is unquestionably the king. Through Excel we can model any system that we can represent as numbers on a grid, which it turns out, is a lot of them. We have modeled everything from entire businesses to markets to family vacations. Millions of people are able to use spreadsheets to model aspects of their lives and it could be argued that, outside of the Internet, it&#x27;s the single most important tool available to us on a computer. It gains this power by providing a simple and intuitive set of tools for shaping just one material: a grid of numbers. If we want to work with more than that, however, we have to code.<p>The idea that the entire average joe population needs more than excel has never sounded quite right to me. Anything closer to &quot;real&quot; programming and I think we&#x27;re asking people to devote too much of their time to something that looks like software developing. I Just honesty think not everyone has the demeanor to enjoy programming. It&#x27;s a very introverted, abstract, high focus, and high patience endevour.
评论 #9131318 未加载
ntoshev大约 10 年前
The author explained a very useful analogy (reading : comprehension = writing : composition = coding : modelling) but didn&#x27;t push it as far as he should. The important thing about coding as modelling is that the results are not just external to the author&#x27;s head, they are <i>formal</i> models that automatically infer or do things. The other way to do that - in one&#x27;s head and via his actions - simply doesn&#x27;t scale beyond a point. Historically the ways people scale such models are human organisations. That&#x27;s why IT is so exciting today: not only it helps an individual think, it helps groups organize at scale that wasn&#x27;t practical before because of the friction inherent in implementing formal models in people&#x27;s heads.
facepalm大约 10 年前
Personally, I wish there was a &quot;everybody should know how to design&quot; movement. Then instead of coding tutorials I don&#x27;t need, there would be tutorials for designing available. There are some articles about typography, but it seems very hard to learn graphics design in general (on your own).<p>I feel much more held back by my lack of design skills. And I think it&#x27;s much more important to being successful in life. It starts with presenting yourself (design your CV, website, letters, mails, ideas, power point presentations).<p>But even if you want to create an internet startup: the backbone technology is pretty much interchangeable. Java&#x2F;Ruby&#x2F;badly strung together bash scripts&#x2F;whatever. The visuals and UI matter much more.
评论 #9131088 未加载
评论 #9131067 未加载
评论 #9132133 未加载
评论 #9131091 未加载
humbertomn大约 10 年前
Not everyone needs to be coding since they are 10 and end end up as a top software engineer in some hot tech startup.<p>But I definitely agree that basic programming and database skills would be beneficial to almost everyone following any professional career.<p>Take my mom as an example: she&#x27;s a very skilled doctor working with kidney transplant in Brazil. There are lots of software programs written to help them, but she&#x27;s always ahead of time and trying to do some magic with the massive data she has access to, playing with graphs and spreadsheets.... and I sometimes (little time) help her to put some little tool up..<p>I can only imagine where her ideas would be if she had basic programming skills...
logicallee大约 10 年前
In front of you is an apparatus that can do a <i>trillion</i> operations for you in the time it takes your microwave to bring a cup of water to a boil.[1]<p>But whereas entering how long you want your microwave to heat its contents is trivial, programming your CPU and GPU to do <i>anything at all</i> makes you about as qualified as someone who holds an undergraduate degree in the field of computing[2]. Like a priest at a time when hardly anyone could read and write, and being lettered itself was a distinction, anyone who can get their computer to do <i>anything at all</i> (i.e. to program it) has a rarified ability.<p>Why is the analogy with literacy a good one: <i>because you must communicate your intentions to the computer in writing.</i> That is how you program. Yes, we have frameworks and models and API&#x27;s and all sorts of helpful protocols and formulae to help you communicate with your PC and give you a mental framework.<p>But at the end of the day, you are asking a machine to do something. And you&#x27;re doing so in writing. The rest is literally formalities.<p>[1] assuming dual-core desktop CPU stepping up to 2.7 GHz and mobile-class GPU or better; iPad 4 or iPhone 5S GPU capable of 76 GLFOPS or better; 700 watt microwave capable of boiling 1 cup of water in 1 minute and 30 seconds.<p>[2] CS undergraduate degree does not guarantee that a candidate can program their PC.
lohengramm大约 10 年前
All this discussion remembers me of Brian Kernighan [1] mentioning that Dennis Ritchie was also a good writer (besides a good programmer). Also, Jamie Zawinski (jwz), somewhere in the book Coders at Work [2], while questioned by the author, points out a feeling of mental connection between programming and writing.<p>I am with those guys in the sense that programming is just like writing anything else. Even in the most trivial cases, you actually think (or could have done it) before putting down a word or two. And you often come back to erase and make it better. So, teaching how to program is also teach how to &quot;build models&quot;.<p>[1] <a href="http://youtu.be/uxtKwJZbYr0" rel="nofollow">http:&#x2F;&#x2F;youtu.be&#x2F;uxtKwJZbYr0</a> [2] <a href="http://www.codersatwork.com/" rel="nofollow">http:&#x2F;&#x2F;www.codersatwork.com&#x2F;</a>
评论 #9131356 未加载
Nursie大约 10 年前
The world runs on software now.<p>Gaining a basic insight into what&#x27;s going on, at a relatively early age, is important if we want people to gain an understanding of the world around them. Not everyone has to become an expert, but a modern education system at least ought to introduce people to it.
dkarapetyan大约 10 年前
Teaching systems thinking is hard. Even higher institutions of education haven&#x27;t figured out how to teach it properly and they are in the business of teaching stuff. Sprinkling computational magic dust over it will not help.
评论 #9131037 未加载
评论 #9131024 未加载
itsbits大约 10 年前
There are lot of guys who don&#x27;t code. And there are lot of guys who code but dont exactly know what are they coding. If you remove all these combinations, Coding literacy is very less.
dtrain3000大约 10 年前
Yes. And you&#x27;re talking about design, in the sense that modeling is a form of design, and also the design of computers and the supporting OS&#x27;s we have today.<p>To put the above into perspective, imagine how you would design the entire computing environment for the common man if you could start over and design it from scratch.<p>Much of the literacy barrier is due to the fact that our systems are hangovers from 25 or 50 years ago.
stefanix大约 10 年前
Good article. I am not sure the difference between modeling and coding&#x2F;programming needs to be made as there is not really any significant coding without modeling.<p>It&#x27;s a bit like saying pilots are airplane takeoff&#x2F;landing operators because enroute flying is the trivial part.
thebouv大约 10 年前
Improving the nation&#x27;s overall STEM skills is more important than just trying to focus on programming. Programming is not the hard part -- planning, deducing, structuring, hypothesizing, analyzing and so on.<p>Programming is just one way to apply those skills.
评论 #9132036 未加载
patsplat大约 10 年前
It&#x27;s the new middle management.
parasubvert大约 10 年前
Interesting. These sorts of headlines bug me, in that they reject computation itself as a novel medium of expression or externalizations of mental models.<p>I think modeling is very important, but Chris seems confused on how to reason about education. The core message, that we want children with higher levels of cognition than mere factual knowledge, is good, but rather obvious. His core conclusion that we don&#x27;t want a generation of people caring about code has nothing to do with this, and is very misguided. This basically rejects computation as an expressive medium outright in favor of the usual writing and mathematics (&quot;writers and accountants&quot;), rather than recognizing computation&#x27;s new role in society and new jobs that leverage it (business analyst with his Excel macros, quantitative analyst or data scientist with his combination of statistics and scripting, software engineers, test engineers, architects).<p>It&#x27;s almost like Chris took Bloom&#x27;s taxonomy (not actually a taxonomy, but useful) <a href="http://en.m.wikipedia.org/wiki/Bloom&#x27;s_taxonomy" rel="nofollow">http:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Bloom&#x27;s_taxonomy</a> of cognition and decided that the foundational element - knowledge - basic reading, writing, coding, math, and facts - is irrelevant. This is not irrelevant, it is the foundation on which we build comprehension, then application, then analysis, synthesis, and evaluation. This he calls specification, exploration, validation, and debugging. Good luck teaching someone how to apply a model, let along synthesize one, when they can&#x27;t do the basics of expression. This gets into the philosophy of education, and perhaps this article is just a reflection of the current trend away from rote learning, but this is an active debate, not settled science. This trend may lead to some bizarre outcomes: I see 15 year olds that can&#x27;t read a wall clock or understand basic techniques around fractions, though they can describe and do basic reasoning about them.<p>Secondly, I believe coding itself is a fundamentally new area of knowledge, and every debate about &quot;coding is the new literacy&quot; really comes down to whether you believe this or reject it. Rather than convince you, all I can do is quote from the preface of SICP <a href="http://mitpress.mit.edu/sicp/front/node3.html" rel="nofollow">http:&#x2F;&#x2F;mitpress.mit.edu&#x2F;sicp&#x2F;front&#x2F;node3.html</a>, one of the great examples of computing pedagogy we have:<p>&#x27;Underlying our approach to this subject is our conviction that &quot;computer science&quot; is not a science and that its significance has little to do with computers. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology ­ the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Mathematics provides a framework for dealing precisely with notions of &quot;what is.&quot; Computation provides a framework for dealing precisely with notions of &quot;how to.&quot;&#x27;<p>Yes, modeling is important - it&#x27;s a a higher level of cognitive reasoning. We still should teach kids to code.