this post was submitted on 26 Jan 2024
85 points (92.1% liked)

Programming

17022 readers
274 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

I've been working with a Javascript (+ TypeScript) + Java + SQL stack for the last 10 years.

For 2024 I'd like to learn a new programming language, just for fun. I don't have any particular goals in mind, I just want to learn something new. If I can use it later professionally that'd be cool, but if not that's okay too.

Requirements:

  • Runs on linux
  • Not interested in languages created by Google or Apple
  • No "joke languages", please

Thank you very much!

EDIT: I ended up ordering the paperback version of the Rust book. Maybe one day I'll contribute to the Lemmy code base or something :P Thank you all for the replies!!!

(page 3) 50 comments
sorted by: hot top controversial new old
[–] Andy@programming.dev 2 points 7 months ago (1 children)

Factor!

It's incredible and elegant and defies some common categorization.

I've put some of my favorite resources in the sidebar of https://programming.dev/c/concatenative and I'm happy to walk through any particular challenges/examples -- I've done about the first week of Advent of Code with it this year, and the most recent handful of Perl Weekly Challenges, and some basic Euler problems.

[–] xigoi@lemmy.sdf.org 2 points 7 months ago (1 children)

Re the sidebar: How are Nim and Roc partially concatenative?

[–] Andy@programming.dev 1 points 7 months ago (3 children)

I may be expressing it poorly and inaccurately, but what I mean is that in Nim you can re-order arguments and functions to start with some data followed by a series of transformations. The following two lines are equivalent:

parse_int(read_line(stdin))
stdin.read_line().parse_int()

Roc offers a similar flow with their |> operator. Here's a snippet from one of my Advent of Code 2022 solutions:

partOne =
    "input.txt"
    |> getData
    |> Task.await \data ->
        data
        |> getRangePairs
        |> List.keepIf pairHasStrictSubset
        |> List.len
        |> Num.toStr
        |> Stdout.line
[–] xigoi@lemmy.sdf.org 1 points 7 months ago (1 children)

That’s true, but if the transformations have more than one argument, they go after the name:

data.split(",").join(";")

as opposed to concatenative programming languages, where all arguments go before the name and there’s no visual indication of the structure:

data "," split ";" join

Also, there are more languages with this feature, for example D, VimScript or Koka.

[–] Andy@programming.dev 2 points 7 months ago (1 children)

That’s true, but if the transformations have more than one argument, they go after the name

Yup, I understand. That's why I've not put them in the concatenative section.

Also, there are more languages with this feature, for example D, VimScript or Koka.

Thanks, maybe I'll add them to the sidebar! I hadn't heard of Koka.

If you have a suggested heading/description to replace "partially concatenative" I'm interested. Function chaining? And I'm not sure but maybe execline is actually concatenative and needs to be moved out of that section.

[–] xigoi@lemmy.sdf.org 1 points 7 months ago* (last edited 7 months ago) (1 children)

I think “uniform function call syntax” is the established term for this particular feature.

[–] Andy@programming.dev 1 points 7 months ago

Thanks. I know that's the case for Nim's flexibility, but I didn't think it applied to the pipe operator stuff like in Roc. I'll do some reading tonight to confirm.

load more comments (2 replies)
[–] Panda@programming.dev 2 points 7 months ago

I love C#, but F# is also super fun and worth checking out.

[–] rikudou@lemmings.world 1 points 7 months ago* (last edited 7 months ago) (1 children)
  • modern PHP (version 8.x with some modern framework like Symfony)
  • Typescript
  • C#
  • C++ (this one's always fun, I recommend the Qt framework since you have a Java background - it would be easier than raw C++)
[–] xmunk@sh.itjust.works 1 points 7 months ago* (last edited 7 months ago)

Qt is an amazingly good C++ framework that encourages a much safer approach to using the language that emphasizes const refs over pointer insanity.

Also, the library function are quite powerful.

[–] yetAnotherUser@lemmy.ca 1 points 7 months ago (1 children)

If you want something that feels more quirky, go with Lisp.

[–] samc@feddit.uk 2 points 7 months ago

I've been having a lot of fun with scheme lately (specifically guile, but I don't think it matters much). It's a very stripped down language compared to common lisp, so I felt it was easier to get started with.

[–] nayminlwin@lemmy.ml 1 points 7 months ago

If you haven't done any Clojure, may be Elixir?

[–] alanstateq@sh.itjust.works 1 points 5 months ago

When I first ventured into programming, I felt like a complete novice. With no prior experience, diving into the complex world of coding seemed daunting. That's when I stumbled upon full stack development service. These services offered a comprehensive solution, covering everything from front end to back end development. It was like having a guiding hand through the intricacies of programming. With their expertise, I was able to navigate the complexities of software development with confidence. Full stack development services became my stepping stone into the world of programming, helping me transform from a novice into a proficient developer.

[–] benjhm@sopuli.xyz 1 points 7 months ago* (last edited 7 months ago)

I like Scala:

  • multi-paradigm, you can explore many ways of doing something, within one codebase - arguably the most complex language, if you want, but doesn't have to be: start simply, later scales robustly
  • compiles and interoperates with JS, JVM, native
  • Scala3 dropped brackets - easily readable like python
  • great tooling (recently) - compiler infers so much -> less puzzles / testing
  • developed mainly in europe, not controlled by big-tech

Fwiw, here's my interactive climate system model running in pure scala.

load more comments
view more: ‹ prev next ›