Faced with the need to sometimes write native programs. Decided to learn another programming language. What I found: C ++ is definitely not suitable. It causes only gag reflex (at one time he wrote on it, now C # is spoiled). D is a C ++ companion. They say more beautiful, but I have not noticed. I am particularly annoyed by a large number of types of elementary variables (such as a string). And there was a feeling that it was not updated for a long time ... Go - from Google, I have not tried it yet. Trying to find the environment and compilers under Windows Vala - the syntax of C #. But it requires GTK +. I would like to receive more or less independent programs. And GTK + with all dependencies weighs 30MB. FreeBasic - somehow undignified :-). Yes, and something I have difficulties arose ...

Anyone else have any suggestions? Or additions to the above languages ​​(except C and C ++ - they don’t really interest me). Thank!

UPD: Esoteric not interested

UPD2: Just do not wait for help from the local community. Most of the answers consist either of aberrations (off topic), or of answers that are not suitable for the conditions of the question. Expected a few more competencies from the local audience. Some answers, however, allowed to learn something new. It was decided to study Vala, rewrite the program, because of which everything was conceived. Allow all dependencies and see how much it will weigh. Then I will try Go, and behind it C ++ + qt ... Well, at the very least, I will take up C ... Or even Forth :-)

I'm looking for a programming language (and environment) in which I will be comfortable programming. Provided that basically I write it in C #.

Closed due to the fact that it is necessary to reformulate the question so that it was possible to give an objectively correct answer by the participants Athari , Timofei Bondarev , Yura Ivanov , awesoon , Mirdin 2 May '15 at 7:56 .

The question gives rise to endless debates and discussions based not on knowledge, but on opinions. To get an answer, rephrase your question so that it can be given an unambiguously correct answer, or delete the question altogether. If the question can be reformulated according to the rules set out in the certificate , edit it .

  • Go is definitely not native. If not a secret, what is the C (without pluses) not pleased? - avp
  • 2
    Why is Go not native? - Dimsday
  • one
    Hmm, what do you think is esoteric? EMNIP OCaml is able the native, everyones there lispy and other marginal is able the native. - Scipetr 5:58 pm
  • 12
    Actually I want to ask: "Do you want to go or go?" - Scipetr
  • Esoteric, I think languages ​​like the following proposed lolkoda ... - Dimsday

7 answers 7

If "for myself" - I recommend to look:

1) Forth - to enhance general education.

2) Erlang is an almost functional language, the main feature is multithreading (it can hold hundreds of thousands of threads), for the near multi-core future this is the case.

3) Java - and its functional continuation - Scala.

  • Fort look, but then. I read. Quite an interesting language, but now I have a slightly different task than learning a principled new language (for me). Erlang - running on a virtual machine. Does not fit. Java and Scala - work in a virtual machine. Unsuitable. - Dimsday
  • one
    As far as I know, there is a means of compiling Java bytecode into native. - codemo
  • Honestly - I don’t want to figure it out :-) Java was originally intended for a virtual machine, which means the compilation simply throws away most of the advantages ... I mark the answer as correct only for Forth :-) - Dimsday

When choosing a programming language, you should always take into account many factors, at least:

  • availability of first-class tool chains (compilers, interpreters, development environments),
  • availability of necessary documentation
  • availability of libraries of ready-made code
  • availability on the market of a sufficient number of specialists familiar with the language,
  • etc.

Now for compiled programs they use mainly C ++ and less often C (depending on the subject area). D for all time of the existence, did not become industrially used language. And Go is just starting its development. Therefore, in general, there is no particular choice.

Personally for yourself (as a hobby), you can choose any language you like, and to work with either C or C ++, and possibly Go in the future.

  • Well, for work, I have C # ... I pick myself up for a hobby rather. While looking at Go. ) - Dimsday pm

From all the above read, I realized that you are from all the gates and with all the old scores.

Why ask was? lolcode to help you. lolcode.com

  • Gate only from C ++. Delphi, like Pascal, I just don’t like from the first course (there are reasons). C - I just didn’t consider it yet, but if nothing else suits, I will try to nibble it) With the rest of the signs, I’m only superficially asked, therefore I ask for advice. Esoteric doesn’t just offer ... - Dimsday
  • one
    Xi do not need to gnaw. It is as simple as two sticks and a rope. You can even not use the libc functions, just on system calls (+ native .dll). In general, it can be considered as a macro assembler with types. So good! - avp
  • The problem is not so much in complexity, but in the fact that I am already quite strongly spoiled by C-Sharp :-) - Dimsday

If the benefits of gates, then maybe Delphi? She and C # have one author and close ideas (for me, Sharp is one from the Delphi-C ++ Builder development thread).

  • I don’t like Delphi ... We have old scores with him))) - Dimsday
  • Well then, just assembler or write your programming language. Everything else is either exotic or not native (Piton, Zhava) - KoVadim
  • Assembler is definitely not suitable ... It is not suitable for applied tasks ... - Dimsday

