Shill for 'fringe' programming languages

Unless you're using LFS, your distro has a package manager already. If you use things like AUR anyone can add a package, so even if the lib only has ten users you can find it there. That's much simpler than having to deal with one package manager for each language.

Can you name something like the AUR that's actually cross-platform? If the lib has ten users that might not mean that any of them use Arch. Realistically, even if the lib has a thousand users there's a good chance none of them is an Arch user who cares enough to package it for the AUR.

Exactly this. And unless a library is written in or has bindings or C, it's useless clutter for everyone else not using that particular language.

Any library is useless clutter for things that don't use it. That C-centrism is a ridiculous red herring.

this

why tabs is still an option with other programming languages, I have no idea.

anyone up for DSLs?

Like, Hermetism in programming languages?

i suggest ROS. ROS is a collection of tools and libraries for robotics. it isn't under appreciated but may be less well-known on Holla Forums. if you want to do anything serious in robotics it's industry standard.

ros.org/

you should learn it so you can get a job and stop pajeet from taking the poo to robotics which is a respectable goal.


inane. opinion discarded.


thank you for posting this. i looked at it briefly but had forgotten about it. nim interests me.

This this this this
I was able to create a small PoC in my first day of Nim, something like this for a web framework:
route "/{board}/{thread}": result = Renderer.from_template "board/thread.html" {"board_uri": board, "thread_id": thread}.toTables
it doesn't work but it compiles to this:
proc route_func_8daf2827e(request: Request, board: string, thread: string): HttpResponse = result = Renderer.from_template "board/thread.html" {"board_uri": board, "thread_id": thread}.toTablesroutes.register "/{board}/{thread}", route_func_8daf2827e
which is very nice.

ocaml

It's a functional language (not pure though). The core system is a typed lambda-calculus with Hindley-Milner inference and inductive types (that can be parametrized by other types).
In other words, when you code standard stuff, you don't have to type the types of stuff, ocaml guesses it automatically, and functions can be polymorphic. Inductive types allows you to create all kinds of algorithmic structures easily (lists, trees, hashtables...), and you visit the structure throught exhaustive pattern-matching.

For instance, if you want to code the function that returns the type of a list:
let rec length l = match l with | [] -> 0 | x :: l' -> 1 + (length l') ;;
Here ocaml automatically infers that the type of length is 'a list -> int ( 'a is a polymorphic type, so 'a list is a polymorphic list). Also, ocaml spergs out (muh security) if you don't consider all the cases in the pattern matching, and if the typing is incorrect (the only problem is that it is a chore to mix integers and floats).

It's right between Haskell autism and normal programming because you can also put imperative blocks in your code.
Also it has an OOP thing, a module system (a bit like Java interfaces, but more autistic), exceptions and such.

ROS is the thing spamming the gentoo package feed with thousands of entries, that's what it is to me.