Learning To Program Is Getting Harder (slashdot.org)
theodp writes: While Google suggests that parents and educators are to blame for why kids can't code, Allen Downey, Professor at Olin College argues that learning to program is getting harder . Downey writes: The fundamental problem is that the barrier between using a computer and programming a computer is getting higher. When I got a Commodore 64 (in 1982, I think) this barrier was non-existent. When you turned on the computer, it loaded and ran a software development environment (SDE). In order to do anything, you had to type at least one line of code, even if all it did was another program (like Archon). Since then, three changes have made it incrementally harder for users to become programmers:
1. Computer retailers stopped installing development environments by default. As a result, anyone learning to program has to start by installing an SDE -- and that's a bigger barrier than you might expect. Many users have never installed anything, don't know how to, or might not be allowed to. Installing software is easier now than it used to be, but it is still error prone and can be frustrating. If someone just wants to learn to program, they shouldn't have to learn system administration first.
2. User interfaces shifted from command-line interfaces (CLIs) to graphical user interfaces (GUIs). GUIs are generally easier to use, but they hide information from users about what's really happening. When users really don't need to know, hiding information can be a good thing. The problem is that GUIs hide a lot of information programmers need to know. So when a user decides to become a programmer, they are suddenly confronted with all the information that's been hidden from them. If someone just wants to learn to program, they shouldn't have to learn operating system concepts first.
3. Cloud computing has taken information hiding to a whole new level. People using web applications often have only a vague idea of where their data is stored and what applications they can use to access it. Many users, especially on mobile devices, don't distinguish between operating systems, applications, web browsers, and web applications. When they upload and download data, they are often confused about where is it coming from and where it is going. When they install something, they are often confused about what is being installed where. For someone who grew up with a Commodore 64, learning to program was hard enough. For someone growing up with a cloud-connected mobile device, it is much harder. theodp continues: So, with the Feds budgeting $200 million a year for K-12 CS at the behest of U.S. tech leaders, can't the tech giants at least put a BASIC on every phone/tablet/laptop for kids?
1. Computer retailers stopped installing development environments by default. As a result, anyone learning to program has to start by installing an SDE -- and that's a bigger barrier than you might expect. Many users have never installed anything, don't know how to, or might not be allowed to. Installing software is easier now than it used to be, but it is still error prone and can be frustrating. If someone just wants to learn to program, they shouldn't have to learn system administration first.
2. User interfaces shifted from command-line interfaces (CLIs) to graphical user interfaces (GUIs). GUIs are generally easier to use, but they hide information from users about what's really happening. When users really don't need to know, hiding information can be a good thing. The problem is that GUIs hide a lot of information programmers need to know. So when a user decides to become a programmer, they are suddenly confronted with all the information that's been hidden from them. If someone just wants to learn to program, they shouldn't have to learn operating system concepts first.
3. Cloud computing has taken information hiding to a whole new level. People using web applications often have only a vague idea of where their data is stored and what applications they can use to access it. Many users, especially on mobile devices, don't distinguish between operating systems, applications, web browsers, and web applications. When they upload and download data, they are often confused about where is it coming from and where it is going. When they install something, they are often confused about what is being installed where. For someone who grew up with a Commodore 64, learning to program was hard enough. For someone growing up with a cloud-connected mobile device, it is much harder. theodp continues: So, with the Feds budgeting $200 million a year for K-12 CS at the behest of U.S. tech leaders, can't the tech giants at least put a BASIC on every phone/tablet/laptop for kids?
It's getting dumber.
Abstract concept after illogical process.
Teach people how these machines really work and kids can do it.
VIM and command line is where people should start with learning to program. SDE is a crutch.
All computers these days come with a web browser. Modern web browsers include rich debugging facilities. It's never been simpler to start writing programs. You can start with simple text output and progress all of the way to 3D OpenGL graphics or 2D vector and composited raster graphics with the canvas.
I am TheRaven on Soylent News
There's loads of easy ways in. Shit, scripting excel is a fine place to start.
My fave is processing.org - those cats have made something special.
No more tricky than programming a sinclair or a commodore. But the potential is considerably more potent.
The big thing is that all the documentation you could ever want is there at your fingertips if you're willing to look for it. The resources available to a self motivated person that wants to program are beyond fantastic.
If someone just wants to learn to program, they shouldn't have to learn system administration first.
I disagree with that. Being able navigate your hard drive and install programs is more important than being able to code, and should come first.
And yes, you are right. But you are not seeing it for what it is: part of the general complexity growth in all things that must eventually lead to some sort of collapse. Programming is harder, but EVERYTHING is harder. And it will become harder and harder until there is a "Black Swan" of some kind collapsing everything.
E Proelio Veritas.
Easy solution: Force every child to attend boarding school where they are required to use a desktop with Linux, learn Vim, and them program in Python. Problem solved.
Jesting aside, Python is a huge advantage for learning how to program that was not available when I was growing up. Basic was the de-facto programming language for children, and every computer had a different version of it. Things ran so slowly, even loading programs and making changes to them took far longer than they would today. The initial barrier might be higher, but modern tools and computers really have improved things from the Commodore days.
The problems isn't so much that is harder to learn to program: it's harder to see the programming behind things, and therefore to get interested in it or figure out how to take things apart and start.
That's what I was thinking too - it's not that programming as a whole has become harder, just a lot more diverse and specialized. Yes learning to write some scalable Erlang/Mongo based server application is harder than what we had to do growing up. But they don't have to start there, and if they get really into programming they can go there if they want which is better than what we had when I was a kid (we used to have to compile with a *preprocessor* step you young whippersnappers).
Even if you didn't like Javascript, there are things like Scratch and Apple's Playgrounds. Yers they hide some detail but it is not at all detail you need to know anytime soon before you get to really advanced stuff.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Ironically, the hardest thing I can think of for a _total_ newbie is drilling down through all the layers of abstraction to show what actually happens. I'm in IT and infrastructure-as-code is the same way. We have a nice easy way to program things, but it's so divorced from something that actually happens. Everything new lately has been a layer on top of another layer with the hope that it will make things easier.
An example from my world is Azure Resource Manager. At the core, it's a RESTful API that takes in JSON configuration files and tells Microsoft's cloud back-end what needs to be configured. ARM is almost a language in its own right, and it's nearly impossible to write configuration files without some guidance. So, someone at Microsoft wrote a Node.js wrapper on top of ARM that I found out about the other day (Azure Building Blocks.) So, you have an ARM framework, written in a JavaScript framework, sending commands via insert-your-language's SDK to a RESTful interface that hides unfathomable levels of complexity behind it!
The push to wrapperize everything is going to get to a point where some levels of complexity are permanently locked away. People who are totally new and starting out at Node.js or a similar framework will be able to make things work, but they won't know _how_ they work.
I'll make one "get off my lawn" statement -- we've overloaded HTTPS to perform way more duties than it was ever designed to do, and chosen to write applications in browsers running JavaScript, which was also never meant to do anything nearly as complex as it does. This is why you have the endless parade of new frameworks, wrappers, etc.
The fact is that CLI interfaces are more effective to use, but they are effective specifically because they actively hide information from the users. In a GUI program it is possible to navigate the interface itself in order to find features. This is normally not possible in a CLI interface. In particularily strict CLI interfaces a new user might not even know how to discover the documentation from within the program itself. External help might be necessary.
My first computer was a Radio Shack Color Computer. It came with two great tutorial manuals for coding in Basic.
There is a lack of material written at that level. Almost all I write in, anymore, is in Vbasic and Vensim (Systems Dynamics, I realize it is a bit obscure). Vensim has a great walk through; However, most of the manuals are either too complicated for beginners; or they don't take the user to the point where thy can do something productive.
As a teacher, I would love to find something, a bit more applicable than hour of code, that will keep my students engaged and leave them with applicable knowledge.
Programming didn't get harder, using a computer just got massively easier. How hard is it to go to a site like http://www.compileonline.com/i..., choose a language, and start learning? If kids can find pornhub they should be able to find this if they are so inclined. People need to face the fact, not everyone will enjoy programming, and not everyone will be good at it.
Nowadays you can get pretty much any niche program you need. In last millennium access to programs was much harder, so sometimes you had to figure things out yourself. That means that people now have less need to dive into the technical details about eg. printer drivers and configuring them. Now you just download the latest driver from the manufacturer, or perhaps it worked out-of-the-box because the driver was included in the OS.
I'm not saying it was better in the good old days. But you did have the need to be a bit technical when computers didn't do everything you wanted. And that gave some people the push to going deeper and making programs.
Car analogy: it is harder today to become a mechanic, because the engine is typically just a big inaccessible block. No more easy access to spark plugs, carburetor, or adjusting the choke. Is that sad? Maybe.
It's more complex and a new paradigm in teaching the important parts first is required. If anyone doesn't know the difference between apt-get and unpack whatever.gz, that's not "difficulty" getting in the way really.
Everyone seems hellbent to push people into programming, whether they want to or not. Of course those are going to have a harder time compared to people who do it because they like it.
In ye olden days people who had a real interest joined the field. These days every Tom, Dick and Mary Sue gets put in front of a computer and told they're now software developers, complete with a participation trophy degree.
Some of us grew up with those command line machines and we still know command line to this day. Plus programming - you had to write your own software back then and it meant understanding how to break problems down into codeable pieces.
I had an Apple ][+ and I ended up in the computer industry. I don't really agree with this article. I had many friends at the time who know how to CATALOG and BRUN but I'm the only one who went on to be a developer. The reason why I got interested in developing is because my dad would buy Byte magazine and we would enter machine code programs together. This got me interested in 6502 and later C (when I got an IBM XT). It was only one or two years after the Apple ][+ came out that disks started to get formatted with the 'HELLO' menu-based entry screen anyway, I guess later when IBM XTs came out it was command line again but again that period was relatively short before windows took over.
I guess the point here is that making technology easier to use is nothing new. It has always been just the people who want to know more who look under the hood and learn.
Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
I get the feeling that programming may not yet be within these people's grasp
"When I first heard Daydream Nation it quite frankly scared the living shit out of me." -- Matthew Stearns
Why the sudden push for kids and newborns to know how to code? .... Like this will miraculously improve their life later on...
I think that they're completely wrong and that learning to program is so much easier today than at any point in history.
First of all, there are a wealth of online resources that anyone can access with a web browser than there are loads of them that are freely available. There are loads of websites, videos, etc. dedicated to learning programming languages. Some like Python or Java have such an abundance that it's almost difficult to be able to determine which to use. On top of that, there are plenty of websites like Stack Overflow that are dedicated to answering people's questions, so you can even get by with learning on your own outside of a classroom and still be able to get some feedback and mentoring from more experienced programmers.
Development environments are easy as hell to install. You can a one-click installer from Oracle that will install and configure the JDK and an IDE for you. Most languages don't even need an IDE at all and just require running a script you can bang together in any text editor. It can't get much easier than that. Similarly, most kids figure out how to use a GUI on their own through trial and error. Their parents certainly didn't teach them how to become proficient computer users. Cloud computing has made things like Scratch possible where children can learn programming concepts and share their programs with friends and others. I fail to see the merit in any of the points that they make.
If programming seems hard, it's because it has become so widespread that we're trying to teach it to everyone instead of as in previous generations where people mostly seemed to seek it out and dedicate their own time and efforts towards it. It looks like the past was more successful because we don't see the people who tried and failed in the past. The old generation that seems to understand it more intuitively or didn't struggle as hard are the survivors of far more niche group.
I finally started playing around with Raspbian and it's a great OS that addresses all of the above.
It has multiple IDE's built in like Node-RED, Scratch, Python (Thonny). A command line terminal is built in as well as apt-get.
See subject: KNOW YOUR HARLEY end-to-end (including system admin & OS commandset + layout). It's invaluable @ times for debugging/troubleshooting AS A CODER.
* GUI's tougher (more to track & cleanup vs. commandline/tty/DOS window code by FAR) - in fact, TRY flowchart an eventdriven gui.
Toughest 'leap' for me was going from Asm & C (non OOP) to OOP (Object Oriented) 'projects'.
Once I got over that? Rest was history (see ps, even now while I am retired & into a diff. business, I still put out programs when they're helpful).
APK
P.S.=> See subject & in musical accompaniment (per the lyric "we're still KICKING ASS" APK Hosts File Engine 10++ SR-1 32/64-bit https://www.google.com/search?hl=en&source=hp&biw=&bih=&q=%22APK+Hosts+File+Engine%22+and+%22start64%22&btnG=Google+Search&gbv=1/ here) is this tune by MOTLEY CRUE KiCkStArT My HeArT ("I got the cops coming after me - Custom built bike doin' 103") https://www.youtube.com/watch?v=NrOemQaEJGU/
When there was no internet, and you needed a little tool to do something, there was a incentive to write it (having the tool to use it). Such things came with minimal complexity, a very low entry barrier, and a reason.
Today everything (mostly) is three or four touches or swipes away. And piece of code that does anything meaningful is (compared to the old times) highly complex. Complexity, and no reason.
On the other hand, documentation is often easier to access today.
Coding is difficult for most people not because of the layer of obfuscation in modern computers and devices. It's difficult because it requires a certain mindset to understand - logic, spatial reasoning, mathematics, are all required to code well. Most people don't have it - which is why most people don't code, or become engineers or scientists. There's nothing wrong with teaching kids to code a computer in BASIC or Python or whatever - but it won't stick with most of them because they likely will never have to do it in their professional lives.
Even people with all the requisite skills still struggle to code well - like most of Google's or Microsoft's employees.
For someone who grew up with a Commodore 64, learning to program was hard enough. For someone growing up with a cloud-connected mobile device, it is much harder.. Wow. Who knew?
Programming jobs are the easiest jobs in the world to ship offshore; most software can be written literally anywhere in the world. STEM education is still important, but you're better off training for a career like medicine or pharmacy where you literally have to be in the same room with your customer -- those jobs can't be offshored! Also, automation is going to take a lot of jobs away... shouldn't automation eliminate programming jobs too?
I've abandoned my search for truth; now I'm just looking for some useful delusions.
Step one, see title.
#DeleteFacebook
...which hides the framework, and lets the user use simple calls or commands to do advanced things like outputting text or graphics to almost any TFT/OLED/LCD screen you can imagine (small form factors usually, we're not talking HDMI screens here).
And it's almost like having a Commodore-64 on a chip, lots of I/O ports, way more forgiving on the inputs/outputs than the 6526 ever was (touch this one and you'd literally say goodbye to an expensive I/O chip), the interface is ugly...but easy to use, it's free aka gratis, it's open, it's got a huge community with tons of drivers for basically any hardware you want drive/throw at it/use with it. I put a complete weather station together in 2 hours, didn't even have to find software for that, as drivers and libraries are available for almost every sensor/screen out there. It's almost like combining a commodore 64 with lego.
I won't count Raspberry PI into this "easy" category, because albeit the raspberry is cheap, it's far from easy for kids to get started with, and if they do - the learning curve is hideous as it's almost as complex (hardware wise/programming) as a PC. With the Arduino range (especially the Nano V3 one's that can be had on ebay for a couple of dollars) are so ridiculously easy to use that your kid (or you) will be up and coding in minutes with actual real life results instead of having to learn endless libraries and code just to actually make an executable that will actually do something useful or meaningful.
And if we look at how many gazillion Arduinos are sold on ebay by random (often totally clueless sellers that have no clue what an arduino actually is), it's literally selling like it's hot - all the time. That's gotta count for something.
What this world is coming to - is for you and me to decide.
Learning to code has never been EASIER. Every coding environment ever can and is trivially emultated on even the cheapest PC. The software is FREE. The online support mind-blowing.
What is true is that simple coding seems POINTLESS (tough shit if you hate modern emphasis methods) because the gulf between your 'first' program and what 'real' programs seem to achieve looks 'infinite' to a beginner, and puts so many off.
My first coding was a very early 'programmable' calculator that could take a handful of lines of 'code' to automate a few simple functions. Then Sinclair's FIRST computer, the MK14, that you both built and programmed. And then a time-shared mainframe link at school via a literal teletype and old school CRT.
Coding to print out the classic 'mexican hat' on the screen and paper seemed like something. Simple basic games (like 'star trek') seemed like something, and with my first decent home computer (Compukit 101- a brit rip-off of some American design) I coded my own version from scratch.
Today coding, and very powerful coding via libraries, is light-years more advanced (mistake is purposeful). But the coder often feels weak and powerless. Their code is but simple-mided 'glue' calling in the 'marines'- but it is the 'marines' that get the job done, not the glue. This disconnect is a real problem for starters.
But what we still witness is natural selection in progress. Those that should code will. Those that fall by the way-side are probably no loss. It is said that the home computer revolution in the UK had millions code- but most coded nothing more than the 2 or three lines needed to constantly print their own name on the screen. The more ambitious coded user input to variables for a simple bit of maths- still nothing.
How many went on to comprehend algorithms and data structures? Very few. I think the whining today is from people who THINK they should code, but when they try it find nothing but a mental disconnect (especially the females- inserted to wind up you SJW idiots). Formal 'education' can force people unsuited to code to self-fool, but the truth will out.
But like I said at the top- there is NO EXCUSE. We live in a time of wonder. My calculator did dozens of 'lines' a second, but had memory for maybe 20. My MK14 did tens of thousands of machine instructions per second. My Compukit 101 (which I also built- and hardware hacked to add 'hi-def' block graphics) did a million a sec I think. You ARM based disposable "worthless" gizmos run at 100s of millions at a minimum, and have amounts of memory I never guessed back then could be owned by one person.
But learning is now "harder" is it?- How slashdot loves FAKE NEWS!
Cars have become easier to use (GPS, stick shift is a rarity, who changes their own oil anymore). The technical innovations underlying today's vehicles certainly makes it harder for users to become mechanics. A person may be introduced to the intricacies of car repair/maintenance by a friend or relative, or by taking a training course. I don't believe making cars more mechanically accessible is going to significantly increase the population of mechanics. By and large those who become mechanics have both a knack and passion for it.
... microsoft has made an idiocracy through getting rid of the command line based section of the OS as it's own thing largely. Old operating systems like MS-dos and other programs like games, etc should be required part of any computer course so they actually learn to trouble shoot computers and actually have a course in computer history. Some enterprising company should really make a whole virtual machine that emulates what it is like to run early computer software and configure a virtual computer inside a vm to teach these kids.
Those of us who grew up to program had to read the dos manual and put in the hours. It wasn't really that hard because it forced you to learn how your computer actually worked to some extent. They didn't need total electrical engineering type knowledge but at least you had a clue what your machine actually did. The fact that "programmers" are becoming idiots may just be a reflection that dumber people are going into programming. Those of us with a genuine interest in computers put in the hours because it was a hobby first long before it became a job.
except that it runs LUA and is just to low a resolution has horrible aspect ratio
i've been mulling the idea of building a browser based ide/environment for a 68000 based emulated computer, then build a basic on top of it, but at least have the dev bits into nice high res displays, not like trying to edit code on an emulated atari st screen!
They are on to something, but have it *completely* backwards. Learning to code has never been easier. At the same time, using a computer has become much much easier as well. Part of the barrier to entry of older computers was the need to know something about the computer. That barrier to entry has been removed, and people aren't learning about the machines they're using.
I don't know what the answer is. It doesn't seem correct to intentionally make computers harder to use. Perhaps moving away from the mindset that a computer is an appliance *looks at Apple significantly* would be a decent place to start.
I think it's easier. I'd kill for Google and YouTube to get answers and tutorials when I learned BASIC. All I had was my C64, the programming manual and curiosity. Complete games were just a wall of text, even those that were actually readable and not just lots of PEEKs and POKEs to memory addresses. The difference is that the software I looked up to was also made by one or few developers with rather crude graphics and sound. Particularly something like Lazy Jones with lots of mini-games, I could make something like that. Today I play Overwatch and it's like this would take me 1000 man years and a bunch of art and music talent I don't have. You can't have that kind of motivation today. And I think games was the only thing I cared about when I was like ten. I don't see that I'd be making any other kind of apps with interest.
Live today, because you never know what tomorrow brings
Now it is OK if you are stupid. Stupid users are never going to be programers.
Programming on a computer is easy enough to set up. But how do you program on a phone or tablet? Last I heard Apple forbids programming on their phones. I don't know of any way to develop an app on an Android phone either. You can't even script at the command line because there isn't one.
(T>t && O(n)--) == sqrt(666)
Major search engines are getting worse. With smart phones skewing the search algorithms a simple search for "why is error x happening" or " how to sort data like x in the most efficient way" returns stupid click bait articles "first is your computer turned on dur dur". Unless you are a professional programmer you don't typically have peer review. When learning programming the Internet was my peer review. I used to be able to find advice from the worlds best software engineers in obscure areas. Now all you can find is trash websites the search engines algorithm served up because someone was using smartphone search as a spell checker.
It's way easyer. The incentives may be lower, that's for sure. Unreal tournament is way more fun than going through the first bits of coding, but getting into programming is easyer.
You need an editor and a browser and perhaps an active internet connection and your good to go. All this is bog standard these days, you can even do it on a phone.
We suffer more in our imagination than in reality. - Seneca
I am a happy nerd.
I love my nerd world, my nerd friends and colleagues. But there are simple stuff that doesn't go trough our thick skulls. It never came to your minds people do not learn to program simply because they do not specially desire to do so ? They do not consider it an important skill, they have no curiosity about "how it works in the inside" and often consider an electronic device that needs any intellectual effort a poorly designed device.
I loved my commodore 64. I learned to program a little bit on it. But it is because i was curious and educated by parents that encouraged that trait. If we lived in a world where computers were ubiquitous but similar to commodore 64's, they would not learn to program because you have to to make a C64 work. They would buy consoles.
I have similar conversations with some of my nerd brethren about maths. I mean, the few ones that more or less realize that most people know very little maths. They speak about the difficulty of some abstract concepts, the quality of the teachers, the small number of math hours at school. But they do not get that most people do not desire to become whiz kids. Eventually they find them annoying, or pedant, or arrogant. They are not curious and are not raised to become that way.
They may be embarrassed by the social consequences of their ignorance. But it is a pecking order question for them, nothing more.
Same kind of reasoning when talking about why people are not athletic while they have an able body like everyone else, etc...
When people genuinely value learning and knowledge and achievement, then children learn. They don't complain about it being too hard, they talk about how it was hard but they put in the effort and learned it anyway. Or they talk about how they put in the effort but they still weren't able to master the material, but they were able to accomplish something else instead. They encourage each other.
If you want learning, then value it socially. When you have conversations, are they about how you learned a new skill? Or about how someone else learned a new skill and how good it is that they did? Probably not. You talk about what you value. Don’t expect others to value what you don’t value yourself.
Hypertalk made the whole process of creating a usable program of significant complexity quite easy--easy enough for an early grade school student. Apple really, really didn't know what they had.
sorry advance for spelling errors.
Computers were cool and new interesting 20+ years ago. If you look at the zeitgeist of the end of the 20th centery by looking at adversting. The focus on this future of technology and computers. Examples:
https://www.youtube.com/watch?v=4PJcABbtvtA
https://www.youtube.com/watch?v=IRWl94jeyDw
These things mold the youth to what to be interested in art that is critical to develope one's skills into.
Now they are not more interesting than a car to most people. They are everywhere and not interesting to the masses, just another tool like a hammer. The future from our past is here, and most people are indifferent. If you can get people learn more about how to fix and mantaince their car, the same thing might work for computers.
If you look at pop culture now, its a lot of reality TV and other trash that doesn't look forward to the future. Most of it has a post-modern bent instead of a futuristic forward looking modarnism. Post-modernism doesn't promote someone to do hard things, because it has it emphasize all your work is meanless. The kinda of hard work it would take to learn to program to make something as impressive as th 3d graphics in a 80's TV ad given the technology. Or the idea a computer can be made aware.
Maths, more maths and maths.
Basic, ada, pascal, logo.
Study, learn and pass tests. More learning, more computer time.
People who could learn, wanted to learn got computers. People who could afford computers to learn. That was what the cost of a computer did in the past.
Programming is not getting harder. People with no skills and no ability to study are expected to use computers, robot GUI kits now.
Kits, computers, new GUI software is been provided along with support. The results show nothing better is happening with computer education after all the decades of tax payer and private sector support.
Find out who can study, pass a test and do math. Support the people who can do math and then the results will reflect the past generations of great results.
Domestic spying is now "Benign Information Gathering"
I agree that the C64 was certainly a great place to start, but in those days computers were fairly useless and the games pretty crappy by our standards. Go a bit further back and all was more so.
Therefore you could make a little program that might actually do something cool. Plus computers were a novelty so making them do anything was cool.
If you started to get a bit serious you could reasonably make a game or a program that others might use. Not a blockbuster, but something interesting. Get 5 friends and spend a few months and you might actually make something worthwhile that made money.
Fast forward to today and there is no novelty, everyone has a computer in their pocket, and short of finding some bizarrely unfilled niche you aren't making anything useful alone and in short order; and if you do, you are probably just using some crass tool that simplistically pounds out an app or other "programming" like wordpress.
And as far as you and 5 friends making something in under a year, good luck with that. There are exceptions, but not that many.
This all boils down to reward for effort. With my Vic-20 I could put in little effort before it started to reward me. Thus I was hooked. Give the same zillion years later me visual studio 2017 and I don't know where I would begin. Maybe it would be rewarding enough. Maybe not. Printing my name over and over again would impress my friends decades ago. I don't know what I would have to create these days to impress them.
Have you actually identified the set of learning goals that are needed?
No concrete goals to aim for generally makes it impossible to reach them.
That, and it seems that this Prof is forgetting that Computer Science isnâ(TM)t programming.
When you powered on the Commodore 64 (or computers of that age).. sure you were in a 'development environment".. a terse prompt and a blinking cursor.. period. There was no help, there was no internet, no youtube, there was no browser. You were on your own with no easy way to get help.
It's getting EASIER. It's so dumbed down now it's ridiculous. Kids get hired now where I work and they are LOST. I had one flip is shit because "omg, there isn't a library for that??? I actually have to write code?" I said, "welcome to software engineering."
Any idiot can code. Many do.
Programming is an entirely different matter and requires a completely different skillset ...
20 years ago. Buy a book:
https://www.amazon.com/Structu...
Learn to program.
Today. Believe it or not it is still possible to: Buy a book and learn to program!
https://www.amazon.com/Structu...
Contrary to popular opinion, people did learn things in the days before web-enabled-group-assignments. Now we have teachers ready give you the answers to any hard questions so that your sense remains at permanently elevated levels.
LOL!!! Look, I myself learned to write code in BASIC on a CP/M system, but really folks... it ainâ(TM)t 1984... Python or something OO at least, please... teach folks to write an Android app or something... BASIC lol...
C Compiler
1982: $500
2018: Free
The only difference is that today you can do with programming immeasurably more than you could in the past when pac-man was state of the art. Building the same level of software has to be simpler today using modern tools.
I don't think the reasons listed in the summary are why programming is harder these days. The environment and pre-bundled tools aren't really a barrier, the lack of good documentation is.
It used to be it was pretty easy to find a book of DOS and/or BASIC commands which would list all the available instructions for making scripts and small programs. I could check out a book at the library and teach myself BASIC, one function at a time with the detailed instructions provided.
Programs, at least GUI programs, are more complex now, but the documentation is often worse. Even Qt, which has relatively good documentation, is woefully weak on useful examples and explaining the differences between methods.
Students now need to either buy an expensive book or drudge through hundreds of bad or out of date examples to find what they need in giant libraries of functions. It gets worse if you need to deal with any kind of API. Good luck funding sane documentation for that.
I don't think SDE availability is a big issue, Linux usually has gcc installed by default, XCode is fairly easy to install on Macs, and I'm sure Windows has lots of easily installed stuff.
I think the issue is GUIs, but not for the reason he thinks. To the current kid a program isn't a real program without a GUI, and GUIs tend to be a lot tougher and more annoying to write. It just makes the gap between what a new programmer can accomplish and "real programs" that much bigger.
I suspect the best approach for a new programmer is scripting. Just yesterday a friend expressed a desire for some bizarre set of image transformations and within an hour I learned enough ImageMagick to fire off a python script. This is partly a consequence of being a command line user, but you can automate a lot of tasks with scripts and are you are honing your programming skills at the same time. OpenSCAD is a good way to pseudo-program if you have a 3d printer. I suspect there are a bunch of games with scripting interfaces as well.
Though for the windows user for whom the Command Line is still a foreign land I think phone apps are the easiest gateway. There's a lot of tutorials where you can get a "real program" with a graphical interface with very little effort. The main downside is that kind of coding tends to be a lot of interfaces and API calls which aren't as much fun.
I stole this Sig
1) Git is horrible for introductory usability. Just today I saw a tweet from a veteran programmer who complained about not remembering how to roll back a commit and needing to Google it.
2) Overly complex object libraries. No, you don't have to inherit 12 different levels. And "Hello World" should not be a hundred-line program.
I was a programmer and DBA for many years. I learned on command line interfaces, so I have a good understanding about directories and files. Even with that knowledge, sometimes I find it hard to find files in a GUI system. I currently use a Mac. If I use the Terminal program, I sometimes have a hard time locating the files. I can do it, but it is often a pain. I also have the same problem when using windows systems.
Likewise for my Android phone. Moving a file from my Mac to my phone or vice versa is a real pain. Then opening the app, and finding the file can be a frustrating experience. If I save an attachment from email to my phone, again finding it can be pain. There is no excuse for it being so hard.
Linux, OS X and Windows all come with development environments by default.
Unless this dork means some kind of fucktarded GUI shit, which has never been a thing that has been installed by default.
When cars and aircraft were first invented, someone with modest mechanical talent could modify or even build one in their garage. Now they are so sophisticated that its very difficult for a non-expert to make any useful improvements.
Going back further, when people used dug-out canoes and rafts, a little training would let someone build a boat. Later it became a job for experts.
This may just be what is expected for a mature engineering field.
BTW - people *can* do home-made modified cars, planes and boats, but its generally at a hobby level and the skills are not that closely related to what is needed for commercial systems. This is similar to learning program rasberry pi, or similar.
Any language like Python or Javascript comes with tons of libraries. I also grew up in the C64 and did some easy BASIC programming. Opening and reading a text file? no clue. Doing that with Python? open( "blah.txt","w").
There's also this thing called the internet now. It's been around for the public for almost 25 years. If you want to learn how to program, just google it.
Try learning BASIC with a reference book and no internet and see what happens when you want to do something different than reading in some input and printing "Hello World".
I'm a programmer (started on TRS-80), and I'm helping my 17 years old nephew learn to program. We've done a little of everything over the last few years, but recently we watched Ben Eater's 8 bit computer series on youtube, where he literally builds a computer from logic gates and simple chips on breadboards. He does an incredible job of explaining how computers work, and I think anyone learning to program would benefit from his series.
When you start with a false premise, the rest of what you say is suspect.
I was a programmer when the Commodore 64 came out, and I'm still a programmer today. So I think I'm reasonably qualified to comment on this topic.
There is in fact an increasing gulf between computer users and computer programmers, but TFA has it completely backwards. It's not getting harder to code. There are two (and only two) factors at work here:
1. Computers have gotten substantially easier to use by non-programmers. My parents wouldn't have been able to do anything with my Commodore 64. But they can use a modern computer for normal user-level tasks just fine.
2. The expectations of what software should do has increased substantially, which means programmers need to be able to create much more complex code to meet minimum baseline expectations. At the same time, though, modern software development has rapidly evolved over the years and now offers better tools, better frameworks, better access to information and documentation, better back-end services (e.g. "the cloud"), better debuggers, and a whole host of other improvements that allow one programmer to do more than they were ever able to do before.
I will concede one point here: programmers today need to be familiar with a lot more different things (e.g. frameworks) than the days when they had literally no frameworks at all. That said, programmers need much less depth in their understanding of those various pieces, since documentation is literally a mouse-click away in nearly any decent IDE.
Also, it's called "IDE". This "SDE" acronym is just bullshit and demonstrates that the author of TFA is a bit light on actual industry experience.
People who say "sheeple" have about as much sophistication as an AOL user, and in fact are probably actually AOL users.
The problem isn't that learning to program is getting harder, it's actually slightly easier. But the approach to teaching it is wrong. If you want to teach the mass of students (a bad idea, by the way) then you need to introduce them to programming with something like Scratch, or Logo and turtles. The assembler level is totally the wrong place for anyone these days. An IBM 7094 or Z80 or I6502 was relatively simple. Even the M68000 wasn't too bad. But modern processors are just to complex to be a reasonable starting point.
Now for a motivated subset of students Python or C (or Ruby or, perhaps, Go if there's ever a decent introduction) is reasonable. C will give them a better understanding of how computers work, but Python will let them get interesting results faster. It's a trade-off. If you could get anyone to use it MIXX would be a good place to start, but that's going to require a lot of external incentive. If you want to really understand the basis of programming, build a FORTH or Lisp interpreter in C. But that still won't introduce you properly to concurrency, unicode handling, graphics, or even objects. Programming is a lot wider now than it used to be, and it takes a lot longer to master...most people never do master all of it. I'm really weak on graphics programming. (Well, I started on Fortran IV, and even character strings were strange. To me they were fixed length byte arrays, but just try to map than onto a Python3 string.)
So there's several issues. One thing is picking the right entry point. This has to be varied with the student. Another is limiting your expectations. Very few kids, perhaps none, are going to master all of programming. And the ones who do will spend a decade doing it. But they can learn to handle particular areas fairly quickly.
One nice book for that that I ran across recently was about constructing mazes in Ruby. It used libraries to make the graphics simple, and focused on the maze algorithms. That would be suitable after they already had some basic knowledge.
I think we've pushed this "anyone can grow up to be president" thing too far.
I only agree that learning to program is harder in our days because languages are more complex and tools as well. E.g. persistance annotations etc.
One the other hand: ... who cares?
1) is wrong. Worst case you have to download an IDE, there is nothngi to install. Linux and Macs come with IDEs/programming languages pre installed, e.g. Python.
2) is wrong. Modern IDEs give you information, what exactly would they hide? Folding away doc comments?
3) what has that to do with programming? And we all know where the information os going to: FB and NSA. Where it comes from is irrelevant, most of it is either fake or tits
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Install an SDE? Whaaaat?
All OSes have a terminal (Windows has Powershell or some equivalent, right?). Linux/MacOS have bash, python, and perl as part of the core OS installation. From there, it's fairly trivial to yum, apt, brew, etc. to other programming languages and MSFT has a straightforward installation process for Visual Studio.
Then, once a young student has an itch to scratch. No matter what language they choose, there are copious amounts of examples and instruction on the Web. When I was learning, the best documentation was found in O'Reilly books. They were great, but it required a trip to the bookstore and cash to acquire them. Today, all a curious learner needs is their internet connection. Not to mention, all of the professional instruction from MIT's OpenCourseWare and the like.
Starting from functional abstractions is not actually harder than starting with ones and zeros. I've known plenty of people to jump straight into higher level functions without ever writing a for loop. I vastly prefer the person who only knows the higher abstractions to the person who writes C in every language.
Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.
I say the same thing about math. Not everyone enjoys it, and will be good at it.
Forgetting the obvious (most do). Be an excellent typist. Fast and accurate. Touch-typists need not apply.
I know itâ(TM)s not politically correct , but kids today are generally not interested in anything behind the presentation layer. To be fair , they donâ(TM)t have as much time as we did , social media seems to suck up all their time that could be spent learning and experimenting.
I don't see anyone arguing that everyone should be able to practice medicine at home after getting a high school education. No one is suggesting that civil and mechanical engineering is something you do after taking an AP class in 11th grade. The complexity of the things we implement via code has increased at least as rapidly as the usability of the tools necessary to build them, so there has been no net reduction in the real barrier to entry for software engineering.
Installing a software development environment in the late 70s meant loading a single binary and a relatively small library of system calls and little else. So sure, it was easy to access, but you had a huge knowledge barrier to make effective use of it. Now, an SDE consists of at least one application more sophisticated than an entire OS back then, libraries to provide a hugely varied selection of functionality (and all the potential dependency conflicts between them), and the resulting app is likely to have to integrate with a wide variety of external services and systems, while defending against sophisticated network-based attacks and being easy to use by a user who will never open a manual. And that's before we start in on the mathematical complexities of ML and other forms of AI, or even the common algorithms necessary to make effective use of the much more vast resources of a modern computer system.
No, it's not rocket science. It's software engineering, and it's a heck of a lot more difficult that simply 'coding.' How about we stop trying to convince legislators and educators that absolutely everyone ought to be able to do a thing simply because we've miniaturized the hardware to the point that it fits in your pocket? Software and software engineering has driven the vast majority of economic efficiency gains of the last 40 years. It's hugely important. Just because your 13 year old can build a web page does not mean that software engineering is easy. It just means that software engineers have simplified certain functions to the point that a 13 year old today can do them as easily as a 30 year old with a decade of experience could 2 decades before. But that hypothetical 30 year old with a decade of experience isn't still busy building web pages (usually, and those that are aren't making good money). Coding hasn't gotten any easier because the things we build with code gain in complexity even as each piece of the larger puzzle happens to get easier to access. ML is hot right now, and requires a fair bit of knowledge and experience even as frameworks providing much of the functionality get more accessible. In 10 years, your 13 year old will likely be throwing together ML-based systems with little effort, but the software engineers will have long since moved on, whether to quantum computing or something else, I don't know, but the folks with actual expertise are ALWAYS going to be well ahead of whatever legislators think an 18 year old ought to be able to deliver. Software engineering is still engineering, even if far too many of those who claim to practice the art don't seem to have the first clue as to what it actually entails. There are enough of us out there who do that we still manage to keep the entire industry pushing forward at a rate that basic education is never going to be able to match.
I think you're confusing what's easy for you with what it would be for somebody starting out or a public school teacher who's setting up a programming course.
Take a Grade 8 teacher, which is a good age to start programming, who's training specialty is English, French or History, can send an email on a board supplied system, make a powerpoint or word file (or Google equivalent) as well as a FaceBook post on their phone and tell them they now have to setup a Raspberry Pi, support it with the students in the class, learn how to use the file system and now they can start programming.
This isn't a theoretical example, somebody following your line of thought convinced the Toronto District School Board to buy several thousand (I've heard 8,000 and 80,000) Raspberry Pis for grade 1-8 classrooms and, two years later, maybe a couple of dozen of them are now being used.
The only successful thing that was done was to convince teachers and the board that it's hard to teach programming using Raspberry Pis.
Mimetics Inc. Twitter
I agree with a part of your statement, but what's missing is giving students a chance to see what programming is and whether or not they like it/can do well at it.
What's needed are platforms that appeal to all students to at least give programming a try and work at a level that all teachers can support.
Mimetics Inc. Twitter
I can see Javascript being a good way to be introduced to basic programming for the reasons that you state.
The problem with Javascript is it's terrible execution model for catching run time errors (it basically doesn't which makes it harder for students to see and debug their mistakes), it's event driven execution which doesn't work in a way that follows any other model and going from simple programming to even using it in web pages requires a step function in understanding and learning that requires a lot of time.
Mimetics Inc. Twitter
When demand was low, the handful of people for whom programming was exciting were all that was needed. Now, demand is very high, and learning to program will be quite difficult for the masses need to fill this demand.
Well, that's not really true at all. I had a small library of programming books; some specific to my home computers, some general programming books (Introduction to Algorithms is still one of the great programming books of all time), not to mention generalist magazines like Byte as well as pretty much every home computer or at least line of computers having its own dedicated magazine. Yes, it wasn't as convenient as Google or Youtube, but help was there. There was also a local computer club in my town, which meant a couple of times a month, and if I was really in a bind I could usually call up one of the smarter guys, who were always happy to share their knowledge.
I mention elsewhere that my crappy TRS-80 also came with a very good manual with an excellent introduction to programming, and I know there were some very good books for programming on C64s and Apples and the like.
The world's burning. Moped Jesus spotted on I50. Details at 11.
Like many others, here. I once wrote commercially useful software "Lessor II "that booted off a 5.25 " floppy. The original floppy floppies! Don't want to draw flames by identifying which standalone, language it was written in. Many could boot from the A: drive and a ROM'd motherboard (ahhh... "Motherboards"...sigh) It solved a business problem and licensed for over $1,000. Recently I have tried to develop within the newer Frameworks environments, and found it frustrating to developing with NPM,always downloading some knucklehead's newest contribution to an already good enough to begin development codebase. Watching some communities flaming amongst themselves and chasing the newest cool makes coding like watching two drunks play eightball.. they scratch so often you begin to wonder if they will ever get all the balls to stay down in the pockets. And when the cloud goes down; only needing 115 V. A.C to do useful computing will seem as robust as cockroach biology!
"Knowing everything doesn't help..."
No, Computer Science programs in school are ruining it. Their idea of "programming" is "what the fastest way to solve (X)", when (X) is an already solved problem that we could all just go look up. Or, alternatively, they'll give you a specific name of an algorithm, and ask you to reproduce it. How many people memorize every single array sorting algorithms by their names, and can reproduce them purely off memory?
In the real world, these are already solved problems, AND those problems are very well documented, AND we have direct access to this documentation while on the actual job or doing hobby work at home.
But when programming is brought into grade school, this is where the focus is. Why? Because there is where the university focus is. Why? Because it is easy to test on. That's it. It isn't critical thinking, which is what programming REALLY is all about. It is just about instructor's laziness to come up with testing requirements for students. And then this very same mentality is used for job hiring processes too.
When I learned how to program? We were still in the DOS and Windows 3.1 era. DOS came bundled with QBasic. And what did QBasic come bundled with to help learn how to program? Not a bunch of CS algorithms, but instead it came with Snake and Gorilla, a pair of games you could easily load up and instantly play. Wanted to change the color of the banana? Just start reading the source code and start playing around with it. Wanted to mess with the field layout? Same thing. It was simple. It was fun. It was engaging. It was exciting....
But, it isn't something that could easily be tested. So educational resources shifted away from this style of learning.
Programming is probably becoming harder because computers are far more complex than they were in the days of Commodore 64. In order to be a good programmer you have to understand how to write software that can take advantage of multi-processor and multi-core systems. The article is wrong that programmers should not have have strong system administration skills. True masters of BSD and Linux are both competent systems admins and developers. Good developers must understand how their computer operates. In fact, I would go as far as to argue that anyone that aspires to software development should first become a competent system admin. If you do not know how your computer operates, performance tuning, good security practices, etc., how can you write good code - you end up with stuff that is riddled with security holes and memory leaks.
I think something like QBasic should have been bundled with Windows and installed by default not unlike other basic utilities like Calculator (calc.exe) and Notepad. Installing it after the fact is not ideal but acceptable too. There were a lot of quick and dirty bits of work that people could throw together in a few lines of BASIC back in the day. Kind of the point of a computer is to have it do tedious repetitive work with only a few instructions.
But don't forget, every PC, tablet, and phone has a JavaScript environment installed.
“Common sense is not so common.” — Voltaire
High School/Jr. High
10 PRINT "HELLO WORLD"
20 END
First year in College
program Hello(input, output)
begin
writeln('Hello World')
end.
And so on ...
https://www.gnu.org/fun/jokes/...
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Yes, the fundamental tool of the programmer is not ones and zeros, but abstraction. Both binary math and functional abstractions can be used as the basis of computation, but if you are going to focus on one to the exclusion of the other, then learning functional abstractions will serve you better in the long run. How computers work is incidental to the mathematics of computation, and a university course should be teaching you far more about the Church-Turing thesis than bit-banging.
Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.
The US Education system does not reward critical thinking skills, maybe it actually does a lot to discourage it. Here is an example. Until my 11th grade year, I was always taught history from a text book. My 11th grade history teacher actually said that he refuses to use history books because they water down and distill history to one point of view and that they discourage critical thinking. In fact, he opened our eyes to the fact that history is taught from a single perspective, the white, male one. This made me finally understand why sections on outright Native American abuse and ethnic genocide was relegated to small blurbs inside the book. The text books all taught American History from the manifest destiny, white male superiority perspective. History came alive for me that year because he really and truly taught it from as many different angles as possible. Instead of relegating the Cherokee Trail of Tears to a small blurb that we had to read, we dove into it head first. We were assigned readings by research historians on the topics instead of reading some distillation calculated to indoctrinate a the white male superiority particular way of thinking. In most classic textbooks, Andrew Jackson was a storied hero. More accurate accounts portray him as being quite a bit more human: i.e. theories he suffered from alcoholism and that he was a scoundrel being not of any great upstanding character. Furthermore, the readings he assigned did not paint the Cherokee as perfect and they have done some things that are abhorrent too. The best way to encourage learning is to foster critical thinking. Critical thinking makes learning exciting.
See subject & "Are you ready girls"? (per a biker tune I used, lol KNOW YOUR HARLEY) https://developers.slashdot.org/comments.pl?sid=11758484&cid=56143262/ & you are DEAD-ON right!
* I started out even 'lower' just learning basic *NIX commands, DOS commands & tuning the OS, networking next, & then scripting (DOS batch & shell - this was the KICKOFF in that last one that led to coding TRUE .exes of my own).
APK
P.S.=> It's not done in a day kind of thing as I'm SURE you know - takes time (decades imo & even then, there's more to learn due to so much change)... apk
Sounds like a total condemnation of 20 years worth of trends in commercial computer platforms in general.
I need TP too.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
Open a new tab and type this into the browser:
javascript:{for (i=0; i10; i++) {document.write("hello world - ")}}
No need to install anything.
That's not even taking into account sites like 'jsfiddle' or more comprehensive online IDE options.
For that matter, there's also no need to go to the library to get a book on programming like you did in the days of the commodore.
And they are all harder to find than writing your first '10 print "hello"' one you calculator/C64
Going from not having a clue about programming to writing your first simple line in any language is by far the hardest and most important step when it comes to programming.
The rest is breeze compared to that.
I think the rest is harder--not for any of us since we know how to do it, but for someone learning to program, debugging is incredibly frustrating and a huge barrier to entry.
Even that's much easier, primarily because (1) stackoverflow and (2) there are MUCH better IDEs than there used to be.
Still, kids may get frustrated more easily. Being a programmer takes a certain amount of being stubborn in the face of unparseable errors.
Real lawyers write in C++
I too started on a c64. Back then you had a book on BASIC and had to learn by trial and error.
You didn't have forums (nor the internet for that matter) like StackOverflow where you gained the benefit of others experience, knowledge, and advice.
You didn't have libraries like .NET or IDEs with compile errors, intellisense, etc..
You had to smash everything into 64K, now we have nearly limitless amounts of memory to work with.
SYS64738
But how do you program on a phone or tablet?
Try AIDE on an Android tablet.
Last I heard Apple forbids programming on their phones.
Since you heard last, Apple has loosened the policy, allowing things like Swift Playgrounds for iPad.
Programming is harder than it used to be, but the reasons why are completely different: once upon a time, you needed to learn COBOL, now you need to learn Java, which is a lot more complex. If the program your boss told you to build contains a GUI, then your task just became quit onerous, but that has nothing to do with learning programming. In the nigeties, 4 GLs were popular, now you have to program GPUs in assembly language. Many coders produce sequential programs, and those still contains bugs, when today's hardware is parallel.
It's just that the coding has changed. In theory programmers can write code with pencil and paper, but common practice now requires them to access a terminal or computer and type in the code themselves. A computer in the home means the owner has to be a system and network administator before she can learn programming.
Of course the microprocessor revolution lead to computers in many homes and suddenly millions of people learned to write simple BASIC programs, which meant a large number of hacker wannabees, but a much smaller number of computer science geniuses. These days, professional programmers who can't program create mobile apps or web sites instead of BASIC shareware.
Actually I think that people who use the word 'coding' have no clue about computers and software anyway ...
You overvalue the utility of low-level abstractions, and your own knowledge. "Knowing about computers" as you have defined it, is not as important or as useful as higher level abstractions. If things were otherwise, we would not have bothered to invent higher level languages. Further, the computers you describe are merely computing toys, extremely limited in expression and ability. If you reduce what can be done to the level of PEEK and POKE, then you can indeed say that your system is simpler, in the same way that a tricycle is simpler than a car, but PEEK and POKE are not going to help you build web pages, or anything else of interest.
Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.
He's right, except that ordinary people cold not afford to buy a computer before the microprocessor era. Kids that really wanted to often somehow managed to get access to a computer.
I'm going to continue using the Host File Engine. Your software is well written, functional. The Host File Engine performs exactly as promised by mmell February 16 2017
(APK's work), I've flat out said it's good by BronsCon February 11 2016
his hosts program is actually pretty good by xenotransplant August 10 2015
his hosts tool is actually useful for those cases in which one does indeed want to locally block stuff outright while consuming minimum system resources by alexgieg September 25 2015
I like your host file system by Karmashock September 09 2015
I do use APK's host file on all my systems at home by OrangeTide December 01 2017
I personally use a HOSTS file blocker produced from a genius called APK by 110010001000 October 27 2017
* My hosts engine != "my life's work" - it was done for FUN & helps others (others quoted disagree w/ you).
APK
P.S.=> See subject You UNIDENTIFIABLE "ne'er-do-well" (you're the one trolling 'jealous jowie' (lol), not I, ya hypocrite)... apk
The fundamental problem is that the barrier between using a computer and programming a computer is getting higher.
No, it's not. It's never been easier. Visual Studio is free, for Windows development. The Android SDK, free. GCC and Linux development, all free.
In the era you're referring to, you had to pay Microsoft quite a hefty sum to get your hands on their C compiler. Linux didn't exist. Development for computers was never as difficult as the early days. And I'm afraid referring to the BASIC interpreter on the C64 doesn't count.
1. Computer retailers stopped installing development environments by default.
And for good reason. Those development tools and environments are costly in terms of storage. Most people don't use them. Why waste all that space on something 99% of end-users won't ever touch. This is a good thing.
2. User interfaces shifted from command-line interfaces (CLIs) to graphical user interfaces (GUIs). GUIs are generally easier to use, but they hide information from users about what's really happening. When users really don't need to know, hiding information can be a good thing. The problem is that GUIs hide a lot of information programmers need to know. So when a user decides to become a programmer, they are suddenly confronted with all the information that's been hidden from them. If someone just wants to learn to program, they shouldn't have to learn operating system concepts first.
Really? Someone shouldn't learn about the environment they're intending to develop code for? This is so stupid I don't even have words. It's kind a given, if you wanna do development, you need to be a power-user first, and understand the underlying systems if you ever hope to manipulate them into doing something. This is soooooo wrong. Couldn't be any further from the mark.
3. Cloud computing has taken information hiding to a whole new level. People using web applications often have only a vague idea of where their data is stored and what applications they can use to access it. Many users, especially on mobile devices, don't distinguish between operating systems, applications, web browsers, and web applications. When they upload and download data, they are often confused about where is it coming from and where it is going. When they install something, they are often confused about what is being installed where. For someone who grew up with a Commodore 64, learning to program was hard enough. For someone growing up with a cloud-connected mobile device, it is much harder.
If a person had a basic understanding of the operating systems they're intending to develop for, it being remotely located is a non-issue. This is just dumb for dumb sake. This doesn't even belong here. It's irrelevant -where- your application is running, be on your machine, someone elses, or a remote (Cloud) server. It's all computers. You should be learning the basics so these new concepts are easier to grasp and understand.
Bottom line: Whoever wrote this is brain-dead. They don't know anything about computers or the software development cycle. I'd be surprised if they ever did anything other than load Archon on that C64 he's getting all nostalgic about.
Of course it's not that learners aren't working hard enough. It HAS to be someone else's fault because otherwise one would have to assume responsibility and that just isn't how it's done anymore.
Damn the boomers for making languages too hard to learn.
The web browser is the portal to the internet.
Every web browser comes with a CLI. Yes, it is Javascript, what is your point? J/S embodies every aspect of procedural languages, and is orders of magnitude more rich than BASIC or Logo. They all have their strengths and weaknesses, there is no one-size-fits-all language for learning to program, and the pros/cons of any language is just as important to learn/
Source code to every website is visible when it loads. Children can literally hack their favorite websites and learn how the work.
I've been coding since the 70's. It has NEVER BEEN EASIER to get started in programming.
Utter nonsense.
I learned programming as a early teenager using C64, Atari 800 XL and loved very much since :-)
I think RasberryPi looks like a very good solution for teaching kids programming today.
But I think it has a serious packaging problem (if for kids)!
I think RasberryPI should be made into a (full) tiny laptop for kids. like this for example:
ZX Spectrum Next Laptop Prototype:
"https://www.youtube.com/watch?v=wM9Q-RgPr9M"
You can very well have a Software Development Environment without having an Integrated Development Environment.
GCC + a crappy text editor is a SDE, but it most definitely is not an IDE.
I guess an interactive python interpreter and nothing more could also be considered an SDE but not an IDE
If your dad was an engineer, good for you. Also good for you if you were some kind of Savant or if you had a well stocked library or the dude at the computer store wasn't just some pimply faced teen but knew stuff.
For the rest of us we kinda hit a wall on programming after the limited information we had was exhausted. It was '93 before I got my hands on copies of Computer! Gazette and learned that machine language was a thing. My teachers were all pretty useless too (and I went to a tech themed "magnet" school).
Nowadays I can open a browser, start typing in stuff like "How to make games", find Stackoverflow and away I go. Learning to program is way, way easier.
Now, getting a _job_ is way, way harder. H1-Bs + outsourcing means programming jobs are impossible to get without a 4 year degree (at least in the States).
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
But the web has made getting good information about a hundred times easier than it used to be
The way things are currently, good information is scattered among a lot of different sources on the web. Mining Usenet was my go to thing back in the day.
A good deal of the problem described in the original post -- lack of any sort of IDE -- appears to be mostly Windows-specific. Macs come with Python, Perl, and vim installed. Most Linux distributions come with all of those. Heck, most Raspian distributions for the Raspberry Pi come with all of those (one of the first things I did when I fired up my first Pi was to write and run "Hello, world!" in all of C, Perl, and Python, without installing anything extra). The Python standard library includes a GUI. Tcl/Tk may be a terrible GUI, but you can learn to open windows, add buttons, listen for events, etc.
Fuss at Bill Gates, or whoever's in charge these days.
Definitely a story I would've labelled with this tag in its heyday.
What happened to this tag? It's still my favorite!
For the love of life itself put something besides BASIC on it. Put Python on it. Anyone voting for BASIC is clearly not a developer (or at least one worth hiring anywhere),
I started out on the C64 back in 85. The fact that BASIC was basically staring you into the face first thing when you turned it on, compared with reasonably interesting examples in the manual; probably played a big part in getting me hooked on code. Today there is so much more to choose from, and the information is much more accessible. I remember saving money to buy very expensive programming books from one of the students in school who ran group orders from a catalog, and copying Turbo C++ from the school software library. Downloading Python and hitting a tutorial sure is easier; and Stack Overflow, for all its faults, saves a lot of time. Everything is more complex today, that's the biggest issue from my perspective; it's more difficult to get traction.
So, with the Feds budgeting $200 million a year for K-12 CS at the behest of U.S. tech leaders, can't the tech giants at least put a BASIC on every phone/tablet/laptop for kids?
$200 million is a token amount to pretend that action is being taken. It is less than $4 a year for each student. There are about 56 million K-12 students in the U.S. Multiply that by at least 50 to get near $200 per year and we might start seeing "programming" take baby steps towards becoming a basic skill as it should.
...and by "it", I mean the conclusion about "putting a BASIC on every device" - there are some good points here:
Not knowing what a browser is happens to be one of the recurrent, quasi-omnipresent aspects I am faced with on the many instances I provide tech support. Even for my somewhat most tech-literate solicitors. I no longer even hear the "oh you mean Internet Explorer/Chrome" so much - it really is not knowing there is a program where you put www urls in and get a page. People are to used to link clicking and glorified bookmarks on a desktop icon. Those are well and good for the elder, but when I see little kids on my environment do this, it both makes me feel old and makes me feel we are in for a dumb generation.
Another one that really stuck was about the "where is this stored/installed?" Android/iOS, Chrome (extensions), MacOS, Windows and even Linux are becoming very seriously addicted to this "app ubiquity" and transparency through centralized, curated, SANCTIONED store systems, so much so that newcomers fail to figure out unavailability of a program is, most of the times, internet connection. Or worse, they can no longer remove resource-heavy apps themselves because they couldn't figure out they're installed and/or running in the first place. It's stupid, and it's a lot more serious than missing out on programming - it's missing out on self-awareness and self-support.
But well, there will be more jobs for us enthusiasts and pros.
I love reading other peoples work, and to see how they design a solution to a problem. Some brilliant coders out there.
[($)]
Found the problem. Programming on your mobile device? Please. That's like trying to have a dinner party inside your kitchen's trashcan.
That Commodore was a desktop device. Today's equivalent systems are also desktops: Linux, mac, both come with pre-installed Python, among other things. Hugely more powerful than the author's Commodore SDE. You want it on Windows, it's one free-and-easy install away (or maybe it's pre-installed now, haven't used newer Windows OSs... you'd think it'd be there, because duh, but anyway it's not like it's hard for it to be there.)
Ask one very basic question "how can I write a little program" get one easy answer "go here, download X."
Seems to me that if you can't navigate those waters, you're going to drown trying to take a leak in your toilet before "learning to program" becomes a problem.
I've fallen off your lawn, and I can't get up.
After briefly reading the article it's clear that he just writes terrible user documentation. It's not harder to code. It's easier now more than ever. The problem is he can't write guides for people who don't already know how to program. He's become that angry old professor who believes kids these days just don't know anything, but the reality is his guides/documentation on how to set something up is making huge assumptions of what they should already know instead of starting from the basics.
The entire summary is about how using a computer has gotten much easier, widening the gap between users and programmers.
Yes, they should, if only to know where the hell they're writing their output files.
Yes, they should, because computers multitask now and a program simply cannot be allowed to stomp all over the operating environment as it could in the DOS days.
No, it's not. It's that the population of computer users has widened enormously while the population of people that want to program has not widened by the same ratio. It's exactly as hard to learn to program now as it was then -- you can just program vintage hardware or emulations thereof if that's the point. Or you can write in QB64, which is no harder than Qbasic was and in many cases is far easier.
How is the Riemann zeta function like Trump rallies? Both have an endless number of trivial zeros.
Your Commodore 64 example doesn't show that it was easier back then, it only illustrates that there weren't any "users" back then. If you wanted to use a computer, you had to become a programmer.
In those days,it took a lot more effort to create anything useful. There were no libraries to do things like Zip/Unzip files, perform encryption, display windows, use fonts, establish an Internet connection, send an email. You had to write all this stuff yourself if you wanted it.
These days, the typical user doesn't know how to program. In those days, such people simply didn't use computers.
Using computers, and programming, have both gotten much easier.
So educators should have access to the tools and training to become better at coding first. Then, the tech giants the monopolize the industry need to focus on providing SDEs or IDEs and some basic coding examples.
Stop telling kids that coding is hard and gives them tools to problem solve. This issue is kinda like telling young girls that math is hard.
Teach kids to be good problem solvers and lead them in the right direction.
HP calculators got a rap as "hard to use" because you needed to learn to enter operands first and then the sequence of operators rather than using infix math. But once you wrapped your mind around that - and it's not difficult - the sequences of operators you had to enter just to use your calculator were really already programming. All you had to do was enclose the operators you'd enter in double angle brackets and store that somewhere, and BAM, you've created a program.
Spreadsheets, HyperCard, and good macro systems all have some of this same element - merging use and programming, making normal use more powerful and programming more accessible.
We should be looking harder at how to bring that kind of success to broader problem areas and modern platforms.
what said we need more programmers? we NEED more plumbers/welders/candlestick makers/indian chiefs.
I would say that the "we had to learn to program because we only had BASIC" trope has been largely disproven. There were at least 10x as much computers sold that booted into "just BASIC" to the number of computer professionals that era spawned, not to speak about the number of people that were exposed to computers in that time through friends, schools, libraries etc.
Everyone that could afford a computer back then knew just enough to load the game, it was treated like a password in that way, most people now that owned that computer would have a vague recollection of what it is they had to do.
I remember learning programming in classes going from first grade (LOGO) through the end of my education (Turbo Pascal and C) - yet there is no glut of programmers my age.
Custom electronics and digital signage for your business: www.evcircuits.com
Sure, the C64 was the perfect development system for teaching the self-driven programmer.
Now stand back and remember how many SELF-DRIVEN PROGRAMMERS you knew? There were maybe a dozen of them in my entire high school class - of 430 students!
This despite being born right before the era of the C64/VIC-20, and being required to buy TI-82s in high school. Those are the two easiest platforms to program on that were invented at the time (one the perfect desktop development environment, and the other the perfect portable for killing time programming in class).
So, as long as you don't mind settling for the top 3%, we can easily supply the world based on tough self-driven programmers.
But our needs have grown way beyond that, so now we need something EASIER TO USE than the old standby.
Man is the animal that laughs.
And occasionally whores for Karma.
I remember, when I was very young, my father's car. It was an old car even then. This car was so old it had a choke. Operating it required monitoring of oil temperature. Just starting the thing up could only by done by someone who knew how the engine worked, the effect of adjusting air-fuel ratio and the changes in performance of the engine with operating speed and temperature. It frequently had minor mechanical issues which he had to diagnose and repair - congealed gunk in the oil sump, a drained battery after leaving the headlights on, a slipped fanbelt, ignition timings thrown off by general wear, misfirings due to spark plug age.
This was the microcomputer of cars: It did what it needed to do, but it needed a skilled operator able to invest a lot of time in learning to use their tools. People didn't want to go through all that, but they needed cars, so they learned.
Now look at a modern car. Reliability has improved to the point that hardly anything ever goes wrong. Even if the user does something silly like leave the headlights on, the onboard computer will shut them off again before the battery is damaged. The ECU constantly monitors engine state and automatically adjusts it for optimal operation. The driver is happy: They can drive to where they want without needing to spend hours studying a manual, learning the theory of operation, and becoming familiar with all the quirks of their particular model.
The downside is that when anything does go wrong, the driver is utterly helpless. They may be vaguely aware that there is a thing called a 'piston' in that engine somewhere, but that's the depth of their knowledge. They have no hope of fixing it. The car is designed to reflect this too, as the space shuttle console of dials is now reduced to a single 'check engine' light. When it breaks down, which isn't often, they need to go to a professional.
That's where computers are now. They have advanced in user-friendliness to the point that the user need not know how they work in depth, and the user does not want to know. It's a good model, but it discourages curiosity too. The inside is a black box, sealed away behind that 'check engine' light - or the software equivilent, an easy-to-use graphical interface that shows the user only what they need to see to accomplish their task.
The problem is that the original pc had basic to program the parts that came with the computer but add-on cards did not provide hooks into basic, so you couldn't program them without buying an SDK which cost more than the card, and you needed a new SDK for every card. They should have prevented any card from using the bus unless it provided software that allowed basic programmers to program the card.
first Integrated Development Environment was BASIC in ROM. There are more flavors of BASIC than C, and no waiting to learn because it looks like the bastard child of parents COBOL and Pascal. Back in the day, BASIC code was in magazines and books to be hand-copied, and more people learned to code BASIC because there was more intrigue between system administrators and application programmers and science.
in-fact, I think prodictivity was higher back in the BASIC years because the concept of a gui multi-tasking caused brainfog when people tried to comprehend what they could run parallel while at-most BASIC was in-tandem.
It's so much easier to learn to program than it used to be that I can't even. Just all the help you can find, both documentation and actual humans who will answer your questions, is totally transformative.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
My machine didn't even have a guide Just a reference book.
I noticed the command "beep" with a frequency and duration. I entered it. It worked.
In a few days, I had my own keyboard-controlled "piano".
As long as nothing was ambiguous, I don't see how I could have failed to understand it.
I wasn't exceptional. I merely was interested in that, and not something else.
Hahahahahaha!
We the workers don't need scabs like you. The bosses want the cheap labor so they can line their own pockets. But no one NEEDS scabs.
Programming and its basic concepts did not get harder, it is still pretty much the same. The difference is in the education, it used to be that programming classes werte geared at the students proficent in math and science. This means that the concepts could be taught to students based on a preexisting framework of ideas. Now the idea is that EVERYONE needs to learn how to code, which is complete BS and also cannot be based on the logic and processes that a student with strong math skills is capable of. Think about it, how are we trying to teach kids how to do something when they dont even understand the basic concepts that all programming languages are based on. This means that programming classes are not teaching the basic concepts so when they then try and use the latest "framework" code they really dont understand what they are doing and have a much harder time with processes and debugging.
Its rather simple, if we are going to require that every child learn to code, then we must also require them to learn the basic math and science skills required to fundamentally understand how computers work. The other thing is to stop teaching the framework flavor of the times, they need to teach basic coding and coding concepts first. The education system is to blame here, its co-opting by corporations to create more worker drones does us no favors and the results the corporations are seeking doesn't benefit society at all.
You never really "programmed" a C64 or other microcomputer system. You were just playing with a toy. Nothing more. Real computers have never been like those hobbyist machines, and never will be. I'm sorry, but that's the truth: you learned a useless "language", BASIC, and that would not teach you the problem-solving, the discipline or the technical knowledge you really need to be a programmer. Besides, nobody today would want to be a programmer. It's not a well-paid job, it requires hours upon hours of tedious work and all the interaction you have is with machines or man-children who have no clue what real life is. Smart people do not become programmers. Smart people have goals in their lives, and computers are not a goal. Unless you're severely imbalanced.
This is off-topic, because you don't learn much from using a library or framework, except for perhaps that most of them are utterly useless.
Essentially if you follow that argument you'll get something like Web developers who often have no idea what they are doing, but do a lot of it. I've once asked the developer of a web app with a particularly anoying bug (you cannot copy text field, every time you select something, the selection will be empty again) why that bug even exists, after all web browsers allow that by default. He openly answered that he had no idea, he was just using a framework.
Yes, you can now easily click something together simpler than in the 1980s, but what have you learned then?
It all depends on the type of programmer you are looking to breed.
To me, it looks like we are heading in the direction of extreme compartmentalized programming. You only need to know how your code relates to the other parts of the project. You learn more and more about what your specific role as a developer is. Then you are used to duplicate that role from project to project. Understanding the detailed ins and outs of the entire system, would then be kind of a distraction. That was one of the goals behind OOP. We are not totally there right now. But unless you are blind, you can see that this is where we will be going. For the sake of "security" systems programming will become a very esoteric art, and not what we commonly refer to when we say programmer. If you look at the closed nature of most devices used today, you see that the average user is very seperated from the OS. For all intents and purposes most UIs are not much different than a webbrowser. Soon that difference will not exist. The system will present the use with a UI that connects them to a cloud stored userspace. You will have that same userspace from device to device, and will not have access to that userspace without a network connection (network based workstations basically). Your device will have a high powered GUI and the cpu crunches local JIT code like javascript or python does now. But all of that code comes from a cloud like service. So development in large, will manly take place in very high level programming environments. Essentially programmers will be basically writing scripts. There will still be people writting compiled code. But more and more we are going to see scripting as the default meaning behind porgrammer.
So to understand how to write scripts, you just need a very limited knowledge on the systax used to write in the scripting language you are using, and the commands relevant to the task you are performing. So you could walk in knowing almost nothing about programming, and write a simple GUI or task, and what you need to know most is how to access the information that provides you with the commands you need. In a more specific and complex senario, you'll need to know how to work with a database or utilized a graphics engine.
I totally agree with the article. But that is because I mean something less modern when I say programmer. I'd like to see systems where you still have the freedom to poke and peek memory. But I'd also like "user" to mean someone that can compile their system to their specific CPU in an architecture family, and administer what running services they do and do not need running in the background of their system.
Mine all had the same mix of Basic programming books. Also, even if you did find a book you needed software. It wasn't until GCC and the like that compilers and assemblers were free. A good assembler would be $200-$300 bucks (adjusted for inflation). The books needed to make good use of it could be another $200 bucks easy. And that assumes you never get stuck _anywhere_ because if you did odds are there wasn't anyone there to help you out.
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
I was that person. I think you're all forgetting about the fact that the manual didn't contain anything about programming in basic. There was no internet. I remember when I bought my first IBM XT and sat there looking at the C prompt and not knowing what to do. I couldn't do anything until I went to the store and bought a book, of which there weren't many. Learning a new trade is never "easy" so I really don't even know what this rant is about. I disagree with the entire thing. It's never been easier for someone with the drive to write code that actually does something and looks good at the same time.
Macs come with a Python environment. Not PyCharm, but the command line environment. Fire up the Terminal app and type "python" All Linux distributions come with the Python environment pre-installed. Fire up the terminal app and type "python" On Windows, fire up your browser, type "python download" and you can have a Python environment installed in two minutes. Not as easy as having the Apple ][ boot into FP Basic or MS-Dos boot into a command line environment where you only needed to type "basica" or "gwbasic", but it's close enough.
The implicit thought process I get from a lot of educators is if weird smelly nerds could do on their own with no official teacher than surely everyone can do it with a teacher!
Part of what made self-taught coders good at coding is they had the drive to self teach, and when they taught themselves they could just what to learn and when and didn't get ordered around by a teacher. Not this case when school teach code.
the visa work is usually done by the company you work for.
Who cares about the requirements or amount of paper work?
The company I work for, as such a company might prefer hiring a citizen or permanent resident instead of a foreigner precisely because of the paperwork.
Regardless what IDE I use I can debug just quite fine.
When a call into a proprietary library doesn't do what you expect it to do during debugging using your IDE, what steps do you take to determine why the call isn't doing what you expect it to do?
you can have those IDEs on a desktop
Is an IDE worth the price of a desktop to someone who does not already own a desktop because he regularly uses a smartphone and/or tablet to satisfy all of his other computing needs? If so, how can I convince people that this is the case?
and for Android there are no viable IDEs either that run on android devices.
In what way is AIDE not "viable"?
Programming has always been hard and always will be. These days there's too many lazy, entitled snowflakes who think it should be easy and just don't get that to learn and become proficient at something, you have to make an effort.
I mean, pyhsics doesn't get easier over time. Nor does maths, nor electrical circuit theory, etc. So why is it that programming is supposed to magically get simpler?
>1. Computer retailers stopped installing development environments by default.
The C64 did not have a programming environment installed by default.
The only thing it had was CBM basic. If you wanted to get anything done, you did what I did, went down the local computer club with your 6502 manual and got people to explain it you, or learned yourself.
2. User interfaces shifted from command-line interfaces (CLIs) to graphical user interfaces (GUIs). ...If someone just wants to learn to program, they shouldn't have to learn operating system concepts first.
Correct. I didn't need to learn a thing about the OS to write games on my C64. But I did need to learn 6502 assembly, buy books on C64 architecture, understand how the video chip worked, understand how the sound chip worked, understand how the joystick worked, write 6502 assembler to interact with those various chips and ports and write a game. These days on a modern machine you just write in C/C++ (or language or your choice) and you never have to worry about the underlying chip architecture. The idea that it's harder now than it was in 1983 (when I wrote my first game) is bullshit.
3. Cloud computing has taken information hiding to a whole new level.
People don't learn to program with cloud computing. You learn to program, then at some later stage you may decide to do something on the web, and then only, then may you decide to abstract to the cloud.
All three points are bullshit. Been there, done that. We don't need misinformation that this post is pushing.
Your basic luser never had any intention of programming and doesn't even know how to use a computer and if they are using one, it's because their employer made them.
And yes this literally includes people that work at tech companies or telecoms etc.
Yes you should have to learn operating system concepts first. I had to when I got my programming degree. They're sort of vital things to understand when you're programming something that runs on an operating system.