That is superfluous, it weighs a lot, because it tears ... Does it bother you that some impudent languages ​​require the compiler? ..

Write bat-scripts, run on bare XP, there are no dependencies, you do not need a terrible SCC + for 30 meters (and how many do not weigh?) ​​- and you will be happy!

  • one
    The 4th dotnet, if my memory doesn’t change me, weighs 30-40 mb ... and the reason for choosing a native language was to give up dependencies ... I would like to see how you will do bah scripts through the batch scripts .. In general, the answer is no answer ... - Dimsday
  • one
    I would like to look at the language that will fall under all your requirements. C / C ++ and WinAPI is the only thing that does not require any special dependencies. But you are turned back ... - AlexDenisov
  • one
    The .NET4 installer only weighs 70 megabytes. And it is unpacked into the traditional 700MB. However, .NET is incompatible with each other. Those. a program under .NET3.5 requires it, and not, say, 4.0. - gecube
  • That's exactly nonsense. microsoft.com/download/en/details.aspx?id=17718 - 48 MB (and this is a distribution for x86 and x64). How much does it take after installation I do not know (and does it really matter?), But the folder weighs 170 MB. Yes, there used to be problems with launching various versions of the framework, but in most cases this was caused by curved hands of programmers. Now it's enough to install version 4.0 (as I did on my work computer) to run .NET programs designed for any version of the framework. Understand the question before giving such incompetent comments ... - Dimsday
  • one
    @ 1101_debian: WinAPI has a dependency, called "Windows" ;-) - VladD

What I found: C ++ is definitely not suitable. It causes only gag reflex (at one time he wrote on it, now C # is spoiled).

I also wrote on it. At first I thought that a good language. When I saw C #, I wanted something more in C ++, because C # did not suit me by other parameters. When I started to run into a rake with C ++, trying to write my own engine with a C # interface, I fought first. Then I realized that it was a waste of time and effort, and hated C ++, paying attention to D.

D is a C ++ companion.

This is a language that took all the best from C #, Java and C ++ and added some more things.

They say more beautiful, but I have not noticed.

And I immediately noticed. Probably you do not have enough experience to notice the difference.

I am particularly annoyed by a large number of types of elementary variables (such as a string).

Strings in D are a special case of arrays, and in your C # strings are just a separate type.

And there was a feeling that it was not updated for a long time.

A new version of the compiler is released every month, if not more often. You probably went to some Russian abandoned site. We must look at the official site.

It was decided to study Vala

I also paid attention to it, but when I saw that there was no overload of functions, I realized that it was not an option.

In general, I recommend still paying attention to D. True, you need to know English, because almost all the information is written on it.

Sorry for the necroposting, and even in the closed topic. Just could not resist.

  • Di - sucks. Two different versions of the language, two different standard libraries, mixed dofig different features in the best traditions of C ++. - Vladimir Gordeev pm
  • Forget about the first version - it is no longer relevant. Along with her, the Tango library was left in the past. Of course, it was ported to D2, but nobody needs it there, and you can’t call it standard. What greatly simplifies life is often implemented in C ++ with eerie crutches and does not always work (and this only complicates it!). In D, it is either done initially, or there are normal means for implementing everything that works as if embedded in the language. - gammaker
  • For example, properties in C ++ are implemented through operator overloading. If you even accept the fact that the size of objects will increase, all the same, when auto and declspec appear in the new standard, the type will be determined by the property itself, not by a variable. It was for such cases that I disliked C ++. But he was thinking precisely this way, where you can implement anything, but in fact there are a lot of specialized functions and few universal ones in it. Same thing in C #, but at least everything is cleaner. But in D I need versatility above the roof. - gammaker
  • It is cleaner, but still, the language is too complex, orthogonality of features is not observed. I looked at D for a while as a C ++ substitute, but then I changed my mind in favor of Go. PS: I think that developed D cool fucked the community when they released the second version of the language. Someone did on the first version of the project, but the developers wanted more creativity. - Vladimir Gordeev

Take Python, just do not get lost.

  • Python is an interpreted language. I considered Cython but still did not understand what it is :-) I need a language - the programs that compile into native code for windows without any extra dependencies ... - Dimsday
  • If I find a version of Python that fits the conditions - I will choose it. I like him, besides, I know him a little) - Dimsday
  • Hmm, the native without dependencies under Windows is an assembler. In general, such a perversion of nakaya is necessary if not a secret? And so with this, even Python did not cope. - Scipetr
  • I wrote the same - without extra dependencies. Python will not cope, because an interpreter must be installed on the machine for it. And the perversion is needed in order to rewrite one program from C # so that it runs on bare XP. Well, for the future for such tasks ... - Dimsday
  • Hmm, if your hands are straight, then quietly going into a binar and placed on a bare Windows. Moreover, this program suddenly starts to run on all major OS (well, only if there is no specific Windows code inside) - Scipetr