I want to pick a good general purpose programming language that I can always use when I need or want to do some project be it for work, research or fun (a game, physics/life simulation). I want it to be fast, because I'll also be doing some ML and data analysis. I programmed sporadically during the last decade for school and uni and I was quite good with these low-level projects, but I'm pretty ignorant. I decided on C# as I figured it might be a good compromise between speed and modernity. Is it? (I'm clueless) And is it a good pick or would you recommend something else.
Also I think it's possible to write a program in C# and then write some speed-critical parts in C++. Could near C++ performance be reached this way? If yes, then how does one go about it, i.e. what tool to use to create a two-language program?
> Using microcuck programming language jew
rofl
>>59095760
Reminder that haskell == microsoft research
>>59095760
nothing wrong with c# for a beginner
>>59095715
stick to all c# with your program and then learn how to wrap functions from dlls or named pipes for ipc across your c# program and c++ program if you're very committed to the act of having two programs, that's very silly though, that will slow things down and you would be better off sticking to all c# for what you are doing
there are more chances for an inexperienced programmer to slow down c++ and not have the knowledge to fix, or to profile what they have done and fix. c# is pretty straightforward and easy to fix if you cause a slowdown doing things
Don't fall for the "everything is slow and bloated except C++" because that's only true if you're a really really good algorithm designer and have at least a vague understanding of assembly. Things are only bloated in C# and Java if you're a shitty programmer who goes into C# and Java thinking that they're going to solve all your problems and you don't have to worry about memory efficiency or what the overhead of the library function you're using is.
Of course there are some things like processing of a huge amounts of data or analytical algorithms that only really make sense to be done in an environment where you have low-level access to memory and you should still do them in C++, but 99.5% of code will run "near C++ performance" and often times exactly as fast (and rarely faster if the C++ library is poorly-written, which definitely does happen) in Java/C#.