8 ms·
The way I (somewhat hazily) remember it, Python was mainly competing with Perl as a scripting language, not Ruby as an application/web language. I started heari
by AdamH12113 3y ago
The way I (somewhat hazily) remember it, Python was mainly competing with Perl as a scripting language, not Ruby as an application/web language. I started hearing about Ruby years later when Ruby on Rails drove the Web 2.0 movement, but that feels like a different era to me. Eric S. Raymond wrote an article[1] in 2000 about his experience trying Python after spending a lot of time with Perl. I'll quote some of it here:
> When you're writing working code nearly as fast as you can type and your misstep rate is near zero, it generally means you've achieved mastery of the language. But that didn't make sense, because it was still day one and I was regularly pausing to look up new language and library features!
> This was my first clue that, in Python, I was actually dealing with an exceptionally good design. Most languages have so much friction and awkwardness built into their design that you learn most of their feature set long before your misstep rate drops anywhere near zero. Python was the first general-purpose language I'd ever used that reversed this process.
[1] https://www.linuxjournal.com/article/3882 https://www.linuxjournal.com/article/3882
- sgt 3y agoGood memories. I still have that issue in the attic somewhere.
- dale_glass 3y agoI think a good part of the issue is that right around then, Perl decided to do Perl 6. People decided to wait on doing anything big, since Perl 6 wouldn't be quite compatible. Later it turned out to be extremely incompatible. And Perl 5 would be dead long term, so why spend time on it, when you'd have to do a radical rewrite soon? Meanwhile, Python was there. And Perl 6/Raku took 15 years to finally arrive in some form, by which point Python had completely eaten its lunch.
- AdamJacobMuller 3y agoPerl 5 to Perl 6 transition took so long that python had it's own internal crisis with Python2 -> Python3 transition inside of that (and handled it far better).
- cutler 3y agoPlus Perl6/Raku is still dog slow compared with Ruby/Python/Perl5 by a factor of 10 when parsing a log file with a regex.
- MatthiasPortzel 3y agoThis comment was very helpful. Part of my question is why Python was used as a successor to Perl and not Ruby, but it sounds like Python was established as a competitive scripting language 5 years before people were talking about Ruby. I can’t find it now, but there was another comment that pointed out that the languages weren’t contemporaries.
- tootie 3y agoI think it's kinda nonsense. No programming language is intuitive. It's arcane by nature. Having slightly more concise syntax saves you maybe a week of learning time. I used to write Perl about as fast as I could think because I had a lot of practice with it. I mostly do Python now, but do a lot less coding in general and I have to google syntax constantly. Python is less noisy, but it's not really more intuitive for me. Frankly I think language design is secondary to IDE integration. The only time I've ever coded without thinking at all was using Java with IntelliJ or C# with Visual Studio. Type-matching and library introspection all work flawlessly 99% of the time. Not only do I not need to know the details of syntax, but I didn't even need to know APIs because I could autocomplete everything all the time. Python with VS Code still feels stone age by comparison.
- aeonik 3y agoYour point about statically typed languages rings so true to me. I learned Object Oriented programming on Java, then did professional C# with ASP.NET. I changed companies and learned Python because everyone was raving about it on the Web. I was so confused when I started using it, I thought I had a misconfigured environment or that I was missing some libraries when I started writing Python.
- skybrian 3y agoYes, Java has very good IDE integration, but for other languages, being easy to write without an IDE was important back then. A lot of people were using text editors. The situation has changed now that having at least somewhat reasonable IDE integration is common. AI tools can also give you pretty good autocomplete.
- tootie 3y agoI am endlessly baffled by developer's preference for lightweight text editors because they never bothered to learn how to use a debugger. The last 5+ years of my career have been mostly node and python and the state of their debuggers is abysmal and even stack traces are always useless. Want to impress me with your programming language? Don't show me code, show me a stack trace when it fails.
- CTDOCodebases 3y agoThis is an accurate explanation. I started to teach myself Python just before 2000. The general consensus before then was that for a first language Perl or Python would be a good choice. Python was typically preferred because it was more approachable than Perl i.e more succinct. With no prior programming experience (besides manually typing out programs into my C64 as a kid) I managed to build a program that connected to my webpage hosted by my ISP and changed a link in a page to point to a web-server I was running on my PC by just referring to the standard documentation. That’s one point that doesn’t get mentioned I think. The standard documentation was clear and accessible in a variety of formats. Also Python on Windows was very easy to set up.
- Terr_ 3y ago> it was more approachable than Perl i.e more succinct. My dim memory of that time is that Python code was often longer than Perl, but that was OK because its selling-point was that it didn't have so many syntax edge-cases and it was easier to read. More things were actual words-for-humans as opposed to special symbols one had to memorize and apply according to special rules.
- CTDOCodebases 3y agoYou are probably right. "Succinct" implies it was short and clear. Maybe a better word choice would have been "clear" or "readable". I remember the creator at the time saying that he wanted a program language that was more like a natural language i.e the programmer could express the same idea in a multitude of ways. Maybe this approach resulted in code that was easier to write than to read since understanding natural language relies heavily on context and convention.
- jkubicek 3y ago> When you're writing working code nearly as fast as you can type and your misstep rate is near zero, it generally means you've achieved mastery of the language. But that didn't make sense, because it was still day one and I was regularly pausing to look up new language and library features! This really jives with my experience. I learned Ruby first and used it as my scripting language of choice for years, but I constantly found myself having to lookup how to do even the most basic tasks. A day or two after learning Python I was already as productive as I had been with Ruby, it was wild. This isn't so much a jab at Ruby, just that Python worked the way I thought a programming language should, which made everything easy.
- BaseballPhysics 3y agoIt goes to show how your upbringing affects these things. Before Ruby I spent a lot of time in Smalltalk which really shaped the way I thought about language and program structure, APIs, etc. I'd also spent a metric ton of time writing Perl. Jumping into Ruby was like putting on a comfortable pair of shoes. Meanwhile Python always felt like an ill-fitting suit to me. I just personally didn't connect with the language design. But, to each their own!
- totallywrong 3y agoThat's a nice way to put it, I get the same feeling with Python. I pick it up now and then and I always seem to get it to do exactly what I need real fast. It just works, has a library for what you need, and its usage is clearly explained in English in the docs. Compare that to Go for example, the other language I know, and it's not even close.
- globular-toast 3y agoThe quotation is so true. There was a "Python WTFs" posted recently which was fun but the thing is you could work with Python successfully for years without ever running into them. Contrast that with other languages where you need to learn the WTFs before you can stop writing buggy code.
- Doxin 3y agoThat list of python WTFs was mostly stuff where I was going WTF at the code before even looking what the result was. Stuff like having a try/except with a return in the except block and the finally block.