18 ms·
Teaching D from Scratch: Is it a viable first language? (2021)
- zem 3y agothis bit from the article surprised me 8<------------- I spend an inordinate amount of time helping the kids set up their build environments, and having this built-in to the IDE or dub would be immensely helpful for using D for learning. 8<------------- it does seem to have worked out in the end, but I would personally not have considered anything where building was not one click of a button in an ide; build toolchains add a tremendous amount of complexity to learning a new language, and especially if this is also an intro to programming I would consider it a fatal lack.
- jpgvm 3y agoI ended up teaching a friend to program using Kotlin. The downside was just telling them to just accept what the IDE wizard lays down as gospel first but the advantage was that running code from main() or tests was always a fully IDE integrated experience. Explaining the build system boilerplate became natural when it came time to start adding dependencies to the project. Don't underestimate how important that integrated experience is. Within their first month or so they were already using a real graphical debugger which is something I didn't pick up until much later because of where I started.
- p0nce 3y agoAs a D cultist, I don't see why D would be any more viable rather than PureBASIC, microStudio, or Basic4GL if we're talking about kids that want an immediate result in an integrated IDE.
- Simon_ORourke 3y agoTime to apply Betteridge's Law of Headlines here, namely, that any headline which ends in a question mark can be answered by the word 'no.'
- kitd 3y agoThat certainly works for clickbaity headlines. This one seems like a genuine question.
- asimpletune 3y agoImagine a headline "Is Betteridge's Law of Headlines True?"
- eviks 3y agoWould still hold in this case!
- eadler 3y agoRelated: 1. James M. Cook & Dawn Plourde. (2016). Do scholars follow Betteridge’s Law? The use of questions in journal article titles. Scientometrics, 108(3), 1119–1128. https://doi.org/10.1007/s11192-016-2030-2 https://doi.org/10.1007/s11192-016-2030-2 2. Boris Peon. (1988, August 4). IS HINCHLIFFE’S RULE TRUE?·. Annals of Gnosis. 3. Stuart M Shieber. (2015, June). Is This Article Consistent with Hinchliffe’s Rule? Annals of Improbable Research, 21(3), 18–19. https://improbable.com/airchives/paperair/volume21/v21i3/Consistent-with-Hinchliffe-21-3.pdf https://improbable.com/airchives/paperair/volume21/v21i3/Con...
- eviks 3y ago> I am confident that D can be a viable first language Not sure what this confidence is based on, the basics are broken (toolchain, basic syntax errors you shouldn't even need a compile step to figure out, the squiggly error underline should be right there in your editor!), and what does sticking to "Vanilla D" offer as a benefit vs. some other language?
- j16sdiz 3y agoWhat stop schools giving out pre-installed virtual machine images? Most people don't setup their own environment for their first language....
- NavinF 3y agoSure they do. You can tell anyone to "just install IntelliJ" or "just install Xcode" and they'll have a working environment with zero effort. All the popular languages don't require handholding
- Mathnerd314 3y agoI would attribute that to the language/company putting in the effort for an easy install. I am sure it is easy to install Swift on Mac but I was trying to guide my friend through it on Windows and he gave up because it was too complex and the installer didn't work immediately (some library path error).
- NavinF 3y agoSwiftUI and all the other Apple frameworks that allow you to do more than read and write text to a console don't work on Windows. Beginners should just use an IDE. If one isn't available for their language/platform, that's a sign of things to come
- hutzlibu 3y ago"Most people don't setup their own environment for their first language...." Since most people probably try out js as their first language (often without knowing what js is) - setting upt the environment and IDE is as simple as open dev tools ..
- cb321 3y agoBASIC and Pascal used to be "teaching languages", though Python & JS seem to have displaced them and teaching sure can be hard. This tries to use Nim: https://www.nimprogrammingbook.com/book/nimprogramming_adoc-github.html https://www.nimprogrammingbook.com/book/nimprogramming_adoc-...
- mogoh 3y ago"The D Blog" came to the conclusion, that D is a good language for kids.
- sitzkrieg 3y agono one could have saw this coming! they cant keep getting away with it
- deleted 3y ago[deleted]
- 8A51C 3y agoI think Scratch makes a great introduction to programming because of the playfull assets which are bundled with it, sprites, sounds, backgrounds etc. This significantly lowers the bar to making something productive and visually stimulating, something which I believe is necessary to engage when competing with modern games, phones etc. There is no text based language (please correct me if I have missed one) that makes any attempt to bridge this gap by providing a library of assets on tap. Yes there are places you can find sprites etc, but they are not just there, included. I feel this has been the biggest stumbling block for my daughter moving on from Scratch. To produce something in a text based language that even comes close is so much more work, anything that is achievable just isn't stimulating enough. We have looked at Roblox, I agree with the article this has potential, making a moving platform in an obby for example, but this hasn't stuck with her. We have had more traction with custom ents in Minecraft, creating in Blockbench then messing with the configs to alter the behaviour, but this is just Mineraft specific. I should hope to do more with js/ts scripting in Minecraft, but using bedrock this is in it's infancy so there isn't much out there for inspiration, hacking around with or tutorials for her to look at herself. In this regard, D is no better a first language than any other.
- growingkittens 3y agoWe need another BASIC. How far into Minecraft modding have you gotten?
- jacquesm 3y agoJS and Python have taken up that mantle.
- speeder 3y agoThe "Visual" series of IDEs used to exist. Also the "Builder" series from Borland. It was the reason why Delphi (a kind of Visual Pascal Builder?) Was só stupidly popular. Same thing for Visual Basic. I used to look down on then but now I realize they being gone is a bad thing.
- 3y ago
- junon 3y agoI don't know, man. I am in a few casual programmer circles and I know two people who have stuck with D like their life depends on it, and they are constantly facing issues with weird language quirks making it impossible to write good, safe code. Through their fandom, I've made the personal decision to just stay away from it.
- jbandela1 3y agoIf you want a compiled language with strong types, Swift actually is a very nice language for learning. It has very nice ergonomics, and the Swift Playgrounds iPad apps are really nice and engaging.
- nmz 3y agoThe last thing you want is types when you're a beginner. TCL/Shellscript, for all its defects, just has strings, which means you have expr num OPERATOR num. you also just have commands. I've seen beginners try to set a variable from whatever is printed, so the concept of a return type is a tricky one. funny, now that I think about it, php is actually a great introductory language because it just prints everything to stdout.
- trealira 3y ago> The last thing you want is types when you're a beginner. I disagree. Data types are an intuitive concept. Integers and strings are obviously different, and you can do further and distinguish arrays, characters, and dictionaries. I'd argue Python is slightly beginner unfriendly in this one way because variable types are implicit rather than explicit (unless you use type annotations), but still important, as you'll get a type error if you try to, for example, sum a number and a string.
- nmz 3y agoPerhaps its because I learned programming via shellscript(rc not bash) and piping text into programs. I never had to deal with the difference between a string and a number unless I did something that actually needed the difference to be distinguishable. especially dealing with awk which just coerces greatly, hell, I didn't even have to deal with size limits since pure awk supports bignums. Sure, awk has types as well, but that concept came much later, especially things like scope. I think it both helped me and hurt me. I never understood why people said static typing was great, only after you had a huge program did you see where the pitfalls were.
- 3y ago
- graemep 3y agoPretty much anything can be a viable first language. My first language was 1980s BASIC, starting with very limited version (ZX80 and then Grundy Newbrain). I do not think that was a good first language though. It did not teach good habits, and it lacked a lot of concepts I had to start learning later.
- rollcat 3y agoMy first program was in BASIC. I was 6, and had other things to do before I got back on that journey, but the next one was in PHP. By conventional wisdom and common proverbs, my mind should've been mutilated beyond any hope of recovery. (And maybe it is, who knows.) But this conventional wisdom tends to ignore the barrier to entry. The C64 not only booted straight into BASIC, it also came with a book, and that first program that I copied from the book was not some silly "hello world" or a fizzbuzz, it was a piano. It demonstrated to me, that a computer is a means of expressing yourself creatively, and it did so in a form that was digestible to a 6yro. The best first language is the one that comes pre-installed on your computer, with enough example code to get you hooked. (Which is why the iPad / Swift Playgrounds fills me with both hope and dread. But, considering where I came from, mostly hope.)
- asylteltine 3y agoBut why? Why use esoteric languages no one knows?? Why teach someone a language they can’t use at work? Just teach Go it’s so simple and teaches you actually good practices unlike Python. Senior devs hate it and junior devs love it for the same reason.
- falserum 3y agoI think “esoteric” is meant for brainfuck, maldbrot and similar. D, nim and co, are quite traditional in language design languages, just not popular (yet).
- yau8edq12i 3y ago> esoteric > 1. understood by or meant for only the select few who have special knowledge or interest; recondite > 2. belonging to the select few Just because some people give special meaning to the phrase "esoteric programming language," doesn't mean that people who don't know about it should be chastised for not knowing the... esoteric meaning of the phrase. This reeks of "my club uses this adjective only for this occasion, you're not using it right, you don't belong to the club, go away".
- trealira 3y agoIt seems to me less like some elitist exclusionary thing, and more like they're objecting to the idea that if a language isn't within top 10 programming languages used, it must be esoteric and only weirdos and enthusiasts use it.
- falserum 3y ago> Chastise > punish, especially by beating. I know, education is though these days. Here, take some more beating: > An esoteric programming language (sometimes shortened to esolang) is a programming language designed to test the boundaries of computer programming language design, as a proof of concept, as software art, as a hacking interface to another language (particularly functional programming or procedural programming languages), or as a joke. … The creators of most esolangs do not intend them to be used for mainstream programming, … https://en.m.wikipedia.org/wiki/Esoteric_programming_language https://en.m.wikipedia.org/wiki/Esoteric_programming_languag... And the death blow, by a fun fact: week has 7 days because babylonians named them after seven planets - Sun, Moon, Mars, Mercury, Jupyter, Venus, Saturn. https://en.m.wikipedia.org/wiki/Classical_planet https://en.m.wikipedia.org/wiki/Classical_planet https://en.m.wikipedia.org/wiki/Names_of_the_days_of_the_week https://en.m.wikipedia.org/wiki/Names_of_the_days_of_the_wee...
- hasperdi 3y agoThis is roughly the same as teaching Esperanto to child as his / her first language.
- omoikane 3y ago> After half a year we moved on to our second language: Lua, specifically in the video game system Roblox. I almost wish we had skipped this one because it was a bit too advanced for these students I wonder if they meant Lua or its integration with Roblox was too advanced. I would think Lua is a simpler and easier to learn language relative to Javascript and D.
- giraffe_lady 3y agoLua's simplicity is a liability for someone new to programming. The tiny standard library means you need to write by hand a lot of things you could just use in another language. Arguably good for learning fundamentals, but in practice just a good way to kill momentum and smother that learning spark that is the best resource of a novice. Similarly the best way for a learner to stay motivated is to make something they are personally invested in, which usually involves integrating with something. With lua you need to get your hands into the toolchain and distribution stuff very early to do that, which has nothing to do with programming per se and is frustrating and disorienting for a newcomer. I've taught people to code from scratch and lua is a worse-than-average language for it. It's a small language but that doesn't help a total novice very much. It's the core concepts of programming that is difficult for them, not memorizing language features. The only situation where I would use it is if they have a specific motivating goal that uses it, usually yes roblox.
- jay_kyburz 3y agoMy 10 year old loves programming and has a fair number of hours in Scratch and Roblox. I've noticed when messing around with Scratch, he quickly progressed from leaning the language to using the language to solve his own problems. He moved from following tutorials to creating his own games and ideas quickly. When playing with the the Roblox editor he would follow the Youtube tutorials, but never made the leap to making his own games. Roblox scripting is fairly wordy, you spend a far amount of time binding methods to long event handlers. There is a lot of text you have to type, and spell correctly, and remember. 10 year olds are very slow typists. I also spend a fair amount of time helping him fix small syntax errors which slowly sapped his enthusiasm. The drag and drop, and drop downs in Scratch really helped him move quickly from learning the language, to using the language to make games.
- AstroJetson 3y ago> After half a year we moved on to our second language: Lua, specifically in the video game system Roblox. I almost wish we had skipped this one because it was a bit too advanced for these students, and I was not familiar with the language and the system to begin with. Teaching something, like a programming language, that you don't know is really hard. But in this case there are 100's of Lua tutorials around Roblox. I would think that they could have done that. While it's $15 per learner, an alternate could be Pico-8 https://www.lexaloffle.com/pico-8.php https://www.lexaloffle.com/pico-8.php Lots of tutorials and lots of demos to look at.
- dang 3y agoRelated: Teaching D from Scratch: Is it a viable first language? - https://news.ycombinator.com/item?id=29711800 https://news.ycombinator.com/item?id=29711800 - Dec 2021 (74 comments)
- chkas 3y agoSomething I've been tinkering with for a few years now - a learning programming language that runs in the browser and makes it easy to draw on the screen. https://easylang.dev/ide/ https://easylang.dev/ide/
- mgaunard 3y agoTeaching is best done with Python, which is incidentally the world's most popular programming language.
- todd8 3y agoI've taught hundreds of people programming. For one year, at my first real job, I was tasked with teaching the programmers within a big company Pascal. All of them were already professional programmers using Fortran, COBOL, or assembly language. The company had a commitment to modernize their software development practices and one facet of this was to introduce a more modern language--Pascal at that time (circa 1976). I enjoyed that year and, for the most part, my "students" were easy to teach, and Pascal held up well. They were all programmers already, so I didn't have to go slow through the basics and introducing ideas like recursion (absent in Fortran, COBOL, and assembly language of the period) kept the classes new and interesting to the students. Unfortunately, standard Pascal isn't really a good choice for a first programming language today, even though modern Pascals have removed many of early Pascal's limitations (packages, batteries included libraries, etc.) So, how can we decide if a language is a viable first language? Employing the wisdom of crowds, here are the top 30 languages in the 2023 IEEE Spectrum rankings: 1-10: Python, Java, C++, C, Javascript, C#, SQL, Go, TypeScript, HTML. 11-20: R, Shell, PHP, Ruby, SAS, Swift, Dart, Rust, Kotlin, Matlab. 21-30: Scala, Assembly, Perl, Visual Basic, Objective-C, Lua, Fortran, Verilog, Groovy, Julia. I contend that we should limit our choice of first-languages to some language in the top 30. This rules out many languages that I consider important, but we should stick with a language that is likely to benefit the student more than others as a first-language. That means not teaching Lisp or Racket or Ada or Ocaml or Prolog or even D for that matter as a first language. To narrow our top 30 down to a handful of alternatives, I'm going to use my own subjective difficulty rating and remove C++ and Rust and Scala from the list because they will be too hard for beginners. Furthermore, let's remove languages that aren't general purpose; this knocks out SQL, HTML, R, Shell, PHP, SAS, Matlab, Assembly, Visual Basic, and Verilog. Some languages require more complex build or execution environments; I would remove Java, Dart, Kotlin, and Groovy from our list for this reason. Finally, there are some languages that are not as easy to use outside of specific hardware or operating systems; I consider these languages C#, Swift and Objective-C to be ruled out. For good measure, I'm removing Perl from the list (a bit too irregular) and Fortran (not widely used outside of some important areas). Our condensed list now look like this: Possible first languages: Python, JavaScript, Go, TypeScript, Ruby, and Julia. To narrow it down even a bit further we can observe that one should learn JavaScript before learning Typescript. (Is this opinion shared by HN?) Ruby and Python seem like close cousins with Ruby being a bit prettier and Python being much much more popular. Julia is a bit specialized and a bit harder than the others so now we are left with just three: Python, JavaScript, and Go.
- jacquesm 3y agoNo. Sorry but it just isn't. Nor are a whole pile of other interesting and useful programming languages. You need something that offers instant gratification, preferably an interpreted language or a language organized around an interactive prompt. If I had to teach someone programming today I'd pick JS because it is available everywhere and it doesn't need any tooling at all. It's far from a perfect language but availability and ease of use trump language elegance and correctness. Even if that might mean you have to learn new concepts later and/or unlearn bad habits.
- Gormo 3y ago> You need something that offers instant gratification, preferably an interpreted language or a language organized around an interactive prompt. https://run.dlang.io/ https://run.dlang.io/ https://hub.docker.com/r/dlanguage/drepl/ https://hub.docker.com/r/dlanguage/drepl/
- teleforce 3y agoSomewhat related, this is recent DConf 2023 presentation on Teaching Software Engineering in DLang: https://news.ycombinator.com/item?id=37620298 https://news.ycombinator.com/item?id=37620298
- rony989 3y ago[dead]