With DOM, software-defined architecture, advanced build tools, StackOverflowand ultra-high-level languages, main languages are still taught (and learned)via I/O operations, simple data structures, loops and switches, and littlespace to development and deployment environment advances and even algorithmicchanges, like asynchronous running, that completely upend the way programminglanguage, and programming, concepts should be assimilated. In thispresentation I'd like to advocate for a multi-lingual, multi-paradigm, multi-tool approach to learning programming languages and how this could eventuallybe carried out.
The new century has seen an explosion of new ways of learning: through MOOCs,Webinars, bootcamps and incorporation of new technologies to learning. Still,syllabus of programming languages pretty much stays the same. There isenphasis in learning a single language (front end, back end, DSL) and aprogress that goes from very simple input/output operations through somesimple data structures to loops and other programming structures. This worksusually well and the proof is all around us; besides, the ten firstprogramming languages are the hardest, it is downhill from there. However, itcould be much easier if we acknowledged the existence of this multi-environment (console, UI, web, embedded), multi-language (many languages in asingle application, from data description to UI language), multi-tool (fromsimple compilation tools to deployment and monitoring tools) and organized ourlearning experience around it. And first we should use whatever we have onhand, like command-line interfaces (some of them with powerful languages) oreven the browser itself, which always include a programmer mode. Also usevisual languages like Scratch to teach more complicated concepts, as long asthey are put into use with languages that can run the whole nine yards. Inthis lightning talk I will try to outline what would be the first basic stepsin a course following these principles, and why I think this would lead tofaster formation of programmers and the creation of a more adaptive mindsetwhen tackling new careers or project in programming. |