Stories
Slash Boxes
Comments

SoylentNews is people

posted by janrinok on Friday August 26 2022, @02:03PM   Printer-friendly
from the what-is/are-YOUR-favorite(s)? dept.

Top Programming Languages 2022:

Python remains on top but is closely followed by C. Indeed, the combined popularity of C and the big C-like languages—C++ and C#—would outrank Python by some margin. Java also remains popular, as does Javascript, the latter buoyed by the ever-increasing complexity of websites and in-browser tools (although it's worth noting that in some quarters, the cool thing is now deliberately stripped-down static sites built with just HTML and simple CSS).

But among these stalwarts is the rising popularity of SQL. In fact, it's at No. 1 in our Jobs ranking, which looks solely at metrics from the IEEE Job Site and CareerBuilder. Having looked through literally hundreds and hundreds of job listings in the course of compiling these rankings for you, dear reader, I can say that the strength of the SQL signal is not because there are a lot of employers looking for just SQL coders, in the way that they advertise for Java experts or C++ developers. They want a given language plus SQL. And lots of them want that "plus SQL."

It may not be the most glamorous language...but some experience with SQL is a valuable arrow to have in your quiver.

This is likely because so many applications today involve a front-end or middleware layer talking to a back-end database, often over a network to eliminate local resource constraints. Why reinvent the wheel and try to hack your own database and accompanying network interface protocol when so many SQL implementations are available? Chances are there's probably already one that fits your use case. And even when a networked back end isn't practical, embedded and single-board computers can be found with enough oomph to run a SQL database locally.

("although it's worth noting that in some quarters, the cool thing is now deliberately stripped-down static sites built with just HTML and simple CSS") - Hey, so now we are cool? [JR]


Original Submission

