48 ms·
Python overtakes Java to become the second-most popular programming language
- knodi 6y agoI don't know why in today's day and age people switch to Python, the python version bumps is such a wreck. Pip and Pipenv are 10 years behind the eco system. so many other better langs out there that are more uniform.
- smt88 6y agoWe need to start ranking languages based on what people use them for. Python is certainly #1 in ML, for example, but far from #1 in web. I had a "which stack" argument with a client recently for a web server processing tons of data. He wanted to use Node (which I hate, but also use when performance doesn't matter because TypeScript is so good). I showed him that the Node library ecosystem is actually pretty weak (many libraries, but most abandoned, single-contributor, and/or low-quality). Of course, browser libs for JS are amazing. My point is just that mixing all these things together in popularity rankings is pretty meaningless.
- doomlaser 6y agoOne of the first things I made in python, over a decade ago, was a web scraper hooked up with an OCR-software suite to harvest a lot of data on the web. I imagine that's sort of a proto-version of some of the kinds of machine vision tasks that are done with it today.
- stOneskull 6y agoi think flask and django are quite popular.
- zusoomro 6y agoJust curious, what other server side languages do you feel have a better library ecosystem than Node/JS?
- 0x445442 6y agoJava
- blandflakes 6y agoI'm actually surprised by this sentiment whenever I see it. Node still hasn't caught up in coverage. It feels like the Node community is really proud of their number of packages, which, given the likely median size of each package, is a poor proxy for actual stability and completeness.
- azeirah 6y agoPHP has a solid library ecosystem, especially around Laravel, which is what I know best.
- mtberatwork 6y agoI'm not sure I agree with that. Lots of stale, abandoned libraries in PEAR/packagist as well.
- krageon 6y agoMost libraries exposed in some sort of package repository in PHP land are pretty bad. In terms of quality, but also in terms of documentation (frequently not there, partially there or wrong). It's not even rare to find libraries wrapping things with only half of the expected functionality implemented. To say nothing of trying to get patches into the core. Be prepared to wait months for any response at all, every time getting the feedback that there is some new minor problem (or even worse, a "this needs to be talked about" without any followup). It's not a healthy ecosystem. For that you require high-quality core libs, a strong developer ecosystem (that doesn't mean a lot of devs, it means good ones) and a culture of third-party libraries being few but high-quality. Anything else is going to end up pissing you off, guaranteed.
- 6y ago
- Glyptodon 6y agoI went from Rails to a Node-based stack with a job change recently and the backend libs we're using feel comparitively like pushing boulders uphill, which I didn't expect. (There may be more/better options than what we're using of course.)
- z3t4 6y agoYou are probably using TypeScript. Try vanilla Node/JS if you want a faster Rails.
- mumphster 6y agoWhat does typescript have to do with speed?
- k_sze 6y agoStatic typing can be a bitch to get right. There are quite a few weird cases where it would be natural to write without types, but tricky once you introduce static typing and want to keep pleasing the TypeScript type checker, usually involving generics.
- throwaway894345 6y agoTypes don’t affect runtime performance unless you’re changing the algorithm. Maybe you’re arguing that correctly annotating certain algorithms is harder than switching to a slower but easier-to-annotate algorithm, but I’m very skeptical of this, especially since (in my experience) well-typed programs seem to be more efficient (easier for the compiler to optimize types that don’t change at runtime than those that do).
- k_sze 6y agoI wasn't talking about runtime performance at all. I was talking about coding speed. (I don't think the commenters before me were talking about runtime performance either? Did I misunderstand?)
- thefounder 6y agoGo has the best std lib of all.
- aprdm 6y agoWhat makes you so certain it is far from #1 in web? Django is massively popular as is flask.
- smt88 6y agoNo estimate is perfect, but PHP is far and away #1 because of WordPress. Here are some stats that you could and should take with a grain of salt: https://w3techs.com/technologies/overview/programming_language https://w3techs.com/technologies/overview/programming_langua... My anecdata also says neither Django nor Flask are very populate. I have yet to encounter either one already in use by a client. Rails is also rare. I think scrappy startup frameworks are a different population than what most devs (who work at big firms) use.
- aprdm 6y agoInteresting how experiences can be different. I have worked in F100 companies and startups and saw a lot of Django/Flask :), Bank of America was hiring flask devs like crazy back in the UK.
- _a1_ 6y agoThis is just TIOBE, nothing more. If one wants other markers, it's possible to use different benchmarks/indexes. For example, I like this one: https://www.techempower.com/benchmarks/ https://www.techempower.com/benchmarks/
- randcraw 6y agohttps://spectrum.ieee.org/static/interactive-the-top-programming-languages-2020 https://spectrum.ieee.org/static/interactive-the-top-program... [Access to this page may require you to create an account.] For years, IEEE has ranked the top 55 languages based on five use cases typical of IEEE members: overall, web, enterprise, mobile, and embedded, and ranked three ways: trending overall, in demand for jobs, and used by open source. The 2020 results, ranked overall: 1 Python 100.0 2 Java 95.3 3 C 94.6 4 C++ 87.0 5 JavaScript 79.5 6 R 78.6 7 Arduino 73.2 8 Go 73.1 9 Swift 70.5 10 Matlab 68.4 11 Ruby 66.8 12 Dart 65.6 13 SQL 64.6 14 PHP 63.8 15 Assembly 63.7 16 Scala 63.5 17 HTML 61.4 18 Kotlin 57.8 19 Julia 56.0 20 Rust 55.6 21 Shell 52.0 22 Processing 49.2 23 C# 48.1 24 SAS 45.2 25 Fortran 43.0 26 Cuda 41.0 27 Visual Basic 40.3 28 Objective-C 38.9 29 Delphi 38.6 30 Perl 38.2 31 Verilog 37.6 32 VHDL 36.7 33 LabView 36.7 34 Elixir 35.8 35 F# 34.7 36 Prolog 34.6 37 Lua 34.4 38 Lisp 33.0 39 Ada 32.8 40 Apache Groovy 32.0 41 Scheme 31.4 42 Haskell 30.8 43 Cobol 30.4 44 Clojure 29.8 45 ABAP 29.5 46 D 27.7 47 Forth 23.7 48 Ocaml 23.7 49 TCL 22.1 50 LadderLogic 19.5 51 Erlang 18.3 52 Eiffel 16.5 53 CoffeeScript 15.9 54 J 14.3 55 Racket 0.0
- edanm 6y agoA totally valid point. Do keep in mind that one of the reasons people choose Python though, is exactly because it is used in a few different domains. E.g. I'd rather my server-side language be the same as my video-processing language be the same as my data-science language, it makes things easier.
- walkingolof 6y agoPython is certainly popular, but the TIOBE Index ranking is not credible. Quote: "The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. " According to this index, "Logo", beats out Rust, Scala, Kotlin, and Cobol. I cannot remind myself when I last time saw a course, book or even any source code covering Logo. This must be some very poorly vetted, automatically collected data that tripped over something provoking the ranking.
- taffer 6y agoThat C is supposed to be the most popular language makes the whole ranking questionable. The stackoverflow ranking[1] corresponds much more to my own experience in real life. [1] https://insights.stackoverflow.com/survey/2020#most-popular-technologies https://insights.stackoverflow.com/survey/2020#most-popular-...
- 0-_-0 6y agoOn the other hand the stackoverflow survey might show that C is so simple that programmers using it don't need stackoverflow :)
- dilly_bar 6y agoC is simple? I don't find it simple compared to Python or other web langs.
- ChuckNorris89 6y agoC is simple on the surface but it gives you enough rope to shoot yourself in the foot that even after 6 years of using it I don't dare call it simple knowing my war scars.
- 0-_-0 6y agoSure, but you probably don't go to stackoverflow to help you debug it. Stackoverflow is more for "how do I do X in Y" rather than "where is the error in my million line codebase"
- pydry 6y agoI'm surprised TIOBE is still taken seriously these days. It certainly sort-of correlates with popularity but it's a bullshit measure.
- hajile 6y agoI think they factor in legacy stuff. There are lots of VB jobs in my area from companies desperate to maintain whatever horrid internal apps they built up 20 years ago. Along the same lines, IoT depends heavily on C and even stepping out of that, pretty much every piece of silicon requires extensive C code to be written around it. I still wonder about JS though. Billions of websites with JS and the JS gets rewritten every few years (or less during the framework wars period).
- amw-zero 6y agoRegression to the mean is the most powerful force in nature. Try as you might, you have to use what everyone else is using. Which is also very hard to continuously do in an industry that has ADD.
- dep_b 6y agoThe past month I have used Python again after a few years and I have to say I didn't quite like the experience as much as before. On one hand I also used vanilla Python instead of something easier to use like Django but the amount of preventable run-time errors and the lack of IDE autocomplete support at various points was kind of off-putting after coming back from very strictly typed languages like Swift, Kotlin or F#. It also didn't have the simplicity that Phoenix / Elixir still has, for example when you Google how to solve problems you have Python 2 versus 3, the old way to handle requests which is limited and the new way to handle requests which isn't as documented, yes you have type hints and named arguments but they're not everywhere yet and so on. So I don't think I will circle back to use Python again unless there's some kind of reason I can't easily go around it. There are still some very good ideas in there (I like the braceless approach to code hierarchy and a standard on code formatting in general) and it's definitely not as dumb as JavaScript but it has accumulated too much cruft.
- kzrdude 6y agodataclasses are the best recent addition to Python, IMO, maybe tied with ordered dicts. Python definitely doesn't have conceptual simplicity, because there are many competing concepts in the language, and lack of focus on uniformity. (Example - enums are implemented with a metaclass and dataclasses with a class decorator - arguably the latter is the wrong choice, because it is already evident it limits what kind of features can be added to dataclasses). Another example just because it makes me irate - `typing.NamedTuple` has been added as an "alternative" to `collections.namedtuple`. Same name, new capitalization, slightly different features. Add to that, a collection type that's inside the module `typing` which is supposed to be for.. type annotations, not actual implementations.
- crazypython 6y agoNo, (optional) static typing is the best recent addition to Python. It allows IDEs to catch a large variety of errors. The static type system is part of the language and has multiple implementations. It's Hindley-Milner, making it two-way, like Haskell's type system.
- mangecoeur 6y agoA point I think people miss with Python is they talk a lot about 'Python Software Developers', but I think the growth is coming from areas where people are NOT developers, but are using scripting/automation in other fields. This is a much larger market than software development, and people will work very differently compared to developers.
- dtech 6y agoI personally find the methodology used in TIOBE very dubious. It frequently has very large differences with other metrics, and often "feels wrong" compared to those other metrics. It mainly seems to massively overvalue historical significance, the older the language the higher it is. E.g. the current ranking has Perl 5x more popular than Typescript, and Visual Basic 2x as popular than PHP.
- tachyonbeam 6y agoI will say that I've been coding for almost 20 years and I think I've only had to touch perl once, so you may be right about that. It's definitely the case that Python is very popular though. It's everywhere. As others have pointed out, it's become very prevalent in scientific/academic circles. Outside of that, it's very useful for scripting. They teach it in universities as an introductory language. It's in use at every workplace I've been.
- st1x7 6y agoAnd they have C as number one? Visual Basic ranked higher than JavaScript? Groovy (!?) higher than Go, Swift and Ruby? R higher than SQL? What a joke the TIOBE index is.
- rjsw 6y agoThere are a lot of CPUs in embedded applications, far more than the number of PCs and smartphones, I would expect most of the embedded stuff to be written in C.
- deleted 6y ago[deleted]
- AlchemistCamp 6y agoDo you believe more devs are working on embedded apps than web apps in 2020?
- m4r35n357 6y agoc _is_ number one.
- Alex3917 6y agoThere are frequently weird things happening with the Groovy rankings in the Tiobe index, and I doubt this is accurate. That said, purely as a language (ignoring the ecosystem) it's probably nicer than Python, and I say that as a primarily Python developer.
- madcow00 6y agoI am also surprised that JavaScript is ranked so low.
- tomohawk 6y agoOf the top 10, only Java has experienced a year on year drop. So, at least some of the gains are at the expense of Java. For C and C++, you're probably not going to reach for Python as a replacement. It's not like in the 90s when these were considered general purpose. If you're using them these days, it's more likely due to needing to use them. Java is still used for a lot of other things where a language like Python would be fine and likely more productive. Also, I have a feeling that the large growth in go from #20 to #13 likely also came at the expense of Java. That, and the pie is growing. Python is taking a larger share of the larger pie.
- pjmlp 6y agoOn my area of work only Java and .NET get to play, and in what concerns UNIX like platforms most customers only care about Java. The only one that is growing, although I rather not, is Go, as we now start to jump into the same container bandwagon as everyone else. And even there it isn't taking anything away from our Java/.NET setups, rather complements them.
- whynotminot 6y agoIf you need more speed than Python can offer, but still care about developer productivity, Go is pretty great.
- pjmlp 6y agoPython is ideal as BASIC replacement and scripting language, for being a glue language for C and C++ libraries, almost any language can do that. As for Go, when they adopt generics, until then I rather spend my productivity in Java and .NET land, and only deal with it in the context of containers eco-system.
- onox 6y agoWhat are good reasons to choose Go? If I need a language for non-scripting tasks, I would choose Ada, which is very easy to read, has a nice type system and generics, performance, and you could statically compile everything if you wanted.
- galfarragem 6y agoIt is biased towards (European) industry but https://stackoverflow.com/jobs https://stackoverflow.com/jobs is a good metric on language demand. Since I started to follow it systematically (mid-2019), the trends I perceive are: Java or Scala -> Kotlin, JS -> Typescript, Angular -> Vue. Growth of (non-web) Python, React, Go and even PHP. Besides Kotlin, mobile tech demand seems stalled (Swift, React native, etc). Frontend demand is shrinking.
- commandlinefan 6y ago> Python has long been a top-loved programming language, as has Java Um... nobody _loves_ Java. We use it, but we don't love it.
- nih0 6y agoi love it
- globular-toast 6y agoYou don't know any other languages.
- notamy 6y agoNot gp, but I know plenty of other languages and I still love it.
- chapium 6y agoI used to be turned off by the boilerplate and verbose nature of the language. Over time, having all of this information out in the open removes a lot of guesswork based on tacit knowledge. I also really appreciate its static typing even though that can be limiting.
- revel 6y agoalso, modern java is not really like the ol' days of 1.3 and 1.4. A lot of convenience features since jdk8 -- and particularly the newest versions -- add quality of life improvements that make the language a lot more enjoyable to write.
- burade 6y agoThere's nothing to be hated about any programming language ever. People confuse "I don't understand it" with "I hate it".
- 6y ago
- iainctduncan 6y agoI was a Python dev for 14 years or so (now doing mostly personal projects in C/C++, Scheme, Clojure), and 10 years ago met my partner who is a biologist. I think one thing programmers underestimate is how many scientists and academics are using Python. It's not just ML, it's pretty much every kind of scientist and tons of non-science academics too. The fact that it's a great "casual" or part-time language is huge for these people. They aren't full time (or even self-identifying) programmers, but their programs are non-trivial. The readability, portability, tooling, and massive package ecosystem is huge for them. In that world, being somewhat comfortable in R and Python is becoming table stakes for really large swathes of academia. Personally I believe this is exactly why Python is dominant in ML now. We are harvesting after 20 years of academics happily writing libraries and tools for academic work in Python. :-) So I have no idea how the article got their numbers, but I'm not at all surprised to see the sheer number of people programming in Python exploding.
- wainstead 6y agoAs to how they get the numbers, this is TIOBE's methodology: [1] Since there are many questions about the way the TIOBE index is assembled, a special page is devoted to its definition. Basically the calculation comes down to counting hits for the search query +"<language> programming" In the next few sections it is explained what search engines qualify, what programming languages qualify and how the ratings are exactly calculated. Search Engines There are 25 search engines that are used to calculate the TIOBE index. The selected search engines are the 25 highest ranked websites of Alexa that meet the following conditions: The entry page of the site contains a search facility The result of querying the site contains an indication of the number of page hits The results should be available in HTML with clear tags Search engines in languages with special characters should be encoded properly The search engine should at least return 1 hit for 1 query The results of querying the site shouldn't contain too many outliers Porn sites are excluded [1] https://www.tiobe.com/tiobe-index/programming-languages-definition/ https://www.tiobe.com/tiobe-index/programming-languages-defi...
- iratewizard 6y ago
- qwerty456127 6y agoIf it's the second, what's the first? PHP? :-)
- iainctduncan 6y agoI was a total raving Python evangelist for the first 12 years of my coding career, and then got a job as the CTO for a Python based startup that had been running absent a technical leader for 5 years, with relatively junior coders making all the decisions. I still love Python, but I now have a completely different attitude to hyper-dynamic languages (like Python, Ruby, Clojure, Elixir, etc). In my new opinion, they are great for anyone making small projects, and good for disciplined, experienced teams making larger projects, but are really double-edged swords in large projects. If your team really knows what they're doing and can take advantage of the flexibility without creating a mess, they can let you move really fast and make elegant DSLs and so on. But if you let a team of juniors do whatever seems like a good idea, with nobody calling the shots who understands tech debt and the large-scale architecture problems, the mess that can be made is staggering. I never thought I'd say this before, but I would have been happier stepping into C++. :-/ Sure, this is a problem of people, not language. But there is something to the argument that absent discipline and experience, these can be dangerous. One can detangle a dog's breakfast in Java Spring a lot more easily. (ever seen "import gc" in a Python program? yes, that means what you think it means..)
- dekhn 6y agoI've used 'import gc' in python programs. gc.get_referers and gc.get_referents is very helpful.
- iainctduncan 6y agoI'm guessing you've been doing this for a while though... when you see that in a code base that you know has major issues and was made by fairly new programmers, it's like "oh god please tell me that doesn't mean garbage collector, I'm going to need a stiff drink"... :-)
- dekhn 6y agoyes, I have been doing 'import gc' for 20 years. Well, technically, I stopped about 15 years ago because I haven't had any unexpected references hanging around for that long.
- cryptos 6y agoI'm somewhat tired of claims based on the "scientific" TIOBE index! Although such rankings are mostly good for entertainment, I'd whish there were a better, more solid index. Redmonk is better, but a bit too limited in its data source (Stackoverlfow and GitHub).
- timwaagh 6y agoPython is a worthy successor to Java. people who like top complain about types are invited to run mvn clean install for each change instead of using type hints. I continue to go through that each day. it pays better. Java is the new cobol, hopefully. Still, with C bring #1, one has top wonder about the quality of the index. Both Python and Java are much more common in the business.
- rho4 6y agoDarn it, yet another hint that I'm not getting any younger. 20 years of Java experience and no intention of learning a new language... When prompted, I usually snark that you don't ask a professional violin player to "just" switch to viola either.
- circlefavshape 6y agoYeah, but in fairness they probably could, a lot easier than switching between programming languages
- crnkofe 6y agoNow that is some epic movement right there. C, Java have been up there in front for decades which I've occasionally explained to nonbelievers by sharing the TIOBE index. The winds of change are blowin'. By adding stricter typing and a bunch of middleware I can easily imagine a Python EE one day but let's hope that doesn't happen. Duck typing, a taste of functional paradigm, non-verbosity is what makes Python special IMO. I wonder if Go, Rust might make it to top C one day.
- dionian 6y agoMakes sense due to the proliferation of new JVM languages.
- maurys 6y agoI might disagree with how "popularity" is computed here, but as long as they have been consistent, the trend is probably real. IME Java still has a very real stranglehold on business logic code, especially in bigger companies. Golang and Rust are eating away at it, but more for infrastructure related projects rather than higher-level business logic.
- master_yoda_1 6y agoThats says lot of amateurs are doing programming today, who have no idea what programming is.
- SoylentOrange 6y agoWhen I worked at Yelp circa 2013, we were an entirely Python shop (for backend). At that time, we had millions of LOC in Python. I love Python to death, but it became very clear that Python was simply a very bad fit for a project as large as Yelp. I remember trying to write a program to simply understand our dependency graph so we could decouple some of our services (we were just starting our SOA efforts at that time). This is something other languages give you for free. Our build times were exceptionally slow, as a direct result of Python's dynamic nature. For example, test discovery took over 2 minutes on each test run. This also made it painful to have distributed test runs, as splitting up tests across multiple processes would require the test discovery step to be run in each process, incurring a 2 minute penalty per process. We also had deployment issues, because of Python's dynamic nature. Some code paths were only exercised during a production deployment, and were not sufficiently tested before deployment. This is despite the fact that we had tens of thousands of tests and sunk many hundreds of person-hours into testing as much as was possible. Despite a very professional engineering culture, and a constantly expanding test suite covering these corner cases, we had deployments fail about once a week for this reason. I adore Python and still use it extensively most days (mostly its data science/ML libraries). But I now think that large projects would really benefit from static typing and strict compiler checks, as well as just being able to actually compile a binary (which would have solved many of our testing woes). In contrast to some other smart people on this thread, I don't think that even disciplined developer teams should use Python for large projects, at least not in the long-run.
- musingsole 6y agoYour description here is often the same argument for microservices over a justification for any specific language.
- SoylentOrange 6y agoDefinitely migrating to microservices helped alleviate the pressure from some of these problems: easier testability, smaller individual codebases with simpler dependency graphs, faster test and deploy times for each service, etc. But the language problem remains. I think there are a lot more good language options today for backend services than there were in 2010, and if I were writing new backend code for a big website/service today, I might pick one of those.
- uses 6y agoI got back into python recently and one thing that really confused me: there's no good way to manage packages, apparently? Meaning: if someone clones my repo, there's no single, correct way for me to have specified the dependencies in a machine-readable format, so they can run the equivalent of "npm install", and get things working. Is that really true?
- aeturnum 6y agoLike many people here, I've worked on large python deploys for most of my professional career and have, over time, come to see python's downsides more clearly. I also wonder, thinking back over my experiences and reading others here, if we are mis-ordering how these things come to be. Maybe it's not that python codebases are, for a given line count, worse than other languages. Maybe it's that python allows teams to continue using practices that aren't suited to their current scale longer than other languages. The reason that we all have seen hulking, monstrous, nearly unworkable python code bases is that most other languages would have already collapsed under the mismatch between approach and desired outcome. I think we often approach software engineering as a puzzle - where you have a set of inputs (a too-large codebase, for instance) and a question of how to a better state. But programming projects are path-dependent creatures. Huge codebases must develop over time - they don't spring out of the heads of developers fully formed. If you were a typed language and your engineers had a lower LOC output per-day, then of course your code base will be smaller. Is that better? You iterate more slowly, but the scale of your code is also more manageable. In my experience, the challenge of large python code bases comes from the context that you need to understand from the surrounding environment: what are all these objects, what are their objects, etc. Typed languages force you to carry around more context, so any given function is easier to read, but you can still write un-navigatable code.
- deleted 6y ago[deleted]
- the5avage 6y agoCiting tiobe.com: "The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system." This and the fact that C is number one suggest something very wrong. While C really has a place in my heart, you should have very good reasons to use it when "starting to build a new software system".
- nineteen999 6y ago> you should have very good reasons to use it when "starting to build a new software system". And three of those very good reasons are: 1) you're writing a library and you'd like to make it usable from a number of other languages as well, the most popular of which are at least partially implemented in C or C++ themselves to some degree, eg. Java, Python, Perl, Ruby, Haskell etc. Writing said library in C (in particular) makes the library much more accessible from those languages. 2) the platform you're writing for is partially if not largely written in C or C++, the most popular of which are Windows, MacOS, Linux etc. So the toolchain/runtimes used to build the systems are already supported, extremely mature and well tested. 3) the platform you're writing for is especially space constrained (eg. embedded Linux), also fits the criteria for (2) above, and where performance may also be a factor due to reduced CPU/bus speed, availability of RAM and storage. For every interpreter or JIT compiler you want to add to those kind of systems for a higher level language, you can normally fit a larger number of C or C++ programs to implement your device's required functionality. There is far more years of effort required yet to overcome the inertia of the above than the average HN webdev would realise.
- the5avage 6y agoThis might be a stupid question but anyway... Is there someone well-versed in a statically typed language who would still prefer python most of the time? Could you explain why? For me it's just the opposite. When I program I think about the types first. When I read code I care more about types than variable names. This is in my opinion the way to go even in C. Also most python programmers I know are engineers and for them it would be a waste of time to learn C++. I would like to know why an experienced developer might prefer python ...
- mixmastamyk 6y agoWhen I program I think of business problems to be solved. Types barely register. Yes, on a big project with lots of developers types become more of a priority. At that point I let an IDE worry about them.
- _jjkk 6y agoThis is the reason for me as well. Many problems map very easily and readably to simple lists and dictionaries. The easiest example is web applications, especially internal ones, which are essentially shuffling JSON messages around from different SaaS and internal APIs. Adding (and testing!) a different ApiResultSerializer in between each of these points can become a huge headache when everything boils down to JSON string or number in your result anyway. Though I do use C / C++ (recently some Rust) where business problems are not the priority, and I can focus on technical efficiency / correctness.
- ywei3410 6y agoSure — for context I’m very comfortable with Haskell, Typescript, Java and Scala, fairly comfortable with Agda, Coq, C and Rust. I don’t prefer Python (the reasons of which I can elaborate, if you’re interested), but I do prefer to do my programming in Lisp-like dynamic languages — even when not using meta-programming. The reason for this is quite simple. A static type-system, by design is meant to invalidate programs which are incorrect and accept the programs which are correct. All static type-systems which exist invalidate a certain number of programs which are correct — that is to say, you can write a perfectly valid program, but the type-system can reject it. What we term to be a more expressive type-system, is one which rejects more programs. The line which one draws in the sand as expressive enough is completely arbitrary and the type-systems we have currently heavily rely on the user constructing their programs in a certain way, so the type-system can prove certain properties about it. Here’s an example demonstrating what I mean. Consider a theoretical language which uses : as the type-ascription, has generics/kinds and all functions are total. A code-snippet taking the head of a list might look like this: > let num: Option<Number> = head(numberList) Note that the return type of the head will be Option<A>, if the function is total because the list can be empty. Now suppose I have the snippet — locally I can reason that the type of num should be Number — but I need to prove that to the type-system. In most current type-systems, proving this requires you restructure your code in a particular way. > let numberList = prependList(4, previousList) > let sortedList = sortList(numberList) > let num = head(sortedList) What I’m trying to drive at is that static type-systems are a spectrum and at some point you will run into a case which you’ll either need to use an escape-hatch or restructure your code in a non-trivial way to satisfy the compiler. The boundary of what you determine to be correct is also completely arbitrary — you can always encode more properties and restrict your code further; how far you go is ultimately determined by you.
- jeff-davis 6y ago"In the past, most programming activities were performed by software engineers. But programming skills are needed everywhere nowadays and there is a lack of good software developers," This is an important distinction and often missed from programming language discussions. Engineering languages like C++, Java, Rust focus on being able to create robust APIs, handle incredible complexity, deal with dependencies, etc. Hacker languages like Python, PHP, erlang, and Go focus on an approachable language, libraries that tackle problem domains, etc. There is obviously a lot of overlap. But I think it's good to keep in mind that engineering and hacking don't always align.
- stosto88 6y agoI love Python but I have been hearing this for years. Its programming newbies attempting to gain new skills and searching stackoverflow 100s of times like I used to. Also, I search for jobs online...Python is not the backend tool for the vast majority of companies. Like the creator of Pandas' (Python library) says ....Python is the SECOND best tool for everything.
- bpyne 6y agoPython is an excellent teaching language. It's simple to install. You follow a tutorial by typing something at the REPL and it gives you results. Learning stuff like importing modules, etc. happens as your coding ambitions increase. Something else to consider is the Python shell at python.org/shell. Students often have Chromebooks. I'm about to mentor second year high school students who are interested in CS. Several of them have Chromebooks only. I can recommend Python and point them to the shell. I would think Python got a good bump through Hour of Code and other programs to introduce people to coding.
- jaimex2 6y ago"Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings" These ratings seem pretty meaningless. Visual Basic is #6, tell you pretty much all you need to know.
- suyash 6y agoPython for toy projects, scripting, ML and Java for real scalable applications is the way to go IMO.