Initial wanderings in the search for an ideal programming language

Initial wanderings in the search for an ideal programming language

Background (disclaimer)

When I first became interested in programming, I had a choice – to teach C or Python. As a result, I chose Python because of simplicity using languages By “use” I mean “I don’t know what memory is, I don’t have time to learn how it works yet, I need to write something quickly”.

It worked well and not to say that my choice was bad. Now, when I’ve already decided on my direction in programming for the near future, I’m starting to regret, saying, “why didn’t you start with the %X% language, so you would have flowed into the area you need faster.” Although, in fact, these complaints are completely useless and incompetent, because at that time I did not know what I wanted.

It would seem: sit down, program on Python simple programs and do not blow into us. However, this approach did not work for me – I cannot write cycles without understanding what is happening “under the hood”. As a result, everything came down to the fact that I began to study the good old C. There is no NO C++/Rust/Haskell or other, more abstract languages, namely C – To me, he seemed less removed from reality at that time.

“A bad dancer is hindered by both his feet and the floor” (anger)

Learning the language C went with measured steps and, like most people, was accompanied by questions “Damn it, what is an index? The hell do I need it? But who found such a difficult language?”. Please note that my question about language difficulty was not about syntax, but about semantics.

I studied, studied… wrote all kinds of programs: I came across bad messages many times”segmentation fault (core dumped)and the joys of life.
After I wrote a couple of very simple programs, I started to hate it C. At that moment, you could understand me: before that I wrote on Python, wrote programs much faster, and they also worked immediately. “How can you even love this C of yours?”

Well, I gave up on this matter, and I can’t say that I lived badly after that.

We abstract with the first cosmic speed (bargaining)

It’s been a long time since the failure: I didn’t really want to learn all these low-level things anymore, although I was still skeptical about the high-level things. Nevertheless, I decided to give it a try Rust and was very pleasantly surprised. The language, being quite low-level, allowed practically not to think about those things for which you would be beaten with sticks in C.

Obviously, my code was terrible (it’s a bit better now), but it didn’t stop me or upset me. I saw approaches, I saw problem solving methods, interesting architecture, asynchrony – it occupied all my attention.

I sat with such pleasure every day over programming on the rusty, that words would not be enough to convey these emotions. I am still writing on Rust, but already with a less satisfied peak. At this rate, a year passes, maybe a year and a half – and everything is wonderful: the world is pink, the world is full of ponies, it’s time to buy coffee at Starbucks. I am an active member of the community Rust and to this day – there are wonderful people who are really interested in the language.

From that moment, I began to delve into various, as it seemed to me at the time, “depths” of programming: math logic, set theory, lambda calculus, type theory. It was charmingly boring, but also extremely interesting. I, a satisfied first-year student in the field of “system programming”, with the help of my knowledge, pass computer logic, discrete mathematics, basic programming and algorithms 3 months before the first session. I also push my fellow students on the material. After all, everything is fine, right?

Everything was really great, until a certain time. At some point, I began to feel the weight of abstractions (although I did not experience even 20% of the existing ones in practice), which seemed wonderful and elegant to me at the first meeting. Actually, I’m not a professional developer – I had almost no development experience at the time. So, the following articles, along with a few others, did throw me off track:

I can’t say the articles are absurdly terrible or great, but I haven’t heard bad reviews about them.
I think it is noticeable how easy it is to sow a seed of doubt in an inexperienced person. Although even where I’m experienced, I’m always looking for something new and interesting: maybe that’s why it’s easier to sow it in me than in the rest? I don’t know, it’s not for me to judge, but I think that the essence is clear – the seed was sown and something had to be done with it.

The aforementioned articles are still relevant for today Rustdespite the fact that one of the articles is from 2019: another problem Rust wait™ format.

“The bigger the closet, the more it falls” (depression)

So, I sat down on one sunny day and thought: “What should I do, my friends?”. It was absolutely clear to me that, for example, for a business, it was absolutely unimportant how you solve its problems, although on paper: the main thing is that it works, it is supported and developers can be found to increase the number of employees. However, from that moment on, programming became more than just a “job” for me. I pour myself into it with my soul, but I get a negative “repulsion” that… I want to improve the existing and create the impossible, but I seem to be limited either by my ambitions or by my frustration.

This is where I began my wanderings in different languages, in search of various interesting and ideal. I managed to test: OCaml, Haskell, Java, NASM under x86-64 Linux, C#, Lua, Go, Zig, C++, Fortran, HLSL, Pascal, JS, Idris, APL and other languages. I enjoyed using functional languages, but they were quite complex and it put me off. Don’t think that I don’t like complications and immediately give up – no. I’m really interested in the functional paradigm: sum types, product types, dependent types – all this I study even today. But I still worry about the complexity of languages ​​- they are really beautiful with their elegant solutions, but they are too complex. Maybe I’m tired of being able to do whatever comes to mind, even though I’m excited about this opportunity. I was no less worried about the possibility of “doing %X% in twenty different ways in the same language”.

Go quite simple language, but I was looking for “ideallanguage, and GC languages ​​do not fall into this category, please forgive me.

Maybe we need something simpler, something elegantly simple?

End? (humility)

Although not a full-fledged, but quite adequate solution in my situation was the following:

  1. Realize the obvious thing – “there is no perfect programming language“;

  2. “Start with a clean slate” – we work from the ground up using language C;

After I played around with other languages, going back to the CI smelled it right away old grandfather. However, I wouldn’t say it was bad – it was… pleasantly? Although I really missed errors as values, convenient comp-time evaluation, flexible type system, I was very satisfied with the simplicity, clarity and dimensionality of the language C.

At that moment, I realized that no matter how other languages ​​try to trumpet the saying “I am the best language on the planet”, it often comes down to the fact that the essence of the language becomes “turn the world upside down” and “show everyone how it should be done”, and then curtain and emptinessThen – nothing. As if they are not interested in the result of a large development.

I really gained more respect C. It has its disadvantages, it has its advantages – you have probably already heard it without me and will hear it again. Language not perfect – that’s fine, I accepted it, but it’s simple enough that come close to ideality.

“And he began to study Che continued to fall on segfaults, suffer from macros and slurred speech, but he was content as an elephant and insatiable in learning new things as a lion.


“Unfortunately, the same thing happens to people:
How useful a thing is, without knowing its price,
Ignorant of her, his understanding is always inclined to evil;
And if the later is ignorant,
That’s how he drives her.
I. A. Krylov, 1815.

You know, I’m even glad that I finally got through these 5 stages. Maybe I got through them earlier than other developers/interested people, or maybe too late – who knows. The main thing is that I have already passed them and I need to move on.

I understand if you say that this article is about nothing. Someone will laugh, someone will see themselves in it, someone will not read even until this moment – it’s normal, I will be glad for any opinion.

Thank you for attention. I will go to C I’ll pee or something.
Hopeless Youth LLC.

Related posts