-- Leo's gemini proxy

-- Connecting to bbs.geminispace.org:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; charset=utf-8

Help me find my second language


Background

I am a data analyst/scientist doing spatial and temporal ecology stuff. I only use R because...that is what I..know ? I was never a programmer before I switched from env. engineering and recently was thinking to diversify a bit to Julia. I have quote a lot of freedom in my current job to program in whatever I want. Occasionally I have to do it in python for the GIS people downstream. The people downstream complain a lot about Python being slow in performance, but maybe that is peculiar to this job.


Why are you asking here?

I am only asking here because you gals and guys seem to be decent people, some of which are real pro programmers. People experienced in working with and tinkering with programming languages


Why not Python?

Python is indeed very much in demand in Data jobs. Why? no idea. I studied it for a bit, tried it and occasionally have to use it and I hate it. I don't even know why, really. It just… does not go well with my brain ?


Why Julia? and why not Julia ?

Because R is on the decline in the job market, and so that I could enjoy its supposed speed and adequacy for general purpose programming while it is legible for people like me and most importantly - it already has quite a bit of libraries that fit my _current_ purpose. I tried it a little and it's quite nice from day one. Why not? well, I fear that it might be overhyped. I hate overhyped things.


The Questions

I want to find a language that I like, will be usefgull to me, and hopefully I will not need another during the next 20 years. How do I fund it? CAN I find it?

The thing is, having read more and more into trendy languages of the future, it seems like there's quite a lot of them...could anyone have predicted in let's say 2005 that Python would be so much in demand as it is today ? How would you approach the question of how to take the claims seriously ? Rust ? Zig ? Julia ? Other ? Don't bother ?


Motivations & Limitations


Be able to program with something else right now in my current job, while I have this freedom with a language I will use in my future.

Be able to find a job in other markets just for survival. As I prepare for semi-forced immigration in my 40s (bummer), I figure the most general skills I have the better. I DON'T wanna go back to engineering.

The language must have some good data related libraries already (data wrangling, data plotting, Statistics, Spatial and GIS stuff, Hopefully also reproducible research notebooks like Jupyter / Quarto / rMarkdown/ Pluto)


Initial suggestions by others

On the chat, some people had the following opinions


Mainstream Suggestions

Python

>Now the mainstream is Python, [...] do it for survival

JS because the web

>Javascript is another good option, the web is not going anywhere soon too.

JS also got a negative vote

>do u love yourself enough to not program in js?

Java

> You should learn Java, because there are many android phones and it stays so in near future


Less Mainstream but for the job market

? (None so far)


Personal taste votes


Julia

Lisp


Posted in: s/programming

🦥 aRubes

2023-09-28 · 8 months ago


13 Comments ↓


🚀 ahappydeath [mod] · 2023-09-28 at 22:06:

I'll give a 'not so mainstream' option. Elixir. It is making big progress in the data space with it's introduction of LiveBook and it's newer Numerical Computing libraries https://github.com/elixir-nx


🦀 jeang3nie · 2023-09-28 at 22:33:

I'll comment about a couple of the languages you mentioned in passing.


Rust has the benefits of being ready for productiojn right now, having a significant community behind it, being the up and coming language for writing Python extensions in, and being generally on par with the fastest languages available. I personally love it due to the ease with which you can write parallel executing code while being reasonably sure that it's not going to blow up in your face.


It has the downsides of a fairly obnoxious community and it's famous learning curve. I don't think the latter is as big a problem as people make it out to be, but I'm definitely a bit disillusioned with the former.


Zig is also incredibly fast. I feel like Zig's feature set gets you about 90% of the benefits that Rust gives you with a much smaller learning curve. However, Zig is definitely pre-1.0 software. If you write something of any size in the language, you will absolutely incur extra maintenance overhead just due to how often breaking changes in the language. My opinion on Zig is that you should use it only if you believe that it will be able to deliver on it's promises in the future and are willing to bet on that, particularly if your hope is for learning a bankable skill. It could eventually overtake Rust in popularity, or it could fizzle out and die.


Here's my somewhat controversial opinion now. There is absolutely nothing wrong with learning C and/or C++ at this point, and both languages are likely to be in demand for decades to come even with all of their very real problems. In particular, I think it's good to learn plain C as no other language besides assembly will teach you more about how computers and algorithms work on a low level. Spend some time in C and you will have no choice but to eventually implement data structures that every other language take for granted just because there won't be a ready made solution, or because you will be able to tailor it specifically for your needs. Then, when you inevitably do pick up a task in a higher level language, you'll be making more informed choices about how you use and store your data.