This discussion was created by janrinok (52) for logged-in users only, but now has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1)
  • (Score: 3, Informative) by PiMuNu on Friday August 26 2022, @02:26PM (14 children)

    by PiMuNu (3823) on Friday August 26 2022, @02:26PM (#1268514)

    I put python in the "Big C" bracket. I work with a stack of C++ for heavy lifting and python on top for UI. Binary C bindings to python (e.g. native C API, boost/python or Cython) are good. I find it's a very productive way to work.

    • (Score: 5, Informative) by canopic jug on Friday August 26 2022, @03:18PM (2 children)

      by canopic jug (3949) Subscriber Badge on Friday August 26 2022, @03:18PM (#1268520) Journal

      Indeed. The whole thing reeks of ignorance or incompetence: M$ C# is an imitation of Java and has nothing to do with C. Additionally they consider HTML a programming language, wrongly. If they brought up XML or SGML in that situation, they might have an argument in their favor. However, HTML alone? No.

      Furthermore, the write up there seems to be missing the actual ranked list of languages.

      Still it was interesting to see what they are pushing and what their misunderstandings are. So, it was good to read anyway.

      --
      Money is not free speech. Elections should not be auctions.
      • (Score: 2) by janrinok on Friday August 26 2022, @04:33PM (1 child)

        by janrinok (52) Subscriber Badge on Friday August 26 2022, @04:33PM (#1268531) Journal

        The graphic showing the full list is in the supplied link. As it was an unusual graphic I couldn't find a way to display it on our site without simply posting the entire article - which is not permitted under fair use laws.

        • (Score: 2) by canopic jug on Friday August 26 2022, @05:07PM

          by canopic jug (3949) Subscriber Badge on Friday August 26 2022, @05:07PM (#1268533) Journal

          Thanks. Maybe it is hidden by gratuitous javascript? When viewed as HTML, there is no list, just prose.

          --
          Money is not free speech. Elections should not be auctions.
    • (Score: 0) by Anonymous Coward on Friday August 26 2022, @03:25PM (4 children)

      by Anonymous Coward on Friday August 26 2022, @03:25PM (#1268522)

      What Python libraries do you use for your user interface? Are they cross-platform?

      • (Score: 2) by PiMuNu on Friday August 26 2022, @05:15PM (3 children)

        by PiMuNu (3823) on Friday August 26 2022, @05:15PM (#1268535)

        I tried swig, which is cross-platform, and hated it. It seemed to make easy things hard and hard things harder. At the moment I use:

        * the python built-in API, which is straightforward C and well documented
        * or Boost, which is C++ and hence a pain, and poorly documented, but nonetheless I find worth while for the added type safety and more intuitive implementation.

        It depends on the project.

        • (Score: 2) by bzipitidoo on Saturday August 27 2022, @12:32AM (2 children)

          by bzipitidoo (4388) Subscriber Badge on Saturday August 27 2022, @12:32AM (#1268636) Journal

          I also tried SWIG, to connect Perl with C. Talk about massive code bloat. I dropped that in favor of separate programs glued together through system calls. That is, I'd have the Perl code open a socket (not a network socket, just a local socket, aka UNIX socket), and call the system exec function to start a C binary, passing it the socket handle as a command line argument. The Perl program stuffed a bunch of data into the socket, for the C program to read, process, and send back results.

          • (Score: 2) by PiMuNu on Saturday August 27 2022, @02:20PM (1 child)

            by PiMuNu (3823) on Saturday August 27 2022, @02:20PM (#1268692)

            I don't know perl so well, but this looks like the equivalent of what I do:

            https://www.geos.ed.ac.uk/~bmg/software/Perl%20Books/prog/ch21_03.htm [ed.ac.uk]

            It requires learning a new sub-language which always makes me gnash my teeth, but perhaps it is more simple than it looks.

            I like Python API - the python code just looks like any old dynamic library for C users, compiled and linked against libpython in the usual way, like any old C code, to bind to python routines. It can be imported into a python script by calling "import" just like any python library would be.

            • (Score: 2) by bzipitidoo on Saturday August 27 2022, @03:59PM

              by bzipitidoo (4388) Subscriber Badge on Saturday August 27 2022, @03:59PM (#1268708) Journal

              Oh yeah, Perl 5's XS stuff. I considered that too, but it looked more complicated and less reliable than a socket and an exec call. And I was short on time. I know library linking should result in faster code, know that launching a whole process is one of the heaviest ways to do things, and that's why there's been lots of effort put into lightweight threads which while heavier than linking, are lighter than full processes. But it worked, and there were far worse crimes against good programming that others stuffed in.

              One of the big improvements bruited about Perl 6, now known as Raku, is that connecting to C libraries is supposed to be a whole lot easier than in Perl 5. No more XS. You just somehow do it. Last time I looked at Raku, a couple of years ago, that part wasn't fully working yet.

    • (Score: 2) by HiThere on Friday August 26 2022, @03:32PM (1 child)

      by HiThere (866) on Friday August 26 2022, @03:32PM (#1268523) Journal

      It depends on how you aggregate. Python syntax is very C-ish, but it doesn't have static types. Also, it's compiled to a pseudo-machine rather than a more real-ish machine. (Virtualization makes that a difficult argument.) (And Java syntax is also very C-ish. Compare it against Lisp, Forth, Erlang, or Smalltalk, just to mention languages I'm familiar enough with to have an opinion.)

      --
      Javascript is what you use to allow unknown third parties to run software you have no idea about on your computer.
      • (Score: 2) by PiMuNu on Friday August 26 2022, @05:18PM

        by PiMuNu (3823) on Friday August 26 2022, @05:18PM (#1268537)

        Yeah, I was thinking of the python C API. In some sense python is a C library (equivalent java versions exist, but I don't think they are so widely used).

        https://docs.python.org/3/c-api/index.html [python.org]

        I confess, I am not knowledgeable about the other languages you mention. Everyone in my field has settled on python as the go-to scripting/high level language.

    • (Score: 2) by RamiK on Friday August 26 2022, @03:54PM

      by RamiK (1813) on Friday August 26 2022, @03:54PM (#1268525)

      I think their line of thinking is that there's python jobs that don't require C/C++ but there aren't any C# for people who can't at least read C/C++ headers and related docs.

      I find it's a very productive way to work.

      I think there's quite a few C libraries that owe their continued existence to their python bindings. Like, basically anything that walks through mixed types binary trees would have been done in C++ otherwise.

      --
      compiling...
    • (Score: 2) by Thexalon on Friday August 26 2022, @07:14PM (1 child)

      by Thexalon (636) Subscriber Badge on Friday August 26 2022, @07:14PM (#1268566)

      I respectfully disagree. Sure, it interacts well with C, and you can definitely write C-like code (replace structs with dictionaries, write the same algorithm functions as C, and bobs your uncle). But it's also possible and common to write Python code that looks and functions a lot more like Java, super-object-oriented with a bunch of classes and objects. And it's also possible to write Python code that acts a lot more like functional programming with lambdas and functions getting passed around as needed.

      I consider that flexibility to be one of Python's strengths, and probably one of the reasons it's so popular. If you need something quick and simple, it works well as a step up from shell scripts. If you need to build a complex application, it can do that pretty well too. If you need to handle a deep context-free grammar, it can do that too.

      Python also has a lot of features that would sure come in handy in C and its family of languages. For example, list comprehensions, which can be abused but also can save you a bunch of for looping.

      Syntactically, it's also quite different from C just in its caring about whitespace and block definitions. Not a difficult transition if you're used to K&R-style bracing, but still something that takes getting used to.

      --
      The only thing that stops a bad guy with a compiler is a good guy with a compiler.
      • (Score: 3, Insightful) by bzipitidoo on Saturday August 27 2022, @12:55AM

        by bzipitidoo (4388) Subscriber Badge on Saturday August 27 2022, @12:55AM (#1268641) Journal

        Big C?? Has everyone forgotten the moniker "curly brace languages", to refer to all those languages, such as Java, that use C style syntax? Python is, of course, not a curly brace language. And that's good. My main beef with C/C++ is that functionality is awkward to add. And the big reason why is the clumsy and overly verbose function call syntax. One of the black arts in C programming is how to point to a function. Weak programmers have enough trouble understanding pointers to mere variables. C++ greatly eases that. Yet operator overloading doesn't cut it either.

        Back in the day, function name collision was a big and growing problem, until namespaces were added. Then along came these new generation languages that added regexs, hashes, dynamic arrays, better string representation and handling than that dog of a library, string.h, and cleaner leaner OOP. C++ has tried to keep up, with the standard template library, and the enhancements in C++11, C++14, and so forth (evidently, they have decided a more accelerated schedule is good, no more of this decade long wait between releases) but it's just not as handy as in the newer languages that support all those things natively.

    • (Score: 4, Interesting) by JoeMerchant on Friday August 26 2022, @07:50PM

      by JoeMerchant (3937) on Friday August 26 2022, @07:50PM (#1268578)

      Or, you could just "be a man" /s and do your UI in C++... how much harder is it, really? And, how much time/effort goes into those bindings that would be less, or zero, if the UI were in the same language as the backend / heavy lifters?

      Of course, I'm in a team with a UI written in C# talking through a message server to a backend in C++ with a gaggle of attached microcontrollers in C. The C is just natural for the 32 bit micros and their world, the C++ backend does our deterministic realtime stuff (and was a direct port of the previous generation's DSP code), and the UI team has been doing it on Microsoft tools for decades, old dogs - you know.

      When I used to be a one-man-band, I found that keeping the whole project in a single, as much as possible, language GREATLY simplified my life and improved my productivity.

      Now, I have a few Raspberry Pi Pico Ws I'm playing with - and in that world, Micropython is just a hell of a lot more convenient to develop in than the currently provided C/C++ workflow. And, it's not about the language, it's about the IDE / toolchain and its present implementation. With a better IDE integration, I _think_ I'd like C++ better than Python on the Pico, but I just don't _need_ anything that C++ is providing there right now, so I stay with the easy tools, which are provided in Python.

      --
      Україна досі не є частиною Росії Слава Україні🌻 https://news.stanford.edu/2023/02/17/will-russia-ukraine-war-end
  • (Score: 3, Interesting) by hopdevil on Friday August 26 2022, @03:39PM (11 children)

    by hopdevil (3356) on Friday August 26 2022, @03:39PM (#1268524)

    I would argue, that in order to be a programming language, it must be turing complete. Pretty sure HTML lacks logical statements, I could be wrong. Fight me.

    • (Score: 2) by Freeman on Friday August 26 2022, @04:12PM (2 children)

      by Freeman (732) Subscriber Badge on Friday August 26 2022, @04:12PM (#1268527) Journal

      https://www.w3schools.com/jsref/dom_obj_param.asp [w3schools.com]

      You can have a sort of if/else with object and parameter tags. It's definitely limited, though.

      Example for something no one should be using now: https://stackoverflow.com/questions/449808/providing-alternative-images-if-adobe-flash-isnt-available [stackoverflow.com]

      <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="800" height="600" id="flashContent">
        <param name="movie" value="flash.swf" />
        <!--[if !IE]>-->
          <object type="application/x-shockwave-flash" data="flash.swf" width="800" height="600">
        <!--<![endif]-->
            <img src="(...)" alt="Put your alternate content here" />
        <!--[if !IE]>-->
          </object>
        <!--<![endif]-->
      </object>

      --
      Joshua 1:9 "Be strong and of a good courage; be not afraid, neither be thou dismayed: for the Lord thy God is with thee"
      • (Score: 2) by Freeman on Friday August 26 2022, @04:16PM (1 child)

        by Freeman (732) Subscriber Badge on Friday August 26 2022, @04:16PM (#1268528) Journal

        Still, the type of language it is, is in the name. Which one could construe as a "Programming Language" in a broad sense of the term. https://en.wikipedia.org/wiki/HTML [wikipedia.org]

        https://en.wikipedia.org/wiki/Markup_language [wikipedia.org]

        Markup language refers to a text-encoding system consisting of a set of symbols inserted in a text document to control its structure, formatting, or the relationship between its parts.

        --
        Joshua 1:9 "Be strong and of a good courage; be not afraid, neither be thou dismayed: for the Lord thy God is with thee"
        • (Score: 5, Informative) by Freeman on Friday August 26 2022, @04:19PM

          by Freeman (732) Subscriber Badge on Friday August 26 2022, @04:19PM (#1268529) Journal

          The accepted definition of a Programming Language doesn't include HTML, though.

          https://en.wikipedia.org/wiki/Programming_language [wikipedia.org]

          Markup languages like XML, HTML, or troff, which define structured data, are not usually considered programming languages.[12][13][14] Programming languages may, however, share the syntax with markup languages if a computational semantics is defined. XSLT, for example, is a Turing complete language entirely using XML syntax.[15][16][17] Moreover, LaTeX, which is mostly used for structuring documents, also contains a Turing complete subset.[18][19]

          --
          Joshua 1:9 "Be strong and of a good courage; be not afraid, neither be thou dismayed: for the Lord thy God is with thee"
    • (Score: 2) by RamiK on Friday August 26 2022, @04:24PM (6 children)

      by RamiK (1813) on Friday August 26 2022, @04:24PM (#1268530)

      HTML+CSS is Turing complete.

      --
      compiling...
      • (Score: 1, Funny) by Anonymous Coward on Friday August 26 2022, @05:19PM

        by Anonymous Coward on Friday August 26 2022, @05:19PM (#1268539)

        My arse is Turing complete.

      • (Score: 5, Interesting) by unauthorized on Friday August 26 2022, @05:57PM (4 children)

        by unauthorized (3776) on Friday August 26 2022, @05:57PM (#1268546)

        Being truing complete was always silly and overly autistic criteria, anything sufficiently complex will end up being turning complete such as the Game of Life, Minecraft, Dwarf Fortress, sendmail, and musical notation [stackexchange.com].

        If something isn't designed for the purpose of being a programming language, it shouldn't be considered a programming language. Turing-completeness as a sole criteria yields absurdities.

        • (Score: 2) by RamiK on Saturday August 27 2022, @08:52AM (3 children)

          by RamiK (1813) on Saturday August 27 2022, @08:52AM (#1268667)

          overly autistic criteria...If something isn't designed for the purpose of being a programming language, it shouldn't be considered a programming language.

          If you're rejecting technical arguments, it's suffice to say HTML+CSS is a programming language since it was designed to program computers and is used to program them in the real world.

          If you're accepting technical arguments, HTML+CSS is Turing complete.

          If you're rejecting the specific "Turing complete" argument and are insisting on the original branch logic argument, here's how to do logic in CSS: https://dev.to/iamschulz/writing-logic-in-css-3ig0 [dev.to]

          If you really want to be realistic about all of this, CSS+HTML has programming jobs and that's really all that matters.

          --
          compiling...
          • (Score: 2) by bussdriver on Sunday August 28 2022, @04:11PM (2 children)

            by bussdriver (6876) on Sunday August 28 2022, @04:11PM (#1268815)

            HTML: Data format. not programming. Turing complete is CS not some autistic game.
            Newer was CSS corrupted into being Turing complete by feature creep. It was a mistake. A little more JS integration could have helped, nested imports, and most of all - simply not bending the fools who demand feature creep (it's an infinite demand and only takes moments of weakness for them to win and pulling back is much much harder.)

            Anything eventually falls to feature creep and becomes programmable. One can attempt to avoid this with standardized scripting support; otherwise, a new bastardized scripting language will mutate into existence.

            • (Score: 2) by RamiK on Sunday August 28 2022, @05:28PM (1 child)

              by RamiK (1813) on Sunday August 28 2022, @05:28PM (#1268818)

              HTML: Data format. not programming.

              Well, unless the data happens to be code like with script and style tags...

              Turing complete is CS not some autistic game.

              On behalf of the math dept. TeX user group, I'm offended.

              Newer was CSS corrupted into being Turing complete by feature creep.

              Actually it was mostly back to form for HTML as a whole seeing how all the major markups either begin or end up Turin complete (TeX, postscript, PDF, troff...).

              Anything eventually falls to feature creep and becomes programmable.

              Not systemd units which is why everyone loves them.

              --
              compiling...
              • (Score: 2) by bussdriver on Wednesday August 31 2022, @09:50PM

                by bussdriver (6876) on Wednesday August 31 2022, @09:50PM (#1269516)

                Many of the 1st degrees in CS were masters in math. CS is Math... was math... today, it's software engineering under a better sounding old title... It should be software engineering and CS return to math that relatively nobody majors in.

                systemd... I expect it to have it's own an embedded linux someday; or minux... and don't forget a HAL for GPUs...oh and it needs an AI library too.

    • (Score: 2) by JoeMerchant on Friday August 26 2022, @07:52PM

      by JoeMerchant (3937) on Friday August 26 2022, @07:52PM (#1268579)

      Straight HTML, no. Tart it up with javascript? Of course.

      --
      Україна досі не є частиною Росії Слава Україні🌻 https://news.stanford.edu/2023/02/17/will-russia-ukraine-war-end
  • (Score: 5, Insightful) by Thexalon on Friday August 26 2022, @07:22PM (4 children)

    by Thexalon (636) Subscriber Badge on Friday August 26 2022, @07:22PM (#1268570)

    If you're job-hunting, and talking to good employers, they don't care too much about what language keywords you have on your resume, but do care a great deal about your ability to think through a problem and produce something that a computer could read as a solution to that problem. Because (this is the part non-technical headhunters really don't understand) the hard part is figuring out what you need to code to meet the specifications, and compared to that translating those decisions into the language of your choice isn't as challenging.

    --
    The only thing that stops a bad guy with a compiler is a good guy with a compiler.
    • (Score: 2) by bart9h on Friday August 26 2022, @11:04PM

      by bart9h (767) on Friday August 26 2022, @11:04PM (#1268620)

      > the hard part is figuring out what you need to code to meet the specifications

      I'd say that in many cases defining the specifications is hard, too.

    • (Score: 2) by aafcac on Saturday August 27 2022, @12:17AM

      by aafcac (17646) on Saturday August 27 2022, @12:17AM (#1268632)

      There are plenty of options for coding without knowing how to code. Things like thunkable. And they work OK, but only if you have some idea about what you're trying to do with the code and how the computer needs to deal with it. If you don't know that, then you get "do what I mean to x" and barring some pretty sophisticated AI, it'll be worthless.

    • (Score: 2) by bobthecimmerian on Saturday August 27 2022, @04:38AM (1 child)

      by bobthecimmerian (6834) on Saturday August 27 2022, @04:38AM (#1268654)

      The good employers are hard to find. I sifted through many dozens of opportunities in the past year before I landed one. Most of the rest really wanted X years experience with some of the tools they were using.

      • (Score: 3, Interesting) by Thexalon on Saturday August 27 2022, @10:52AM

        by Thexalon (636) Subscriber Badge on Saturday August 27 2022, @10:52AM (#1268678)

        Oh, no question: Over my career, I've had 2 positions I'd consider "good", 3 that I'd consider "evil", and 3 I'd consider "meh". I'm lucky to be in a pretty good spot now, and yes we're hiring if anybody's looking.

        And in case you're wondering what qualifies an employer as "evil" (and no, I didn't know what they were up to before taking the job):
        - One was heavily involved in subprime mortgages, and this was 2006, what could possibly go wrong? But more to the point, based on the information I had in front of me I could see that they knew the whole thing was a house of cards that was going to be fall apart sooner or later, and they were just interested in cashing in on defrauding homeowners and investors.
        - One was ignoring PCI-DSS and refused to address the problem when I pointed it out because it would have cost them something like 1% of their revenue to stop doing that (and no, they weren't running that close to insolvency). And then as I was leaving, announced to the entire staff that they were making hiring decisions about my replacement based on a candidate's race.
        - One was simply overworking me: I was on-call 24x7x365, about 80 hour work weeks, paying less than $30K, and everything that went wrong was declared to be my fault. The whole thing imploded shortly after I left.

        --
        The only thing that stops a bad guy with a compiler is a good guy with a compiler.
  • (Score: 3, Interesting) by legont on Saturday August 27 2022, @12:33AM

    by legont (4179) on Saturday August 27 2022, @12:33AM (#1268637)

    Want to feel secure? C plus SQL will do the best.

    --
    "Wealth is the relentless enemy of understanding" - John Kenneth Galbraith.
  • (Score: 1) by Pyro_MX on Saturday August 27 2022, @12:58PM

    by Pyro_MX (17697) on Saturday August 27 2022, @12:58PM (#1268685)

    It's better to be happy than _in vogue_. Although full disclosure, being _in vogue_ might be easier to make a living out of.

    Focus on what kind of field you like - frontend, backend, data science, infrastructure, whatever. The languages you need to learn will then come naturally. Usually, there's more than one language per field if there's one you really are not happy using.

(1)