It seems like there are about 22 27 46 219 320 493 1840 active subscribers here. I have a few questions for you all.

  • Which programming languages do you regularly use?
  • Which are your favorite to work with and why?
  • Which do you have interest in trying and why?
  • It’s not really a coding language but I use SQL a lot for work. Occasionally Python and R. As you can probably imagine with this list, I’m a data scientist.

    My favorite to work with is actually autohotkey, which I use to automate stuff, because it can be a fun little challenge to figure out how to automate based on the system it’s running on and what I’m trying to do.

    • Rust and Python. Python for work
    • Rust is by far the best language I’ve ever used and I’ve used a lot of them. It really can do everything and is reliable and safe as well.
    • I want to convert all of our projects at work to Rust as well if I had it my way entirely. Only thing to do is train my team on using it.
    • Go, typescript for work; Rust, C# at home
    • The simplicity of go is very welcome, rust is nice because it feels like I can do anything yet it nonetheless keeps me from being too stupid.
    • I’ve dabbled in SBCL and Haskell before, but I’d like to take the time to properly learn one of them
  • C# is the only language I use professionally and personally. It’s easy to pick up and a jack of all trades. It does the job for pretty much anything I’d want it for. Especially now it has Blazor, I don’t even need to faff around with frontend frameworks and deal with javascript/typescript, which I never enjoyed doing.

    (That said I did recently play around with Svelte, and if you do like frontend frameworks I found it to be the best out there personally)

    • How does Svelte compare to Vue, if you’ve tried Vue before? With my degree in Computer Engineering, I never really touched much on the web until I started playing with it for my own projects after I graduated

      • I’m afraid I’m not familiar with Vue, I’m mostly comparing to Angular. The main reason I like Svelte is because it’s very quick to get up and running with very little boilerplate. Things that I found quite complicated to implement using Angular can be done in one line (or three) with Svelte. Passing values between components, routing, it’s all super simple. If you’re mostly interested in backend and just want something easy to use for the front-end I think it’s ideal. Documentation isn’t bad either.

  • Learnt Java first, then moved on to c# and dotnet. Job meant I needed to learn c, then shudder managed c++ then plain c++. Got pretty good at c++ and then moved on to Rust and haven’t looked back, had to also pick up python recently. At some point I also learnt f# and a bit of haskell.

  • I regularly work with C#, JavaScript, TypeScript, and PHP. Of those, C# and TypeScript are my favorites. I’m also planning to try out Rust eventually, but atm I don’t have time to learn such a complex language.

    • C# - Very clean and concise syntax, performant runtime, excellent standard libraries and tooling. Later versions (.NET Core and newer) have top-tier async, generics, and DI implementations. Biggest downsides are reliance on a runtime and lack of union types. Ever tried to implement ActivityPub (or any other polymorphic API) in C#? Not a good time.
    • TypeScript - the best type system that I’ve ever worked with. With a bit of thought and planning, you can model complex requirements directly into the type system. The language is comfortable and easy to use, although some advanced types can become hard to read. Its biggest flaw is that its tied to JavaScript. I would love to one day see a language that’s basically just C# + TypeScript’s type system.
    • JavaScript - I only use it in legacy code. For anything else, I just use TypeScript.
    • PHP - I actually have a fondness for PHP, even though its not one of my favorite languages. I’m still maintaining one hobby website in full-custom PHP 8. The language has developed a lot recently and has resolved many of the classic problems that made it so awful in the PHP 5 era. Its well on its way to becoming a viable option once again.
    • Rust - Rust is the first language that I believe has a real chance of displacing C++. It solves the same problems with dramatically more safety, and has all the bells and whistles of a modern language to boot. I probably wont use it much in my work (I mostly develop LOB apps and websites), but I do expect it to gain widespread use within low-level and high-performance applications over the next 10 years.
    •  ericjmorey   ( @ericjmorey@beehaw.org ) OP
      link
      fedilink
      English
      411 months ago

      TypeScript - the best type system that I’ve ever worked with. With a bit of thought and planning, you can model complex requirements directly into the type system. The language is comfortable and easy to use, although some advanced types can become hard to read. Its biggest flaw is that its tied to JavaScript. I would love to one day see a language that’s basically just C# + TypeScript’s type system.

      I feel like you’d appreciate Ocaml, ReasonML, and ReScript.

      The future of Rust seems promising. I’m also intrigued by Odin as an alternative to C.

  • For work: Java (legacy projects, JSF, Old Spring versions) and JavaScript.

    For stuff y do for friends and myself: Typescript, PHP (WP, Laravel)

    I’d say I’m most productive in Typescript right now.

    I’m learning some Rust. Want to look into Go soon.

  • I don’t have any professional experience or ambitions, but:

    Use nim for personal projects. It feels like there is less boilerplate than others I’ve tried and it felt more natural to me than python. Faster than python and compiles. Plus has a javascript backend option. Pretty neat language all in all and does an ok job from scripting to web.

    Interest in trying? Probably Kotlin. Seems like another language with wide utility.

    • I use whatever language can accomplish the goal. That’s been C mostly ( and paid for ). Recently more and more Golang for hobbies and new projects. Definitely some python code.

    • Favorite has been lua, embeddable, lightweight, quick, and doesn’t have bloat

    • interested in learning Nim, Zig, and Rust.

    • Prehistoric C++: Core language for my main project at work. Unfortunately we’re stuck with C++98, but it’s still a massive improvement on C.
    • C: For some of the older parts of the aforementioned project
    • Python: For test automation for the aforementioned project, also rapidly becoming the main language within the community that covers my secondary work project. I used to really not care for Python, but to the extent it displaces MATLAB I’m 100% in favor of it. I’ve also grown to really like it in the test automation role. The only thing I could wish for is that it had a mode that required type hints across the board.
    • Modern C++: Used for my other work project. While I do think that C++11 is a huge step up from C++98, I think the later standards have added a lot of cruft and very little value. Given the choice I would definitely take modern C++ over C++98, but I’d really rather be writing something like Rust
    • Java: This was a mistake I made years ago when I started a project as a very junior developer. Unfortunately I work in a research context where even as the junior developer I was still the most experienced developer on the team when it came to some things. We needed a REST API for this project and doing it in C++ didn’t seem feasible at the time (no idea if it’s better now). Some other teams in my org where using Spring so I jumped on that bandwagon. In hindsight, I wish I had written the API in Python since we’re slowly moving a lot of our C++ code into Python on that project now.
    • Shell: For automation that’s just a little too easy to bother with Python
    • Rust: Only used on hobby projects for now, but it scratches the same itch as C++ a thousand times better. The language itself is wonderful once you get used to the borrow checker and cargo is an incredibly valuable part of the ecosystem as well.
  • For work I currently use C and python mainly, and for some personal projects I’ve been using python backends with JS/Vue frontends.

    I really enjoy Python, but as I use it more I’ve found the quality of the docs to be an impediment. They’re hard to reference quickly.

    I really want to start using Rust, but it’s not really applicable to the kinds of projects I’m currently working on. I’ve started picking up some Clojure and PHP for two open source projects that I’ve started contributing to.

    • I really enjoy Python, but as I use it more I’ve found the quality of the docs to be an impediment. They’re hard to reference quickly.

      this, and the need to understand the wordpress core, pushed me into php long ago; python used to be my primary language.

      since about the beginning of the year, php docs now are often behind captchas. i don’t know what in my environment triggers them, but i know they trigger me, and so i’ve been refactoring things back into python. mediocre and accessible docs >> somewhat better docs behind captchas. it’s impossible to navigate the changes for change’s sake between php 7 and 8 when you keep getting stopped to identify which fuzzy photo is of a dust cloud.

      these are my home projects. for work, it’s typescript/js/react against java/spring back end. i code mostly the front end now, but since i’ve also done java, i can make better tickets when there’s a back-end problem :)

  • I teach a class taught in OCaml. Despite that, I don’t really like OCaml. It’s good for education but IMO not that great for actually using it. My brother works at Jane Street and even he agrees… Like, it’s fine, but not great.

    Beyond that I make regular use of Haskell and Python for my graduate research and personal projects. I recently took a course in Java, but unless I don’t have a choice, I’d rather use Kotlin. I’m also involved in the hardware simulator Turing Complete, so a lot of my side projects lately have been ETCa assembly programs.

    I want to learn Rust and Scala, probably in that order.

    edit: I also quite like Scheme and I used it for advent of code last year. Unfortunately I don’t get opportunities to use it much, but if I ever get to teach a compilers course, I want to try the “reverse nanopass” approach that is currently used, I believe, at Brown University.

    • I don’t really like OCaml. It’s good for education but IMO not that great for actually using it. My brother works at Jane Street and even he agrees… Like, it’s fine, but not great.

      I don’t get to converse with a lot of OCaml users. What makes it “not great”? Is it the tooling?

      What is your graduate work on?

      • The tooling is actually OK, provided you work on Linux. If you work on windows, the tooling is basically telling you to go get Linux.

        It doesn’t capture a lot of what many functional programmers consider the essence of FP: the language, and the people who use it, actively encourage mutable state in programs, and the type system is not powerful enough to capture useful abstractions like functors (generalized containers) or monads (generalized patterns of computation).

        There are also some specific language design decisions that I don’t like. For example, this code typechecks:

        let id : 'a -> 'b = fun x -> x;;
        

        The 'a -> 'b is a type annotation that says “you give me anything of type 'a (a type variable), and I’ll give you back something of type 'b.” That’s complete bogus - that’s not possible. It typechecks because OCaml goes “OK, this is fine as long as 'a and 'b are the same variable,” and then for the rest of the typechecking process, that’s what happens. id actually gets assigned the type 'a -> 'a. In the best case, this is confusing and occasionally useful to do what other languages do with “type holes.” In the worst case, it’s actively wrong. Using different type variables in a type can provide static guarantees that some things cannot mix, and with OCaml that is simply not possible for a declaration like this one. You can do it, but with a lot more boilerplate. Compare that to Haskell, where the right behavior is the default, and you can obtain a type hole just by using a variable name that starts with _.

        My graduate work is currently on type error provenance. You know some piece of code has a type error, but where is the actual problem? This is a hard problem that compilers are notoriously bad at answering.

    • PHP. It remains the only language which you can just FTP onto a server and have working. No need for package managers, docker instances, funky routing, or complicated frameworks.
    • Python for anything local. No waiting to compile. Vast library of useful features. Mostly sane syntax. And, again, most machines have it by default.
    • Drakon. Perfect if you want to visually sketch out an algorithm. Like Scratch, but for adults.