53 votes

What was your first programming language, what languages do you know now, and what tips do you have for those trying to learn any of those?

What was your first programming language, what other languages (if any) do you know now, and what tips do you have for those trying to learn any of those? Whether those tips are for beginners or even advanced, to do with APIs, or if you've got a good library to share.

95 comments

  1. [3]
    calvbore
    Link
    My first programming language was C# while learning to use unity in 2015. Languages i know now: solidity python javascript circom huff rust (just a little bit) (i have compeletely forgotten how to...

    My first programming language was C# while learning to use unity in 2015.

    Languages i know now:

    • solidity
    • python
    • javascript
    • circom
    • huff
    • rust (just a little bit)
    • (i have compeletely forgotten how to use C#)

    My advice would be just build something you will have fun working on, any challenges that come up will be fun learning experiences!

    18 votes
    1. diabolicallyrandom
      Link Parent
      C# is to Java as is Gourmet Coffee is to Folgers. It's really just Java, but way way better.

      C# is to Java as is Gourmet Coffee is to Folgers. It's really just Java, but way way better.

      5 votes
    2. Devin
      Link Parent
      C# is a good place to start, it seems to have a bit of everything, and you can start to "read" code pretty fast. That translates into other code pretty easily. And you can see how other codes do...

      C# is a good place to start, it seems to have a bit of everything, and you can start to "read" code pretty fast. That translates into other code pretty easily. And you can see how other codes do it differently.

      2 votes
  2. [7]
    FriendCalledFive
    Link
    Am old, when I was a kid I learned BASIC, Forth and Z80 machine code/assembler, a bit of Pascal, Cobol and C. Sadly I got out othe habit of coding, and when I try to go back now, everything has...

    Am old, when I was a kid I learned BASIC, Forth and Z80 machine code/assembler, a bit of Pascal, Cobol and C.

    Sadly I got out othe habit of coding, and when I try to go back now, everything has changed and every attempt I have made at getting back into programming has been 1000 times harder than it was back in the old days. I tried to get into LUA recently, tried 3 different IDE's and none of them "just worked". I couldn't just type in code (even a Hello World!) and have it run. Why are we decades down the line and things are way more complicated than they need to be?

    14 votes
    1. [4]
      admicos
      Link Parent
      Lua is special in that it really wants to be embedded. Technically speaking, you can run it standalone and do really interesting work with it (and people do), but most of the Lua community embeds...

      I tried to get into LUA recently, tried 3 different IDE's and none of them "just worked". I couldn't just type in code (even a Hello World!) and have it run. Why are we decades down the line and things are way more complicated than they need to be?

      Lua is special in that it really wants to be embedded. Technically speaking, you can run it standalone and do really interesting work with it (and people do), but most of the Lua community embeds it inside other stuff, where IDEs won't be as "effective" with all sorts of custom globals or hacky native code shenanigans.

      2 votes
      1. [3]
        FriendCalledFive
        Link Parent
        Does that preclude it from being a general purpose interpreted language like Python then? Am very out of the loop with programming these days, I saw some games use LUA and wanted to learn it in a...

        Does that preclude it from being a general purpose interpreted language like Python then?

        Am very out of the loop with programming these days, I saw some games use LUA and wanted to learn it in a desktop environment to get a wider view as to how it works.

        1. [2]
          admicos
          Link Parent
          Definitely not, although for that use case you'll find the standard library really lacking. For example, any filesystem operations beyond reading and writing files will require a library, which is...

          Does that preclude it from being a general purpose interpreted language like Python then?

          Definitely not, although for that use case you'll find the standard library really lacking. For example, any filesystem operations beyond reading and writing files will require a library, which is just a small example of the "papercuts" you may experience from attempting to use Lua in this way.

          If all you want to do is to learn and mess around doing fun stuff, something along the lines of LÖVE 2D would probably be a better environment to use it under. It doesn't do too much of the "magic" that other implementations try to do, and unlike "standalone" Lua you can do quite a bit with the builtin functions. And it's popular enough that IDEs that claim to support Lua will have it's type definitions pre-bundled or otherwise easily installable.

          1 vote
          1. FriendCalledFive
            Link Parent
            Thanks for trying to help, I do appreciate it, but sadly this seems to be another solution that doesn't "just work". I installed it, the documentation says to do "love --version" and windows has...

            Thanks for trying to help, I do appreciate it, but sadly this seems to be another solution that doesn't "just work". I installed it, the documentation says to do "love --version" and windows has no idea what I am talking about. Going to the install directory and I can't do love.exe --version. I try their hello world example in its own directory and that fails as well.

            I think I will give up, the programming world has passed me by.

            Thanks :-)

    2. [2]
      devalexwhite
      Link Parent
      My first language was also BASIC, found an old Atari 400 at a garage sale as a kid. It had a BASIC cartridge, an intro to BASIC book and a magazine with code snippets spanning several pages. Spent...

      My first language was also BASIC, found an old Atari 400 at a garage sale as a kid. It had a BASIC cartridge, an intro to BASIC book and a magazine with code snippets spanning several pages. Spent the summer writing games and saving them to cassette.

      I agree, things have gotten so overly complicated these days (spoken as a previous front end developer, which is arguably an area that is the worst offender). What I’ve found works for me is to just ignore “modern” and code with what I enjoy. PHP, plain HTML, cgi scripts, self hosted on a nginx/Apache server, they all work just fine. You don’t need a server written on Rust running SvelteKit hosted using Docker, the old tech still gets the job done and probably with better end user performance.

      1. FriendCalledFive
        Link Parent
        Yeah, I grew up with machines that just booted into a BASIC or on one machine a Forth prompt. I admit I am old and my brain isn't as elastic as it used to be, but I have worked in IT for most my...

        Yeah, I grew up with machines that just booted into a BASIC or on one machine a Forth prompt.

        I admit I am old and my brain isn't as elastic as it used to be, but I have worked in IT for most my working life and am very much not stupid, but all these IDE's I have tried just seem so much more complicated to use. I am sure when you are over the first hurdle of getting them up and running it is fine, but they all seem to have extra layers of faff to get over first.

        1 vote
  3. interrobang
    (edited )
    Link
    I guess I technically started with QBASIC, but the first real stuff I did was C++, Visual Basic 6, and Java. Then: PHP Actionscript (for Flash) JavaScript/HTML/CSS Python Node (mostly JS) Hack...

    I guess I technically started with QBASIC, but the first real stuff I did was C++, Visual Basic 6, and Java.

    Then:

    • PHP
    • Actionscript (for Flash)
    • JavaScript/HTML/CSS
    • Python
    • Node (mostly JS)
    • Hack
    • Groovy

    I mostly just picked up something when I needed it. Languages aren't really that different; after a couple you'll get the hang of it. Problem solving is the foundation that supports you no matter the language.

    12 votes
  4. Kitahara_Kazusa
    Link
    First was I think Java, at this point I am passable in Java, Matlab, and C# and then actually good at Python. However I'm an engineer, not a programmer, so I am not building websites or anything...

    First was I think Java, at this point I am passable in Java, Matlab, and C# and then actually good at Python.

    However I'm an engineer, not a programmer, so I am not building websites or anything fancy, just tools to make my life easier by analyzing certain files or whatnot.

    My tips would be to learn Python because it's free so you'll always have it, and to just start small. 99% of what I know I didn't learn in any class, I just kept running into things that could be done with Python and doing them, and naturally I'd keep having problems with not knowing enough, and I'd have to go learn more. But once you know the basics using stack overflow and looking up how to use various libraries is pretty simple.

    At this point I'm still far from an expert but I can still do quite a bit of really cool things very quickly that my coworkers either can't do at all, or can't do without taking absolutely forever.

    8 votes
  5. [4]
    burntcookie90
    Link
    Visual Basic in 2004, Java in 2005. Currently professionally develop android apps in Kotlin.

    Visual Basic in 2004, Java in 2005. Currently professionally develop android apps in Kotlin.

    5 votes
    1. [3]
      Eric_the_Cerise
      Link Parent
      Do you have a recommendation for a favorite tutorial/resource, for an experienced programmer interested in learning Kotlin and, more broadly, Android dev?

      Do you have a recommendation for a favorite tutorial/resource, for an experienced programmer interested in learning Kotlin and, more broadly, Android dev?

      1 vote
      1. burntcookie90
        Link Parent
        I almost always recommend the Big Nerd Ranch book to start off.

        I almost always recommend the Big Nerd Ranch book to start off.

        1 vote
      2. blueshiftlabs
        Link Parent
        If you're already an experienced dev, I can highly recommend the Kotlin Koans for picking up the syntax and standard library of Kotlin.

        If you're already an experienced dev, I can highly recommend the Kotlin Koans for picking up the syntax and standard library of Kotlin.

        1 vote
  6. [5]
    Akir
    Link
    The first programming language I learned to use with any competence was Atari BASIC, which is actually somewhat weird given that I never actually owned an Atari computer; it was in an emulator. I...

    The first programming language I learned to use with any competence was Atari BASIC, which is actually somewhat weird given that I never actually owned an Atari computer; it was in an emulator. I used that to learn Microsoft QuickBASIC.

    But of course those weren't "real" programming languages (even though at this time there were plenty of projects that were making them more useful at the time, like FreeBASIC), so I tried to learn C++. Honestly, with all the effort I spent on it through the years and even though I've done a few programs using it, I still feel like I don't really know it. With how much it has changed over the years I feel like I know even less, even though my basic knowledge is enough to get me around with the small projects I need it for.

    Sometime during all of that I learned Python. I don't deal with it much because I just don't care much for it's conventions.

    I can't say exactly what timeframe I learned it in, but I picked up Javascript. It's not a huge leap from Python, but there's a lot of arcane and obscure stuff in the language; most modern programmers essentially ignore them today, but at the time I was coming across a lot of very confusing code whenever I looked at other people's stuff.

    I went back to college to get a degree, largely for my own self-worth, and I specialized in Java. In some ways, it's actually my favorite language. Sure it's a pain to have to write out so much, but the fact that you've actually got everything written out and not just implied is strangely comforting. Besides that, good tooling actually writes most of the boilerplate for you. Unfortunately in the years since Oracle had bought Sun, they've done a pretty good job stabbing it in the heart. You might have noticed if you're running Windows that you don't generally get asked to install Java anymore, and there's a number of reasons for that. Needless to say, the "write once run anywhere" motto is no longer true.

    The last language I learned was Lua, and I kind of love it. It's just a really good example of computer engineering; not only is it a simple but powerful language, but it's a really fast interpreted language with a very tiny runtime that allows it to be run on microcontrollers. It's actually really common to see it built into video games to script the game logic, which they've been doing for years before I dove in.

    Speaking of video games, there are quite a few niche scripting languages I have learned through the years, though because it's been so long since I've used them that I doubt that I would be able to make anything with them anymore. They're so obscure that I honestly can't remember most of them; the only ones that come to mind is LPC and Robotic.

    Edit: Oh goodness, I don't know how I forgot to mention PHP. I don't know how I forgot given that my career was basically started on it.

    5 votes
    1. [4]
      Halfdan
      Link Parent
      What do you dislike about Python? It seem quite neat and simple to me. (I'm playing around with Godot, which uses a Python-like scripting language)

      What do you dislike about Python? It seem quite neat and simple to me. (I'm playing around with Godot, which uses a Python-like scripting language)

      1. [2]
        Akir
        Link Parent
        To be perfectly honest, the number one thing is that I find the use of whitespaces to annoy me. I know, it's dumb. Something about it just puts my brain on guard when I'm dealing with it. Other...

        To be perfectly honest, the number one thing is that I find the use of whitespaces to annoy me. I know, it's dumb. Something about it just puts my brain on guard when I'm dealing with it.

        Other than that I actually like the vast majority of Python; it's easy to see that Python has been a big influence on pretty much every other language out there. The only other notable annoyance was how long Python 2 was actively worked on after Python 3 came out, but that was never a big deal either; it was more of a matter of working between systems and never knowing what I'd get when I typed in "python" on the command line. Generally I won't have a problem using it when I need to, it just won't be my first choice.

        1 vote
        1. Halfdan
          Link Parent
          I'm with you with the white spaces. That one is kind of weird!

          I'm with you with the white spaces. That one is kind of weird!

      2. Beenrak
        Link Parent
        Python is great for quick simple prototyping. But the larger the system you build in it the more those features become detriments. Packaging is awful in python. Contracts can be broken easily and...

        Python is great for quick simple prototyping. But the larger the system you build in it the more those features become detriments.

        Packaging is awful in python. Contracts can be broken easily and often in ways you might not expect. Almost every library has different opinions about how the language should be written. Not to mention that lots of "good" python code is extremely inscrutable.

        That all being said, it's what I use every day because there unfortunately just isn't anything else that can be written as fast or with the aid of so many powerful libraries

        1 vote
  7. [2]
    bytesmythe
    Link
    BASIC (early 80s) Pascal (late 80s) C, C++, COBOL, HTML (early-mid 90s) Visual Basic, SQL (late 90s) Python (20teens) Elixir (2020s) [just tinkering] Of these languages, the one I use all the time...

    BASIC (early 80s)
    Pascal (late 80s)
    C, C++, COBOL, HTML (early-mid 90s)
    Visual Basic, SQL (late 90s)
    Python (20teens)
    Elixir (2020s) [just tinkering]

    Of these languages, the one I use all the time is SQL. (Which makes sense, considering I'm a database programmer.) On the occasions that I do need to script something, I'll do it in Python. Not because I particularly love it or anything, but it's widely available and easy to use, so that's what I go with. I do like tinkering around with Elixir and would like to try writing some personal projects in it. I have also written a couple of small utilities in C#, but I barely count that because it looks mostly like Java, which looks mostly like C++.

    As far as ways to learn new languages, one thing to try would be Advent of Code. It is a series of programming puzzles that are released at the beginning of December every year. There is a puzzle each day, each split into two parts. It is free to participate, and there are puzzles going back to 2015, so there is plenty to work on. If you just want to get the hang of a language, you can just work on the first few days. The final puzzles each year get pretty complicated. In some cases, people end up writing their own programming languages to solve them.

    4 votes
    1. sparksbet
      Link Parent
      Don't start with 2019 though -- Intcode can be an interesting challenge but my partner wanted to start doing it with me that year and was bowled over by how complex those got for a new programmer....

      Don't start with 2019 though -- Intcode can be an interesting challenge but my partner wanted to start doing it with me that year and was bowled over by how complex those got for a new programmer.

      I've heard anecdotally that the earlier years were simpler? But I haven't gone very far back so I don't know.

      1 vote
  8. Commod0re
    Link
    my first programming language was QBASIC, back around 1989 or 1990. By the time I had my first job after high school I was familiar and comfortable with 16 languages and since then I've lost...

    my first programming language was QBASIC, back around 1989 or 1990. By the time I had my first job after high school I was familiar and comfortable with 16 languages and since then I've lost count. I wouldn't really recommend learning it as a first language anymore though, mainly because of how old it is

    Some of my favorites include:

    • Python. This one pays my bills and for many projects is my go-to, but it's not great at everything
    • C
    • vanilla javascript without any frameworks
    • bash

    I would suggest starting with Python because as a language it's designed to be very easy to learn the basics. You should be able to learn enough to start your own simple projects within 1-3 days even without any prior experience, it's modern, the standard library is very good, plus there are tons of actively maintained and useful libraries, plenty of people to get advice and learn from, and it has good interoperability with other languages.

    My best tip for learning any new language regardless of what your skill level is is to have an idea of a project that you want to tackle with it. Following a book or a class to learn the fundamentals is fine, but they rarely take you beyond the fundamentals, and practical experience is where 90% of learning about programming actually happens. Plus, seeing the progress you make towards your goal as you go can be extremely motivating to keep going

    3 votes
  9. GogglesPisano
    (edited )
    Link
    My first programming language was BASIC, which I learned in grade school on an Apple ][ computer. Soon I got my own Commodore 64 and went from BASIC to teaching myself 6502 assembly language...

    My first programming language was BASIC, which I learned in grade school on an Apple ][ computer. Soon I got my own Commodore 64 and went from BASIC to teaching myself 6502 assembly language (which I loved). The speed of assembly and knowing your program had complete control of the machine was fun.

    In high school I learned C, and when I went to college I majored in CompSci and learned Pascal, FORTRAN, COBOL, C++, Lisp, PROLOG, and a few more varieties of Assembly (VAX/IBM/68xxx/80x86).

    My first job out of college was in FORTRAN and COBOL (which I hated). My next job was a brief foray into MUMPS (an obscure interpreted language that was mostly used in healthcare systems) and then writing PC applications in C++. For years after that I worked mainly in C++ (and occasionally in Java) on Windows and Linux, then several more years in C#, plus JavaScript/HTML/CSS and more recently Python. These days I'm also dabbling in Rust (and liking it).

    My advice would be to take the time to learn a lower-level language (C/C++ or even assembly) - there really is no substitute for understanding how your code really runs on the machine and how data is stored in memory, and its helped me over and over again while testing and debugging.

    3 votes
  10. [2]
    Comment deleted by author
    Link
    1. Akir
      Link Parent
      I was much the same way. In some ways, a lot of languages do a disservice by how much they hide what's happening under the hood from the programmer; it's great for when you already understand how...

      My main issue is I didn't really "grok" arrays and other complex data structures.

      I was much the same way. In some ways, a lot of languages do a disservice by how much they hide what's happening under the hood from the programmer; it's great for when you already understand how these things work but it makes it hard to figure them out if you don't.

      The thing that ended up helping me to understand data structures was learning Java because a complete understanding of objects and what makes them so powerful helped me to understand data structures as a whole. It helped that I could look under the hood to see how some of the basic data structures like Strings were handled.

      Before that, not having a good grasp on data structures really hindered my understanding of other languages. It was basically impossible to find examples of C/C++ code that didn't use them in one way or another at the time. And after I did learn, the quality of my code greatly increased and I finally felt like I wasn't just a pretender.

      1 vote
  11. pra
    Link
    Atari BASIC was my first programming language. Today I mostly write bash, but I'm fluent in C and Python. I can get by in Java and PERL and Javascript, but I try to avoid all three of those. I...

    Atari BASIC was my first programming language.

    Today I mostly write bash, but I'm fluent in C and Python. I can get by in Java and PERL and Javascript, but I try to avoid all three of those. I dallied with Clojure and Haskell for a while, but as personal projects in this stage of my life I didn't get far. I think every programmer goes through a romance with LISP at some point.

    My advice is to keep your audience in mind.

    Your audience is not the compiler or computer -- it's your teammate tomorrow, your future self, your replacement down the line. Consciously put yourself in those people's shoes once in a while. Try to write to reduce the cognitive load on your audience.

    What separates professionals and craftsmen or hobbyists in programming is communication; creating code that can stand on its own without you.

    Occasionally go back to what you've written in the past (starting with just yesterday, or before lunch) and notice how clear, or not, you were. Did that variable end up getting used in a way that does not match its name? Fix it. Let yourself re-read and enjoy the parts that seem elegant. Learn that feeling clever is a warning sign that you've left the clear path.

    Read primary sources whenever you can -- look for solutions in the language or library documentation, don't stop (or start) at stackoverflow or discord. Learn the idioms and conventions of the language you're using.

    I'll leave with a fun site after all that posturing: https://rosettacode.org/wiki/Rosetta_Code

    2 votes
  12. Eric_the_Cerise
    Link
    My first language was Applesoft BASIC, and then Integer BASIC, on an Apple ][+ back in 1980-ish. Spent 4-5 years play-programming, then took a 20-year break until I realized people would pay me...

    My first language was Applesoft BASIC, and then Integer BASIC, on an Apple ][+ back in 1980-ish. Spent 4-5 years play-programming, then took a 20-year break until I realized people would pay me money to code.

    Went back to school, learned C, C++, RPG, COBOL, Java, Visual Basic, SQL, whatever DB/2 used (UBD?), AS-400 Control language, the Holy Trinity of HTML/CSS/JS, couple others, mostly for IBM AS/400 mid-range machines. Graduated, got a first job at a Microsoft shop, learned C# and T-SQL, and pretty much never used 80% of the languages I learned in school.

    After the 4th or 5th language, you don't really know how to count how many languages you "know", and it's more about knowing how to program, period ... with some emphasis on different categories of programming — frontend vs backend, functional, system, etc.

    And yeah, start to learn how to program using Python, but focus on the "learn how to program" part, and don't worry about the "using Python" part too much. Read about "Clean Code" philosophy. Learn how to think like a programmer. Then the languages are almost irrelevant.

    PS: Rust is my current endeavor.

    2 votes
  13. paper_reactor
    Link
    Like many engineering students in the U.S, my first was Matlab. Matlab Fortran Some Bash, Makefiles C++ Python (a bit) Julia (trying to get into this) I don't think there are too many tricks to...

    Like many engineering students in the U.S, my first was Matlab.

    • Matlab
    • Fortran
    • Some Bash, Makefiles
    • C++
    • Python (a bit)
    • Julia (trying to get into this)

    I don't think there are too many tricks to learning a language, the best way is to write in the language and complete projects. Of course, it'll be easier going from a similar language to another language vice going to something radically different. There are so many free resources online that are good and finding a useful one is not difficult. Also, different applications will use different languages. Scientific computing will trend toward stuff like C++, Fortran, etc.

    1 vote
  14. 3rd_eye
    Link
    I believe my first languages were C and C++ in high school. C was first in 10th grade in a programming class, then I took C++ as part of AP CS. I moved on to Java and more C++ in undergrad. After...

    I believe my first languages were C and C++ in high school. C was first in 10th grade in a programming class, then I took C++ as part of AP CS. I moved on to Java and more C++ in undergrad. After graduating, I worked as a network engineer for about 15 years, so I picked up Perl at the time to help automate command line stuff and integrate with some SDKs for vendor platforms. From there I taught myself PHP as my first web dev language with some Javascript. PHP support was non existent in our company and I didn’t like it much so my next web dev language was Ruby (on rails). Eventually I was one of two people in our team that knew RoR so we converted the app we built over to Python/Django.

    I left networking and I’m now a full time software engineer where we primarily use Java/Spring for our web apps/APIs. We contribute to one app internally that uses Ruby on Rails/JavaScript. I still also use Python but more for scripting/automation than a web framework these days. And not really a programming language, but we also use Terraform pretty heavily too.

    I guess one piece of advice is that the more languages you learn, the easier it is to pick up a new one. Same goes for frameworks (Spring, Rails, Django, etc). I’ve never used Pyramid (the Python framework Tildes uses) but I’ve been able to look at the code and understand where to look for things by drawing similarities to other frameworks.

    1 vote
  15. [3]
    LewsTherinTelescope
    Link
    JavaScript was my first (gotta learn how to hackerman with the browser devtools on the school computer!); at this point I have varying degrees of ability with that, Java, Kotlin, Python, and a...

    JavaScript was my first (gotta learn how to hackerman with the browser devtools on the school computer!); at this point I have varying degrees of ability with that, Java, Kotlin, Python, and a tiiiny bit of Haskell knowledge, though I wouldn't describe myself as great with any of them.

    My advice for beginning is the same no matter which you go with: pick something small that you want to do, and learn how to do that one thing. Then pick something else you want to do and learn how to do that, rinse and repeat. That way you can make visible progress and have things to be proud of along the way, which is important for maintaining investment. It's pretty generic advice, but has been very useful for me.

    Don't really have advice for advanced users since I'm not there yet, maybe someday I will!

    1 vote
    1. [2]
      Akir
      Link Parent
      It feels like Javascript is inevitable these days. People just keep trying to push it into everything. Have you heard of Microsoft's attempt to get it working on embedded systems?

      It feels like Javascript is inevitable these days. People just keep trying to push it into everything. Have you heard of Microsoft's attempt to get it working on embedded systems?

      1 vote
      1. LewsTherinTelescope
        Link Parent
        I haven't and I suspect I'm much happier that way 😂

        I haven't and I suspect I'm much happier that way 😂

        2 votes
  16. JesusShuttlesworth
    Link
    My first language was C#. Now I know (to varying degrees): MIPS Bash C C# gdscript Java Javascript Python R (if you count that as a programming language lol) Rust SQL My advice is to just focus on...

    My first language was C#.

    Now I know (to varying degrees):

    • MIPS
    • Bash
    • C
    • C#
    • gdscript
    • Java
    • Javascript
    • Python
    • R (if you count that as a programming language lol)
    • Rust
    • SQL

    My advice is to just focus on two languages, one that is interpreted and one that is compiled. If you do that, the others will really just fall into place since you will understand the general concepts behind programming and will only have to learn specific syntax.

    1 vote
  17. [7]
    desol8neb
    Link
    My first language was either Java or Python (I self taught in middle school, and did them in parallel). Then I went on to learn C, C# (unity), C++, Ruby, ARM Assembly. I remember screwing around...

    My first language was either Java or Python (I self taught in middle school, and did them in parallel). Then I went on to learn C, C# (unity), C++, Ruby, ARM Assembly. I remember screwing around with VBS scripts on windows a little bit but I don't particularily count that. I have fond memories of my dad telling me to not download VBS scripts off the internet to play with. It took me awhile to understand why that was the case. If you count SystemVerilog and Verilog as programming languages, I've also used those quite heavily in my computer architecture courses.

    I've used pretty much only C over the past few years due to university stuff, however before that I did 4-5 years in Java exclusively. Been awhile since I've actively coded in it but I love Java/Cpp. I need to use Python for my data science class right now and, as nice as the syntax is, I really hate the whitespace based formatting and it feels vastly oversimplified compared to C or Java.

    I'd really like to learn Rust though, it's on the rise and I've heard that it's really powerful and useful, and is a little more user friendly than C. It'd be kind of cool to learn SQL or COBOL or FORTRAN though, not as anything I'd do full time but something I could put on my resume to get a few looks. I'd also really like to learn 6502 assembly but less to build stuff, but moreso so I can learn the ISA before I write a 6502 emulator (one project I'd like to do at some point).

    I think the best way to learn any programming language is to first and foremost, be patient with yourself. Programming is tough, and it's in many ways a whole new way of thinking. You're learning how to approach a problem in an entirely new way with a new toolbox you've never used before. It's tough, and takes time, but it's so worth it. Best bet is to find youtube tutorials, a textbook, or use a website (I used Codeacademy quite heavily myself when I self taught).

    If you're looking for a language to start learning, I'd highly recommend starting off with C. Yes it's an old language with it's own issues, but once you overcome those issues (like segfaults, memory management, etc) you'll learn to appreciate more high level languages like Java, Python, etc that do all that automatically for you. It doesn't hold your hand compared to Python, but that's the fun part & how to learn to appreciate coding the best without going so low level with languages like Assembly. I love writing ARM assembly and SystemVerilog though, so there's a bit of a low level bias.

    edit: forgot to say: I wouldn't recommend starting with an Object Oriented language like Cpp/Java as your first language. Starting with a simpler language, getting used to programming and syntax, and learning how to code is tough as is. OOP is complicated and I think jumping directly into the deep isn't the best idea. ymmv though

    1 vote
    1. [6]
      wanderer
      Link Parent
      That's awesome! I have a kid in middle school who's learning how to program now. What kind of projects did you work on back then? What kept you motivated? He loves to code but I feel like he's...

      I self taught in middle school, and did them in parallel

      That's awesome! I have a kid in middle school who's learning how to program now.

      What kind of projects did you work on back then? What kept you motivated? He loves to code but I feel like he's struggling with practical application. These days it seems like every problem has a solution so he ends up just building a much worse version of something that already exists; which may be a demotivator.

      1 vote
      1. [2]
        ra314
        Link Parent
        Not op, but I struggled with the same problem your kid has in college. (Philosophically) I find that whatever you try to do is almost always going to be a worse version of what someone else can or...

        Not op, but I struggled with the same problem your kid has in college.

        1. (Philosophically) I find that whatever you try to do is almost always going to be a worse version of what someone else can or has done. There's always someone better at whatever game, instrument or sport that you're learning. But that shouldn't stop you from learning any of these. You gotta do it for you, just because you enjoy it. Just because someone has discovered some math concept, doesn't mean it's less magical for you to rediscover it on your own.

        2. (Practically) I ended up working on a lot of game clones. Some of these were turn based games that I played, where some features were paywalled. It almost made the game pay to win. It was fairly simple, so I created a terminal based program that did the same thing the game did, but also with all the paywalled features. Another idea I had was to make a deterministic version of the game risk, because I felt like I kept losing that game against my friend just because he kept getting good rolls.

        If game creation isn't your kids thing though, maybe he can try some programming puzzles. Like advent of code? I started on that during college and found it very approachable.

        Also maybe there's some other need to fullfill. I've been playing this game called MasterMaths. And j wanted to know given 3 numbers and any mathematical operators, what the best number would be to generate that gives the highest score on the game board. It's a fairly obscure game, so it's unlikely there's an existing solver for it, so I made one.

        3 votes
        1. wanderer
          Link Parent
          Thank you for this! He's actually shown some interest in leetcode challenges - maybe we'll dig into that.

          Thank you for this! He's actually shown some interest in leetcode challenges - maybe we'll dig into that.

      2. [3]
        desol8neb
        Link Parent
        Glad to hear your kid is learning to program! Out of curiosity, what is s/he learning? For projects that I worked on, I remember starting off with basic calculators, minecraft mods, and other...

        Glad to hear your kid is learning to program! Out of curiosity, what is s/he learning?

        For projects that I worked on, I remember starting off with basic calculators, minecraft mods, and other simple projects I could do in an afternoon that were manageable for me & were interesting enough. I didn't learn through these projects necessarily, I just applied what I learned from the syntax videos and other stuff I did. I eventually branched out into more complex projects like mad libs, sudoku, crossword puzzles, random funny games (I did space invaders once, that was pretty cool; I think I have the executable around somewhere...) and others that I'm failing to remember right now.

        For motivation, it was kind of two fold in all honesty.
        First part is I just dove into the world of computers and loved it. I watched videos online about computers (specifically retro computers - shoutout Ben Eater and The8BitGuy!) and how they worked, which really stemmed from my love for retro gaming (NES, SNES, etc) as a gamer since I grew up with the GCN, PS2, and the Wii. From there it motivated me to learn more about computers, how they worked, and other stuff. Additionally, setting goals for myself and going through a structured learning experience really helped me figure out where I was, how I was doing, and what more I needed to do.
        Second part, my parents were definitely a good source of motivation too. My dad was a software developer earlier in his career so he was more than happy to explain and help me along with my learning which was pretty great. Also they rewarded my progress with stuff like food or video games or whatever else which, to kid me, was pretty great. Getting a used DS game from gamestop for completing my Java course? Absolutely! (I'm pretty sure that's how I got my copy of Partners in Time, but I digress...). Food and video games are certain motivator for me, but I didn't program & learn just to get those. I did it because I genuinely was interested in it and those only helped me maintain my motivation over time. And now I'm a Computer Engineering student focusing on computer architecture!

        For practical application, here's a bit of a thought to pass onto them: what is something that you personally enjoy (be it video games, math puzzles, books, etc) that you could create something new/inspired without having to learn something entirely new? I like video games so one of my projects I did was space invaders, and then later went on to code a card game.

        As for the solution issue, it's really all about the journey and what you learn through it more than the actual final deliverable in my opinion. You don't need to get it right the first try, but learning from that and moving on to be better is ideal. But I feel that, especially in college where you think you did something well but someone else comes along and does it faster and more elegant in less lines than you. There'll always be someone better than you, but you just gotta learn from your mistakes and move on. Easier said than done though.

        Sorry for the long winded post. Recently woke up so my brain is in chatty mode.

        2 votes
        1. [2]
          wanderer
          Link Parent
          Went straight into compilers and low level code. Tried to create a programming language. Stuff like that. He's not that great at it but likes to skip basics and jump straight into the advanced...

          Glad to hear your kid is learning to program! Out of curiosity, what is s/he learning?

          Went straight into compilers and low level code. Tried to create a programming language. Stuff like that. He's not that great at it but likes to skip basics and jump straight into the advanced stuff. Seeing as it's a hobby thing I'm not trying to discourage it; although he'd probably learn a lot more if he took his time with more basic things.

          For projects that I worked on, I remember starting off with basic calculators, minecraft mods, and other simple projects I could do in an afternoon that were manageable for me & were interesting enough.

          Woah, I never even considered modding. Thank you! This might be exactly what allows him to build "real" useful things. He's dabbled in making his own games but was quickly overwhelmed with the scope/scale of complexity there. People really underestimate how hard games are to make.

          Second part, my parents were definitely a good source of motivation too. My dad was a software developer earlier in his career so he was more than happy to explain and help me along with my learning which was pretty great.

          That's very reassuring. I'm a software developer as well and have had many long rambling sessions where I explained how stuff works. He enjoys listening and I enjoy rambling so it works out perfectly :D

          what is something that you personally enjoy (be it video games, math puzzles, books, etc) that you could create something new/inspired without having to learn something entirely new? I like video games so one of my projects I did was space invaders, and then later went on to code a card game.

          I will pass this on. Thank you!

          Sorry for the long winded post. Recently woke up so my brain is in chatty mode.

          I really appreciate it and enjoyed the read.

          1 vote
          1. desol8neb
            Link Parent
            Wow compilers and low level code, awesome! Good for him! That's some advanced stuff; I'd recommend starting with the basics as everything grows off of each other so for the full understanding of...

            Wow compilers and low level code, awesome! Good for him! That's some advanced stuff; I'd recommend starting with the basics as everything grows off of each other so for the full understanding of how everything works. Assembly is great, I'd recommend starting with ARM assembly. That's what I've been doing in my comparch classes in university. Cool stuff.

            Games are definitely hard to make lol, I did my fair share of 3D unity development when I was in middle school, that was pretty tough.

            Glad you enjoyed it! ^_^

  18. knocklessmonster
    Link
    Python was my first and is my favorite. It's fun and easy. Next was Ruby, which I'm rusty on. I liked that it was designed similar to Python, and used a Linux WM based on it, which made me want to...

    Python was my first and is my favorite. It's fun and easy.

    Next was Ruby, which I'm rusty on. I liked that it was designed similar to Python, and used a Linux WM based on it, which made me want to learn it.

    Then I learned C# for a class. My instructor taught C# then Visual Basic because he figured the class would riot if itbgotnharder in the second half, and, frankly, C# is great for learninf conventional structures and systems. I think it's the new Java for new programmers.

    The last I picked up was Javascript for my senior project. I had to hack a bunch of functionality into a Wix page since there was a series of miscommunications with the professor to the class. I felt I was the second best from a technical perspective, utilizing Wix's internal db systems and whatnot, but the class disagreed. I still loved learning it. I would recommend JS for similar reasons as C#

    I use Powershell for work and it is phenomenal, like shell on steroids and OOP. If you want a purely interpreted language it's a pretty solid way to go.

    To learn a language, solve problems with it. Learn two at once like Python and C#: do something in one, then do it in the other to reinforce the concepts and the language

    1 vote
  19. the-boy-sebastian
    Link
    I started with Python about ten years ago. Moved onto C and Rust, then Haskell and OCaml. Picked up bits of many other languages but nothing too in depth. Still use Python as my main language to...

    I started with Python about ten years ago. Moved onto C and Rust, then Haskell and OCaml. Picked up bits of many other languages but nothing too in depth. Still use Python as my main language to this day.

    1 vote
  20. PantsEnvy
    Link
    The second language I learned was machine code in HEX. (I didn't even know what an assembler was, nor could I have afforded one.)

    The second language I learned was machine code in HEX. (I didn't even know what an assembler was, nor could I have afforded one.)

    1 vote
  21. SweetestRug
    Link
    I started with C, used that for many years and then migrated to MATLAB for most of my analyses. I got stuck on a problem with MATLAB about six years ago and discovered Python and fell in love....

    I started with C, used that for many years and then migrated to MATLAB for most of my analyses. I got stuck on a problem with MATLAB about six years ago and discovered Python and fell in love. Most of what I do these days are in Python - the libraries are fantastic and I can pretty rapidly prototype anything I need for lab work in an afternoon. I am now learning Rust so I that can write faster library functions that I can “glue” together with Python when needed.

    If I ever have the time, I really want to learn Common Lisp, just because I would love to learn more about meta programming. Swift also looks fun to learn, but I am waiting to see if it will really be multi-platform enough to use.

    1 vote
  22. guamisc
    Link
    For something completely different than most of you: STL/IL ST FBD Ladder Logic Python marginal Java (because Ignition is written on Jython) VBA I program PLC/HMI/SCADA/MES. Tips: When programming...

    For something completely different than most of you:

    • STL/IL
    • ST
    • FBD
    • Ladder Logic
    • Python
    • marginal Java (because Ignition is written on Jython)
    • VBA

    I program PLC/HMI/SCADA/MES.

    Tips: When programming machines, elegant, space-saving, highly-optimized code is most often "bad" code. Most people who will have access and will troubleshoot/debug will know nothing about how actual programming works. There is no need outside of special cases to optimize at all. Physical systems are usually at least and order of magnitude slower than the control processor.

    1 vote
  23. whernside
    Link
    My first exposure to programming was when my family got our first computer - an Apple IIe. I was in late primary school, and my Dad showed me the basics of BASIC. I wrote a few simple programs...

    My first exposure to programming was when my family got our first computer - an Apple IIe. I was in late primary school, and my Dad showed me the basics of BASIC. I wrote a few simple programs that possibly still exist on a floppy disk somewhere.

    High School was an exciting time as I discovered the internet. The basics of HTML were learned, geocities sites were created. I kept building websites for the fun of it, and I slowly learned new things as their complexity increased. I learned about reusable code, databases, CSS. I landed on PHP/MySQL, self-taught using SitePoint books and forums.

    By University I was still coding for fun, still self-taught, landed a coding job and learned more about object-oriented coding. And Linux... I've never looked back!

    These days I still code, still mostly in object-oriented PHP and SQL, and mainly just to automate tasks and the like. Or check out how things work for various open-source systems. I also dabble in bash scripts, JavaScript where needed (e.g. when I want to use extended functionality of Postman). I can read/decipher other languages as needed (Perl, Python...).

    I've just always enjoyed programming. Still never taken any formal classes in it.

    No real advice to give, but what worked for me was identifying something I wanted to do, and then seeing programming as a tool to achieve that goal, learning as much as I need or want to along the way!

    1 vote
  24. manosinistra
    Link
    GW-BASIC. Learning to code is best done in the context of solving a problem. And then learn multiple different ways to do it, and think about why one way is better than the other, and vice-versa.

    GW-BASIC.

    Learning to code is best done in the context of solving a problem. And then learn multiple different ways to do it, and think about why one way is better than the other, and vice-versa.

    1 vote
  25. bugsmith
    Link
    The first language I ever picked up was ActionScript for Macromedia Flash. I desperately wanted to create some of the fancy menu screens you would often get ahead of watching a flash animation....

    The first language I ever picked up was ActionScript for Macromedia Flash. I desperately wanted to create some of the fancy menu screens you would often get ahead of watching a flash animation. That then progressed into wanting to make games, but I never did get very far with that.

    I then picked up JavaScript as I started learning about web development in my mid-late teens, and a touch of PHP.

    My first serious delve into learning programming was in Python. I know work as a Software Developer and that has ended up being my primary language at my job.

    Since then, I have picked up the following languages, to varying extents and in no particiular order:

    • C#
    • Java
    • Go
    • Rust
    • Elixir
    • Ruby
    • TypeScript

    I am currently trying to learn more about Rust, as the language fascinates me and I've never spent a great deal of time using such a language. My main problem with learning it is that I have no real use cases for such a language in my daily life - so it's slow going.

    Elixir has also really caught my interest as of late, so I will be spending more time with that language and learning more about functional programming concepts.

    1 vote
  26. DanBC
    Link
    My first programming language was BASIC on ZX81, then BASIC on a Sharp MZ80K. Both of these machines had terrible keyboards. Then the family got a PC, and so I moved onto HBASIC which was a...

    My first programming language was BASIC on ZX81, then BASIC on a Sharp MZ80K. Both of these machines had terrible keyboards. Then the family got a PC, and so I moved onto HBASIC which was a version of GW-BASIC that was for Hercules graphics cards. So, a lot of BASIC.

    https://commons.wikimedia.org/wiki/File:Sinclair-ZX81.png

    https://commons.wikimedia.org/wiki/File:Sharp_MZ-80K_computer.jpg

    I then stopped programming.

    Recently I'm trying to get into programming for the BBC Micro:Bit (which is a fun bit of kit. MS has an online simulator I'm trying to use blocks and also Python. And I'm trying to learn Python too, to support my child at school.

    1 vote
  27. bd_rom
    Link
    Turing. A language designed for, and taught in, Canadian schools, now long dead. Turned me off programming for life. Apart from messing around with some PHP server side, I never picked up coding...

    Turing.

    A language designed for, and taught in, Canadian schools, now long dead.

    Turned me off programming for life.

    Apart from messing around with some PHP server side, I never picked up coding again because that language was so useless it made it seem IMPOSSIBLE to do anything useful.

    So if anybody has any ideas of what a 40 year old tech inclined dude can learn to do something useful like, make audio plugins or write a freeware clone of double dragon 2, lmk.

    1 vote
  28. Pavouk106
    Link
    My very first was Borland Pascal at school. Then I did some Javascript, PHP, Flash in 2004-2005, then C amd Matlab at 2005-2006 - still at school. Nowadays I use Python for the most part when I...

    My very first was Borland Pascal at school. Then I did some Javascript, PHP, Flash in 2004-2005, then C amd Matlab at 2005-2006 - still at school.

    Nowadays I use Python for the most part when I need to get something done. Or Arduino IDE's C implementation.

  29. [12]
    gf0
    Link
    I dabbled first with Java from a not too great book (it talked about applets — I really am not that old!), but I actually learned programming from the Head First’s PHP book. That book is beyond...

    I dabbled first with Java from a not too great book (it talked about applets — I really am not that old!), but I actually learned programming from the Head First’s PHP book. That book is beyond genius, I still can remember whole stories/advices from that! (As for php, I had a huge dream of writing a webpage as a kid for some reason. One you could log into.)

    Later on I went back to Java mostly, but had a curiosity for more expressive, exotic languages as well so learned Scala, a bit of Kotlin, Haskell, later dabbled a bit with a LISP: Clojure, during university I also learned C, C++ and Rust.. huh, also worked a bit with Python, JS of course. But what I wanted to mention is this curve from less expressive to very powerful, and I think nowadays I came back to slightly less expressive ones (Java is still my go to language) — pragmatism is a very important factor, especially when one works in teams. I do enjoy the occasional overly smart code, but only for my one-off scripts. They should not be generally relied upon.

    I’m sure I left a few off, I generally take a look at every language, these are the ones I used a bit more than just checking out, but I’m a huge language fan. Feel free to ask about any (or even those I didn’t list).

    1. [11]
      Akir
      Link Parent
      I kind of miss applets. It's a shame they didn't stay around. Sure, they were a security nightmare and you can do it all in Javascript now, but it was nice just to have a choice. (I don't care...

      I kind of miss applets. It's a shame they didn't stay around. Sure, they were a security nightmare and you can do it all in Javascript now, but it was nice just to have a choice.

      (I don't care what you say, WASM doesn't count! It's cheating!)

      1. [10]
        gf0
        Link Parent
        What really is a bummer is that it was purely politics at play. There is absolutely nothing inherent in the JVM that could not have been solved (DOM could have been exposed, security is not an...

        What really is a bummer is that it was purely politics at play. There is absolutely nothing inherent in the JVM that could not have been solved (DOM could have been exposed, security is not an inherent issue, etc).

        Nonetheless, there is CheerpJ that can run Applets (even whole swing apps!) if you really wanted to :D

        1. [4]
          disk
          Link Parent
          There were some truly amazing things done with applets. I remember back in the day, there was an oscilloscope that used Java applets (served FROM the oscilloscope) to allow for remote control over...

          There were some truly amazing things done with applets. I remember back in the day, there was an oscilloscope that used Java applets (served FROM the oscilloscope) to allow for remote control over a local network. I spent some good hours trying to get it to work in a standalone applet viewer, to no avail.

          1 vote
          1. [3]
            Akir
            Link Parent
            Ugh, you just gave me flashbacks to a crappy DVR the company I work for bought which could only be remotely controlled via an ActiveX control. In 2020.

            Ugh, you just gave me flashbacks to a crappy DVR the company I work for bought which could only be remotely controlled via an ActiveX control. In 2020.

            1 vote
            1. [2]
              disk
              Link Parent
              God, ActiveX came and went in a turbulent frenzy of security issues, poor compatibility and overall shoddy APIs. I feel for South Korea, that had to use IE for much longer than we did because a...

              God, ActiveX came and went in a turbulent frenzy of security issues, poor compatibility and overall shoddy APIs. I feel for South Korea, that had to use IE for much longer than we did because a lot of their banking systems relied on ActiveX. Can't say I'm nostalgic for ActiveX the same way I'm nostalgic for applets/Flash (as bad as they were at times).

              How did you control the DVR in the end? By installing out of date versions of IE?

              1. Akir
                Link Parent
                Coincidentally (or not), our DVR was a Korean product. For the most part, we didn't; we just kept a screen and mouse connected to it to use it in-person. Then after a year or so I got tired of it...

                Coincidentally (or not), our DVR was a Korean product.

                For the most part, we didn't; we just kept a screen and mouse connected to it to use it in-person. Then after a year or so I got tired of it and did a deep-dive into google to find documentation that did not come with the thing and discovered that there was a phone app for it that was marketed under a completely different brand name. It was still terrible, but it worked!

                The hardware was crap too; it literally rusted away.

                1 vote
        2. [5]
          Akir
          Link Parent
          I hadn't heard of CheerpJ! Thanks for telling me about it. The one good thing about Oracle's disasterous handling is that there is so much Java code out in the world - especially in the corporate...

          I hadn't heard of CheerpJ! Thanks for telling me about it.

          The one good thing about Oracle's disasterous handling is that there is so much Java code out in the world - especially in the corporate world - that other people and corporations came out of the woodwork to step up and make sure that it's still just as useful. And it's not like there haven't been any improvements in the core language since the changeover. While I didn't like many of the changes, the Java ecosystem is still largely intact.

          1. [4]
            gf0
            Link Parent
            I am by no means a fan of Oracle, but their stewardship of Java has been probably one of the best corporate overtakes ever. They managed to keep most of the core stuff (crazy hard to do), then...

            Oracle's disasterous handling

            I am by no means a fan of Oracle, but their stewardship of Java has been probably one of the best corporate overtakes ever. They managed to keep most of the core stuff (crazy hard to do), then went on and completely open-sourced the language and made OpenJDK the reference implementation, removing basically every difference between their paid offering and that.

            While I didn't like many of the changes

            Could you please expand on which changes you didn’t like?

            1. [3]
              Akir
              Link Parent
              That was really me exaggerating. To be honest I only worked with Java for a relatively short time, so most of the changes happened after I stopped dealing with it for the most part, most of it is...

              That was really me exaggerating. To be honest I only worked with Java for a relatively short time, so most of the changes happened after I stopped dealing with it for the most part, most of it is just me being bitter about the increasing irrelevance of the parts of Java that I was working with like EE and JavaFX, which was honestly going to happen no matter how much support Oracle had chosen to put behind them.

              And of course, if I'm being completely honest, the thing about Sun being bought by Oracle is that they were bought by Oracle.

              I was also bitter about MySQL for a while until development kicked into gear and made it more competitive with the other options that were popping up.

              1 vote
              1. [2]
                gf0
                Link Parent
                Fair enough! Actually, JavaFX might just get JDKs that come with it bundled. It is definitely a niche, but I have recently taken it up again for a hobby project and I found it decent!

                Fair enough!

                Actually, JavaFX might just get JDKs that come with it bundled. It is definitely a niche, but I have recently taken it up again for a hobby project and I found it decent!

                1. Akir
                  Link Parent
                  Oh yeah; JavaFX was actually really fun to work in. Sadly I only ever used it when I went back to college, so it was only really ever used on a basic student project. And one that I stupidly never...

                  Oh yeah; JavaFX was actually really fun to work in. Sadly I only ever used it when I went back to college, so it was only really ever used on a basic student project. And one that I stupidly never archived for posterity. But that's OK because it was a group project done with group members that offered more hinderance than help, so I'm pretty sure the code was terrible quality.

                  1 vote
  30. dvc
    (edited )
    Link
    Started with C and Delphi in middle school, Java in high school. At university, our intro to programming was in OCaml to avoid skill disparity while also introducing functional programming. The...

    Started with C and Delphi in middle school, Java in high school.

    At university, our intro to programming was in OCaml to avoid skill disparity while also introducing functional programming. The course roughly paralleled SICP. My major was mathematics but transferred to physics after the third semester. There I got back to C, had to take a course in C++ for programme requirements, and later used self-taught Python for almost everything from automating measurements in the lab to thesis simulations.

    After graduation, a friend said he'd help me get a job, but I must show interviewers some SQL and R. There, by observation and osmosis, I picked up Wolfram/Mathematica and some Haskell (annoyingly similar to OCaml, which was the source of most confusions and mistakes). Still use them for stuff like Project Euler.

    Since then, and it's been almost a decade now, I've been really comfortable with just Python. I don't really have a tip beyond an assureance that learning your first language will be the hardest, because you learn how to teach yourself. This sounds glib, but as long as you practice and compare work with more knowledgeable people, you can learn anything.

  31. disk
    Link
    My first one was Visual Basic, I can safely say I don't remember much. Nowadays what I still do quite a bit is: C Python Javascript Some assembler subsets (Z80, RISC for some RT coprocessors, a...

    My first one was Visual Basic, I can safely say I don't remember much. Nowadays what I still do quite a bit is:

    • C
    • Python
    • Javascript
    • Some assembler subsets (Z80, RISC for some RT coprocessors, a bit of x86)
    • C#
    • Java
    • A few odd control system related languages (LAD, STL for Simatic PLCs, so on)
    • Kotlin (a tiny bit)

    I've been trying to get into Rust lately for WASM, since the C cross-compiling toolchain is not all that good compared to Rust.

    If Bash counts, then Bash as well.

    My main advice is "better is the enemy of good". You'll always develop and hone your skills organically as time goes by, and going for naive approaches in the beginning is perfectly acceptable. Once you are sufficiently proficient in a given language, you might look back and realise that some things are imperfect, but that's fine.

    Naturally, this doesn't apply to incredibly complex systems that need a well developed structure, where refactoring becomes a Herculean task if you don't have a sane foundation, so start with smaller projects and build your way up. As things increase in complexity, you'll have moments where you think to yourself "maybe there is a better way", and that is a perfect moment to research a given topic in detail to apply it to reality.

  32. metadaemon
    Link
    I knew a bit of Java before high school, but learned C++ through a book during. Mostly used it to automate some of my math homework. In college it was mostly Java, C# and Python. My internships...

    I knew a bit of Java before high school, but learned C++ through a book during. Mostly used it to automate some of my math homework.

    In college it was mostly Java, C# and Python. My internships were all over the place in terms of tech used.

    My first job was JavaScript and Ruby. Second job was Java, C++, JavaScript, Python and Ruby. Tons of SQL if you count that. Now I primarily do Typescript and Go. Most of my side projects are in Rust.

  33. [3]
    greyfire
    Link
    I dabbled in Basic, but my actual first language that got me hooked on programming was MUSHcode-- kind of a bizarre glob of C and LISP specifically for use inside text-based games. From there I...

    I dabbled in Basic, but my actual first language that got me hooked on programming was MUSHcode-- kind of a bizarre glob of C and LISP specifically for use inside text-based games. From there I wound up branching out into PHP, SQL, and C, all because I could use them inside the game too, and eventually that turned into working on webpages for the games, which has gone all over the place into JS and such.

    My only real tip: Learn any given language because you can do something you want to do with it. I'm a programmer because I was into gaming. If I hadn't wanted to do cool things on the games, I wouldn't be a programmer today. Have a project in mind, something that moves you. Figure out which languages can get you there. Even if you never finish the project, having a destination helps give you targets to hit while learning.

    1. [2]
      Akir
      Link Parent
      MUSHcode? Neat! Do you still hang out much on any MUSHen? It might be fun to hang out on one again.

      MUSHcode? Neat! Do you still hang out much on any MUSHen? It might be fun to hang out on one again.

      1 vote
      1. greyfire
        (edited )
        Link Parent
        I still keep one open, technically, though it's kind of mostly asleep. Some of the old guard drop in from time to time, but I'm not going to lie and claim it's active despite the odd person going...

        I still keep one open, technically, though it's kind of mostly asleep. Some of the old guard drop in from time to time, but I'm not going to lie and claim it's active despite the odd person going "I kind wanna run something--". I know some still are, though! I just... don't actually play any other ones myself, so I can't really point at any specifically.

        If you (or whoever) want the info-- it's an ancient World of Darkness game-- feel free to DM me. Who knows, maybe it'll wake back up.

  34. [3]
    TheBeardedSingleMalt
    (edited )
    Link
    The first language I learned was VB3 back in Jr Highish (97) from nabbing a copy of the builder via Warez rooms in AOL. Forced to learn Java in college and hated every second of it, haven't used...

    The first language I learned was VB3 back in Jr Highish (97) from nabbing a copy of the builder via Warez rooms in AOL.

    Forced to learn Java in college and hated every second of it, haven't used it since. But also touched on SQL, and VBS in Office.

    Since getting an IT job in healthcare it's been mostly SQL Server and TCL with maybe a touch of batch scripting sprinkled in.

    1. [2]
      Akir
      Link Parent
      Wow, I haven't heard of TCL in quite a while. If I may ask, what kind of work do you handle with it?

      Wow, I haven't heard of TCL in quite a while. If I may ask, what kind of work do you handle with it?

      1 vote
      1. TheBeardedSingleMalt
        Link Parent
        Interface programming, it's what our engine uses to translate messages.

        Interface programming, it's what our engine uses to translate messages.

  35. [2]
    IJustMadeThis
    Link
    I first dabbled in coding by building simple websites with HTML during the era of dial-up internet. I took a Turbo Pascal class in high school but I haven’t used it again. My career is bare-metal...

    I first dabbled in coding by building simple websites with HTML during the era of dial-up internet.

    I took a Turbo Pascal class in high school but I haven’t used it again.

    My career is bare-metal firmware development in C, which I first dabbled with in my EE courses, but didn’t get a really good working knowledge of until my first job.

    I’d like to do more OO development, and have had the opportunity to learn Python on the job, but I have only written one module which attempts to do OO development correctly (but would probably make OO developers uncomfortable), otherwise it’s been scripts that automate some simple processes. If you asked me what SOLID means I’d have to Google it.

    1. Akir
      Link Parent
      You'd be surprised how far you can go without dealing with objects or OOP. Well maybe not surprised, since you're already basically living it. What I'm trying to say is that in the grand scheme of...

      You'd be surprised how far you can go without dealing with objects or OOP. Well maybe not surprised, since you're already basically living it. What I'm trying to say is that in the grand scheme of things it's just another tool that you should have in your toolbox, but there are other options.

      If you want to do a project featuring OOP, you might want to try your hand making a GUI frontend for some tool you use, since most GUI libraries are built around OO principles.

      1 vote
  36. exces6
    Link
    Visual Basic to start, followed by Java, ASP.NET, and SQL. Since then I've dabbled in PHP and played very minimally with jQuery/JavaScript on rare occasions. Certainly not an expert in the latter...

    Visual Basic to start, followed by Java, ASP.NET, and SQL. Since then I've dabbled in PHP and played very minimally with jQuery/JavaScript on rare occasions. Certainly not an expert in the latter two by any means.

    Once I got my background in OOP via Java and ASP.NET, I just used that general programming framework to pick up things here and there for whatever project I'm working on at the moment. Programming falls further by the wayside for me as time goes on, and I think I missed that critical period where scripting languages were the new hotness. Seems like that is where everything is going these days and I wish it felt more natural to me, though if I actually needed to use one I'm sure I could pick it up easier than a 100% beginner.

    SQL is probably the most elegant of the ones I know. It's so beautiful in its simplicity and power. I'd highly recommend learning SQL if you want to do backend development. It's really not hard once you get the hang of it and it's an incredible skill to have.

    The best way to practice is to find or create a project even if it does something simple at first. It will force you to play around and problem-solve which is where a lot of programming knowledge comes from. Having the ability to analyze a new problem and solve it creatively using general coding principles is vastly more valuable than knowing every last detail of one specific language.

    All of these online courses like Udemy and whatnot were just a smidge after my time, and since I just do programming on the side these days I never needed to check them out. But I hear good things and that might be a good place to start. IIRC Udemy was the most preferred by programmers in the StackOverflow survey that was posted here earlier today.

  37. [4]
    Dotz0cat
    Link
    My first language that I learned was Java. I learned it in high school computer science. My advice is don’t learn Java. I now also know c and c++. Along with bits of python and such. My advice for...

    My first language that I learned was Java. I learned it in high school computer science. My advice is don’t learn Java.

    I now also know c and c++. Along with bits of python and such. My advice for c is learn pointers quickly. Also some more general advice, once you have learned one, you can easily pick up any other language.

    1. [3]
      gf0
      Link Parent
      Why do you think that?

      My advice is don’t learn Java

      Why do you think that?

      1. [2]
        Dotz0cat
        Link Parent
        I never said that my advice was good advice. Part of that is because it’s an interpreted language. Another part of it is because there are better languages out there. Unless you need something...

        I never said that my advice was good advice. Part of that is because it’s an interpreted language. Another part of it is because there are better languages out there. Unless you need something Java specific, it may be best to use another language.

        1. gf0
          Link Parent
          Java is not an interpreted language. It is a statically compiled language to an intermediate, cross-platform representation (a class file), which is then may be interpreted, or AOT/JIT compiled....

          Java is not an interpreted language. It is a statically compiled language to an intermediate, cross-platform representation (a class file), which is then may be interpreted, or AOT/JIT compiled.

          The most common form of execution indeed starts out by interpreting this class file, and then selective, often-run parts of it are compiled just-in-time to native machine code. So for all practical purposes, the code is run as native code for the majority of time.

          2 votes
  38. Ember
    (edited )
    Link
    Started with C using Harvard’s free online CS50. Unless you count Scratch as a programming language, which CS50 starts with :) or I guess TI BASIC, which I used to program Snake into everyone’s...

    Started with C using Harvard’s free online CS50. Unless you count Scratch as a programming language, which CS50 starts with :) or I guess TI BASIC, which I used to program Snake into everyone’s calculators in grade school. Not that I really learned TI BASIC, just copied from the internet.

    After C, I learned Java in an independent study class. I remember being really annoyed with the increased boilerplate (say it three times fast, “public static void main args”). But using the BlueJ IDE really helped me understand the basic concepts of OOP.

    Then in a database course in university, we were given a project to write a database-driven site using PHP. And that opened up the whole world of programming for me, in several ways:

    1. I learned why PHP as a language is disliked.
    2. I learned the hard way why libraries are important, e.g. for database access (I unknowingly wrote my own hacky ORM because I was frustrated with copy-paste).
    3. I learned the hard way why CSS frameworks exist (we didn’t use one and the CSS took ages).
    4. I learned the hard way why front end and backend need to be separate (we just mashed PHP together into HTML, it was a mess).
    5. I learned how project structure is important in team projects. And how routing needs to be thought out. And dividing up work to keep everyone busy, instead of doing it all myself.

    So yeah even though I’ll never touch PHP again, that disaster of a group project forced me to think hard about how real-world teams build software.

    Then finally in my first job, I started learning C# to build tools for our team. We weren’t a full-fledged development team; it was more like the kids corner where new-grads got dropped to write SQL scripts. But all that opportunity for tooling and optimizing our repetitive tasks gave me the chance to read the company’s existing codebase and fall in love with C#. By the time I left that company, I’d moved to a real dev team and rewritten about a dozen micro-services from .NET 4.5 into the latest version of C# and .NET 6.

    So now that I’m elsewhere, working in Kotlin and Swift and JavaScript, I’m still missing C#. Kotlin is super nice, a massive improvement over Java. And Swift is… intriguing. But I still miss C#; writing backend APIs in JavaScript just feels wrong.

    C# and the .NET platform has just so many built-in, well-designed first-party libraries. Options, dependency injection, configuration, caching, logging, the entire generic host… and it’s all well-documented.

    So yeah if you want to learn backend, C# all the way.

  39. Squishfelt
    Link
    Does NWScript count as a programming language?

    Does NWScript count as a programming language?

  40. ANuStart
    Link
    SQL SQL and more SQL

    SQL SQL and more SQL

  41. RoyalHenOil
    Link
    I am just a hobbyist (I've never worked professionally in software development and would need a lot more experience than I have if I wanted to), so maybe take this with a grain of salt: The first...

    I am just a hobbyist (I've never worked professionally in software development and would need a lot more experience than I have if I wanted to), so maybe take this with a grain of salt:

    The first language I really took a deep dive into was C++ because that's the language my partner works in. That was the language where I was first exposed to major programming concepts like loops, lists, and classes. However, I would probably not recommend that as a starting point. It just made sense for me to start there because I could ask my partner questions. (I think he enjoyed helping me, because he later went on to become a programming teacher.)

    After that, I learned Lua, which I quite liked, but I haven't used it since. I wouldn't say that I know it now, but I'm sure a lot would come back to me. I think it's probably the most easily learnable language I've dabbled in.

    Then I took the first half of CS50 and learned C, which I really liked. That class really helped me grok how memory works in particular, and although many newer languages will manage memory for you, I think it's still extremely useful to understand what's happening under the hood. Unlike Lua, I do still use C from time to time because it's what you use in Arduino projects.

    I've also toyed around with C#, though I wouldn't say I've sat down to learn it. It has a lot in common with C++, so I just kind of jumped in and pretended I already knew it, which was enough for the simple hobby projects I do.

    I've made some false starts trying to learn Python and GDscript (the language Godot uses, which has Python-like qualities), and I just can't get my head around them. Some people find them easier, though.

  42. [2]
    spacedragon
    Link
    first language? LOGO Writer on an IBM PCjr. gotta make that turtle go go go

    first language? LOGO Writer on an IBM PCjr. gotta make that turtle go go go

    1. olrik
      Link Parent
      Oh yeah, I remember the turtle with cardboard cards that told it to go left or right, this was when I was about 8 or 9 years old.

      Oh yeah, I remember the turtle with cardboard cards that told it to go left or right, this was when I was about 8 or 9 years old.

  43. codesplice
    Link
    TI-BASIC, on the graphing calculator I had in middle school. I knew that you could play games on those things but I couldn't get my parents to spring for the cable that would let me download them...

    TI-BASIC, on the graphing calculator I had in middle school. I knew that you could play games on those things but I couldn't get my parents to spring for the cable that would let me download them directly. So I would print out the code and spend days manually entering it onto the calculator during classes (I was not a very good student). I'd inevitably make a few typos and then have to spend a while debugging the code I'd just entered. I learned a ton in the process, and eventually started writing my own little apps and games.

    For a while in high school I thought I wanted to be a programmer, so I'd check out books from the library and read through them to "learn" various languages. I'd be able to follow along with exercises and read existing code to determine what it did and how it worked, but I never really understood the languages enough to create anything on my own. I went to college to study computer science and after my first view classes on C and Java kind of decided I didn't actually want to be a programmer.

    So I shifted focus to infrastructure operations (and then DevOps), and I've picked up a few languages on an as-needed basis - whatever would help me to automate a process or solve a specific problem. In the past I did a lot with VBScript and JavaScript, and I've used Python fairly extensively. I've dabbled a bit with Go lately but haven't made a whole lot of headway there yet.

    I've found it a lot easier to learn a language when I needed to use it for a specific thing. Look for a tedious task you'd like to automate or a specific problem you want to solve, then figure out how to do it. You learn a ton in the process - and hey, you'll (hopefully) wind up with a cool tool once you've done it!

  44. olrik
    (edited )
    Link
    I started with MSDos batch, then Pascal, Then BASIC, then VisualBasics, C, C++, Ada95, Java, Javascript, Python and then I stopped and became a brewer. edit: I also dabbed into Lua and some other...

    I started with MSDos batch, then Pascal, Then BASIC, then VisualBasics, C, C++, Ada95, Java, Javascript, Python and then I stopped and became a brewer.

    edit: I also dabbed into Lua and some other functional language which name I forget.

  45. Eji1700
    Link
    1st language - VBA Others- SQL Python C# F# (primary) VBA being my first is because I came from the business side. I just wanted to automate boring/rote work, and it helped me learn because I knew...

    1st language -
    VBA

    Others-
    SQL
    Python
    C#
    F# (primary)

    VBA being my first is because I came from the business side. I just wanted to automate boring/rote work, and it helped me learn because I knew what I wanted to output, had a built in GUI already (excel), and had very clear goals and real use cases to improve.

    Personally, having a use case first was the big step that got me over the initial hurdle of coding. I'd tried a few times before, and just didn't know what to do with it.

  46. R51
    Link
    I started with Java, I used to play a game called RuneScape and at the time there was a whole thing where people kinda-sorta replicated the game. The client had all the 3d models, so some people...

    I started with Java, I used to play a game called RuneScape and at the time there was a whole thing where people kinda-sorta replicated the game. The client had all the 3d models, so some people coded very basic functionality and the rest was basically up to whoever wanted to add stuff into the game. So I started just copy-pasting from tutorials on the forums, then kinda started to figure out how it actually works and started modifying things myself. Then I learned some c++ and after that, I was able to do a lot cooler stuff on the private servers with my newfound knowledge. Now I just use whichever programming language is closest, be it bash, c, or php, javascript, whatever. I do want to brush up on java again to fiddle with Android apps, I barely figured out how to compile without having to use Android studio but I haven't had much time to do anything past some hello world and button logic.

    edit: I lied, first language was visual basic when visual basic 6 was a thing. That was super fun. I was a stupid kid though so I used it for evil, but nothing too evil :)

  47. zoroa
    Link
    The first language I ever wrote anything substantial for was TI-Basic, much to the chagrin of all my high school teachers. Languages I have a ton of experience with Python C++ (11 is the most...

    The first language I ever wrote anything substantial for was TI-Basic, much to the chagrin of all my high school teachers.

    Languages I have a ton of experience with

    • Python
    • C++ (11 is the most recent standard I spent a lot of time with)
    • Typescript
    • Standard ML

    Languages I'm comfortable with

    • Kotlin
    • Lua
    • C (99)

    Languages I'm learning

    • Rust

    I took a Programming Languages course in university which had use jumping between 6-7 languages built for the course. The professor stressed the fact that it wasn't really the languages you knew that was important. It's your ability to approach ones that you don't know yet.

  48. space_cowboy
    Link
    The first programming language I learned was Applescript. I made heavy use of applescript libraries and satimage smile to add regular expressions and interfaces to GUI apps. Later, I learned to...

    The first programming language I learned was Applescript. I made heavy use of applescript libraries and satimage smile to add regular expressions and interfaces to GUI apps.

    Later, I learned to program my graphic calculator in BASIC, so I could get through my community college coursework more easily.

    Later still, I learned javascript, to build a professional website.

    Next came BASH, then PHP and SQL, which I used for web development.

    Later, I learned python, ruby, some c, some java, and at the moment I'm learning racket.

    If you want to learn a programming language, I've got good news for you: there is a website that makes learning new languages easy. It's called exercism.org. I highly recommend it. You'll have to go to the official documentation for the language you want to learn to complete some of the exercises.

    More generally, the best way to get good at programming is the same as the best way to get good at literally anything else: you have to do it. Again, and again, and again. You will suck at it at first. And because programming is a fractal well of complexity, you will probably always feel like you kind of suck at it, even when you get pretty good at it.

  49. MaoZedongers
    Link
    I started with Java in highschool, then SmileBasic, then I learned TI-Basic, then learned C, then lua, then very minor bits of x86 assembly, then some C#, then C++, then MIPS-32 assembly, then...

    I started with Java in highschool, then SmileBasic, then I learned TI-Basic, then learned C, then lua, then very minor bits of x86 assembly, then some C#, then C++, then MIPS-32 assembly, then python. I mainly use Nim for projects now, but I've revisited Zig as well while I was following a tutorial on writing a basic Vulkan application since it has pointers and slices that know their lengths, it was much nicer than C++ for it and imo fit it better.

    Any time I need a GUI I reach for Java since Swing is easy and has a gui form builder.

    C# is probably next best, or used to be, idk I haven't tried Avalonia yet.

    In comparison, native guis are a nightmare.

    I'd like to write them in Nim to leverage layout DSLs and other nice stuff and still get native guis, but the gui libraries for it are either unmaintained or aren't mature yet, I think SDL2 was your best bet because it has a wrapper and tells you how to static link it as well, there's an sfml wrapper that works but I couldn't get it to static link. There was another library that depends on sdl2 called nimx which does have a layoutdsl but surprisingly also has an option to switch to winapi/x11 instead of sdl2, it seems like the most promising one for the future.

  50. WarrickSothr
    Link
    I was introduced to programming with Visual Basic in high school and swore I'd never write software for a career and yet here I am with ~11 years of experience doing what I said I'd never do. In...

    I was introduced to programming with Visual Basic in high school and swore I'd never write software for a career and yet here I am with ~11 years of experience doing what I said I'd never do.

    In no particular order these are the languages I have functional familiarity with.

    • Java 7+
    • Python 2.7 and 3+
    • C#
    • Lua
    • Kotlin
    • Javascript/Typescript (vastly prefer having types as I rely on them in other languages)
    • Go
    • Common Lisp, Scheme (because who doesn't love perenthesis inception, perenception?)
    • C
    • Rust

    For my day to day use I mostly stick with Python and Rust because they fit my needs well enough and they both have a mature and growing library ecosystems. Python is fast enough for most things and inter-operating with Rust is fairly simple when additional performance or functionality is needed.

    There's a certain tenacity that is needed to learn a new programming language and my advice would be to find the project or idea that drives you to keep practicing with it. For me it was an image comparison library I built to help perceptually compare images so that I could identify near duplicates and make informed choices on how to cleanup my photography backups. For some people it's building a LISP, and for others making a game. It needs to be something that motivates you to stretch your skills, but small enough to fit in your personal attention span.

    Above all else keep it fun and embrace the failures when they happen. We all spend a lot of time failing before we become competent in a language and after that struggle to learn we get comfortable in our new status quo. So be sure to not lose your comfort with failure, so that when you want/need to learn a new language it's not a shock to go back to square one.

  51. larcohex
    Link
    Started from QBASIC in high school, then we were using Python and C++ at university, now I primarily use JavaScript/Typescript. I would advise to read this series. It goes into JavaScript's ins &...

    Started from QBASIC in high school, then we were using Python and C++ at university, now I primarily use JavaScript/Typescript.

    I would advise to read this series. It goes into JavaScript's ins & outs and you can always find something to learn from there.