• 2 Posts
  • 52 Comments
Joined 2 years ago
cake
Cake day: July 17th, 2023

help-circle
  • As an older coder, I’ve spent time commercially programming in a lot of languages (C, C++, C#, Python, TransactSQL, Javascript, and a few more - with many years of experience in each. I even spent time squeezing some forth code into a small programmable chip.

    My first comment on this « attitude » expressed above is that you need to pick the language (and its libraries) that is best for your problem space - each will have advantages, including constructs and libraries to suit whatever domain you are working in. Hence forth for a microchip, TransactSQL for DB stored procs, python for general purpose command line work etc.

    Having said that I do want to present one viewpoint which could give rise to this above expressed opinion. It’s an area that C is considered pretty strong - specifically language complexity. When coding in C, I really felt like I knew every nook and cranny of the language, exactly how every structure would be packed, what the assembly would probably look like.

    Python (and perhaps C#) are currently my favorite languages - python only has 36 keywords and while I don’t have the same solid grasp of what’s happening under the hood, I do feel like there are very few surprises and corner cases to the language, even while supporting some complex programming methodologies.

    The opposite of this is (IMHO) swift. What started as a really nice language with a clean syntax and solid libraries has morphed into a monster with 232 keywords. Does any swift programmer have a solid grasp of it all?

    I would say that C++ is at the complicated end of the spectrum - spend some time inside Boost and their extreme use of templates/meta-programming and it will make your head spin. The Boost developers are super smart people, but its non-trivial to understand what is going on. Having said that, C++ does make you feel that you can code close to the machine and have a good handle on what is happening under the hood.

    This level of control is probably one place where this « only C and C++ code is any good » attitude came from. Its not an attitude I support.












  • I’m usually a little suspicious of a new fancy language - because the language is only a part of the equation. Does it have good tooling and does it have awesome libraries?

    I had a preconception that Rust is strong as a language (formally well structured, low shoot-yourself-in-the-foot potential, consistent, predictable) and that the tooling seemed strong (debuggers, editors, code completion, help, test frameworks), but I’ve always thought that it would lag with libraries. I mean compared to something like Python (« Batteries included ») or java, surely it is not yet compatible, right?.

    So I chose a few of the less main-stream libraries that I use regularly… and Lo and behold! They exist for Rust, including Couchbase, SQLite, ECDH, DiffMatch. I can’t vouch for the completeness of those libs, but the fact that everything I looked for existed… that’s impressive.






  • After I saw your note, I had a quick catchup on that project.

    It looks awesome, with the promise of mobile and desktop, and the ability to make apps that can be uploaded to the AppStore. Plus its Dart which is a pretty well structured language. Its ticking a lot of boxes…

    Then I ran « wc -l » on my support libraries (i.e. not UI code) - 64k LoC that would need to be rewritten in dart. But then I noticed Flutnet. its probably an abomination linking the two… but it could be promising.

    Thanks for the pointer.



  • I’ve had a few years experience in both C++ and C#. The learning curve is a lot steeper for C++ with many more opportunities to shoot yourself in the foot or create horrible hidden memory leaks. It sounds like the person making the recommendation is talking out of their arse.

    If you have any experience in Java or any OO language, then the transition to C# is not so large. The language itself is not difficult - it will probably a couple of weeks to be comfortable. Its the frameworks and libraries that takes time, and there are a lot.

    Here’s my view… it takes 10 or more years (IMHO) for a sharp person to become a senior developer. It takes a few weeks to learn a language. If I have to choose for a big project, I prefer to focus on choosing the right person, rather than just focusing on the language, because a good senior will just learn whatever they need at the start. They will also bring their years of experience in good design, methodologies, communication, mentoring, testing etc to the party.