☕️ Morgan · 2023-09-29 at 07:02:

I don't think it fits what you're asking for in existing libraries, but I'll mention Dart anyway. Its main setting point is that it gets you web + mobile + server in one language. It's mostly popular for mobile at the moment, see: Flutter.


🦥 aRubes [OP] · 2023-09-30 at 21:11:

@jeang3nie That is an excellent comment ! Thank you for the suggestion


🦥 aRubes [OP] · 2023-09-30 at 21:13:

@ahappydeath That's really good to know ! haven't stumbled upon in it in any of my data analysis/stats rss feeds.


🐉 gyaradong · 2023-10-01 at 02:18:

it's a bit hard to recommend something when you hate python and it's the new language for data science, but you also want pragmatic advice on what's a popular choice for data science. Python is not a bad language. Try and figure out what you don't like about it.


🦥 aRubes [OP] · 2023-10-02 at 15:55:

@gyaradong I don't really know, to be honest. Something about the syntax (of the base python, not specific packages) just does not work well with my brain. It took me much less time to get used to the same lavel in R, and that was really my first language (not counting a short Pascal and Assembly experience some 15 years prior to this, which I have totally forgot by the time I started with R). Let's assume that syntax is the problem for a second. besides getting used to it, is there anything I could do ? like packages that provide alternative syntax ?


🐉 gyaradong · 2023-10-14 at 00:28:

Other languages exist, but the job market tends to be a laggard. By the time a language has already got several advantages for a task, the job market only just starts to transition. people in the industry have probably used a new languages for months or even years. It's Very hard to know what will be "next". Generally you'll have you passionately drive for a transition when you already have a job.


🐙 norayr · 2023-11-13 at 00:25:

in short i would say:


for job, the only acceptable mainstream language for my taste today is go. it is modern, fast, well designed, safe, strongly typed, generates native code, has reasonably small syntax, influenced by languages i like.


for fun: ada, modula-3, oberon. i vote for oberon and feel free to ask me questions about it.


i expressed some thoughts here too:


— thoughts in other thread


💀 requiem · Apr 17 at 16:27:

Personally I am quite glad I learned some python, it’s a really rewarding language with a quick learning curve. I wrote a lot of NodeJS before that and honestly it sucked.


I also learned a bit of CPP to work on Arduino stuff but I switched over to micropython instead.


I am only a hobbyist but friends “in the know” seem to go for Rust and Zig. I personally wonder about learning Go and Lua. Both seem interesting: interestingly a lot of Gemini stuff was made in Go, and Lua seems to be popular for retro gaming these days.


🦀 jeang3nie · May 07 at 18:44:

I haven't messed much with Go beyond some basics, but Lua is definitely a nice little language. It's really fast to learn if you've done any other programming. I feel like it's very comparable to Python when it comes to learning curve, but it's hampered by being seen as just something that you embed into something else and doesn't have the massive community behind it that Python does.


🐙 norayr · May 08 at 00:21:

let me also mention pascal, and its implementation: freepascal.


it is a compiler which is independent from gcc or glibc. the code it generates has no dependencies other than kernel. it links statically necessary rtl, and it contains very effigient memory manager which supports cow strings etc.


still the resulting executabre size (static) is about 100k. which is unheard of. statically linked c minimal executabre built by gcc is about 800k in size.


in the compiler benchmark game measurements fpc is always exceptionally good in its memory usage, and the welr known research on energy efficiency also confirmed it is one of the best there.


it has strong community, they developed lots of libraries.


🦀 jeang3nie · May 08 at 01:47:

Pascal is a worthy shout-out. That said, there are other languages that can give it a run for its money on executable sizes if that's something that you're concerned with. Zig has lazy evaluation and only builds the parts of the standard library that you're actually using, giving it the ability to produce nice compact executables. And the figures you mentioned for C are due to Glibc, not C itself. Static linking with Musl on Linux produces much smaller binaries, and the BSD operating systems also have great and efficient libc implementations.


Frankly, Glibc is hot garbage. Nobody seems to be talking about it but Glibc's indirect function call interface was a major component of the XZ backdoor, which couldn't have worked without it. It's part of the reason that Glibc is so bloated to begin with and it's a potential security nightmare as well. That's a tangent for sure, but it's worth saying.

-- Response ended

-- Page fetched on Sun May 19 13:54:09 2024