The Programmer News Hubb
Advertisement Banner
  • Home
  • Technical Insights
  • Tricks & Tutorial
  • Contact
No Result
View All Result
  • Home
  • Technical Insights
  • Tricks & Tutorial
  • Contact
No Result
View All Result
Gourmet News Hubb
No Result
View All Result
Home Tricks & Tutorial

Multiplatform, Small and Fast compiler, Maturity, Produces small binaries, No tightly coupled dependencies (e.g: OpenSSL), Possible control over memory management, preferably modern syntax : softwaredevelopment

admin by admin
November 11, 2022
in Tricks & Tutorial


Hi All! I’ve been on the search for a programming language that fullfills this criteria: Multiplatform, Small and Fast compiler, Maturity, Produces small binaries, No tightly coupled dependencies (e.g: OpenSSL), Possible control over memory management, preferably modern syntax.

The reason why is because I am interested in doing software that can run as efficient as possible, one example of a usecase that I have is that I have rented a very low powered VPS server and I want to run as many applications as possible. If you have experience about cheap VPS servers you will know that you will get banned if you have high resource usage. One could write very efficient software in Python for example but it doesn’t compare with a compiled language with focus on efficiency.

I have compiled a list of what I have found so far. I have tried most of the languages in the list, except for Odin.

Ziglang is one of my favourites, but sometimes I feel that the ecosystem is not mature enough. So many of the things you need for your software, you have to build from scratch. It’s fun to do but very time consuming.

Rust seems to be a great option with a great ecosystem, but those compilation times… everything seems to take forever! Same goes for C++.

Golang is great, it has a great ecosystem, stable, well supported, has a GC, but it provides manual memory management if required. The only bad thing about Go, is the binary size. It is not exagerated, but a simple hello world or network app shouldn’t take so much space.

Nim was good but it was tightly coupled with OpenSSL for example, here is the github issue that mentions it: https://github.com/nim-lang/Nim/issues/14719. So if I wanted to create a small networking app, I have to include OpenSSL which consumes more memory than MbedTLS or BearSSL for example.

Crystal is also dependent on OpenSSL as far as I know, and binary size is relatively high.

VLang would be great if it worked good, but there are lots of memory leaks that happen so memory increases over time. They have recently removed the tight coupling with OpenSSL which is a step in the right direction, now you can use MbedTLS if you choose to do so. The manual memory management did not work well when I tested it. I guess VLang is useful more for applications that get run once, but not continously.

I’ve just remembered that I have used the chapel programming language, but it was mostly for mathematical programming, I think it excels in that because it has direct support for GMP (numerical library) but it is not so good as a general purpose programming language.

TL;DR; What has been your experience with the languages I am mentioning in the table below in regards to memory and cpu efficiency? Do you know any other programming language that fulfills many of the criteria I have mentioned?

Criteria C C++ Golang Rust Zig Odin Nim Crystal Vlang
Compiled ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
Multiplatform ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
Small compiler infinite compilers. tcc is really tiny 620KB around 200MB I’m guessing for g++ 142MB 414.1 MB 42.3MB tar.xz 44 MB zip 11.4MB tar.xz ~40MB tar.gz 6.6MB zip (uses tcc, so a bit of cheating)
Compiler speed Fast Slow Fast Slow Medium ??? Medium ??? Fast (uses tcc)
Maturity High High High High Medium ??? High? High? Low? Lots of leaks
Binary size Small Small Medium Small Small ??? Medium/Low? Medium Medium?
Tighly coupled dependencies of binaries Low Low Low Low Low but std lib is not so extensive ??? OpenSSL OpenSSL Used to be OpenSSL but that was changed recently.
Memory management possible Yes Yes Yes, although the GC is quite good Yes Yes Yes In theory yes, but all the std lib depends on GC being available? ??? ??? Suposedly yes, but when I tried to manually manage the memory it was buggy
Syntax Modernity Low Medium Medium Medium Medium High High High Medium

When I have time, I try to do my little programs in Zig. When I don’t, then I use Golang. I’ve also seen TinyGo, but it has only a subset of the language.

I would love to be a pro C programmer. C runs everywhere and you can fine-tune everything, but there are so many ways in that you can shoot yourself in the foot with it.



Source link

Previous Post

The Best Programming Languages for Ethical Hacking

Next Post

SD Times Open-Source Project of the Week: Speedb

Next Post

SD Times Open-Source Project of the Week: Speedb

Recommended

Learn and Connect at Apprise Conf 2023

1 month ago

How to Develop Your Signature Style as a Web Designer

6 months ago

45+ CMS Software that can Boost your Digital Marketing in 2023!

3 months ago

How to Split a String into Substrings in JavaScript — SitePoint

4 weeks ago

2023: The Year of Continuous Improvement

3 months ago

Weekly News for Designers № 677

3 months ago

© The Programmer News Hubb All rights reserved.

Use of these names, logos, and brands does not imply endorsement unless specified. By using this site, you agree to the Privacy Policy and Terms & Conditions.

Navigate Site

  • Home
  • Technical Insights
  • Tricks & Tutorial
  • Contact

Newsletter Sign Up.

No Result
View All Result
  • Home
  • Technical Insights
  • Tricks & Tutorial
  • Contact

© 2022 The Programmer News Hubb All rights reserved.