DEV Community

Discussion on: Evaluating Developer eXperience of a programming language

Collapse
 
rhymes profile image
rhymes

To be fair Go's standard library is quite good but as you said it can be better. Go's time library and HTTP server are great examples of the good parts of its standard library.

I'm not sure about the argument in the last section. brew install language doesn't seem that much of a barrier. The amount of dependencies of a project shouldn't be an issue attributed to the language itself though, did I understand correctly?

Collapse
 
stereobooster profile image
stereobooster • Edited

Agree on Go.

About last one - this is a bit hand-wavy metric. I can explain by example.

What you need to run a Ruby project. Ruby itself, Bundler (in Ruby 2.5+ it is included by default), and you are good to go. You may also need C compiler and some libraries, but not necessary. On average 1-2 dependencies, right?

What you need to build a C/C++ project. Based on my experience you will not get away with 1-2 dependencies it is more like 4-5 and all of them should of some exact version. For example, I tried to compile tree-sitter recently, here is Dockerfile

FROM ubuntu:trusty

RUN sudo apt-get -y update\
  && sudo apt-get -y install software-properties-common\
  && sudo add-apt-repository ppa:ubuntu-toolchain-r/test\
  && sudo apt-get -y update\
  && sudo apt-get -y install gcc-5 g++-5 clang\
  && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 20\
  && sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 20\
  && sudo update-alternatives --config gcc\
  && sudo update-alternatives --config g++\
  && sudo apt-get -y install python make\
  && sudo apt-get -y install git-core

I need exact version of Ubuntu (not latest), exact version of gcc-5 and g++-5 (not latest). I need python, make, clang, ubuntu-toolchain-r/test. With Docker situation is better. Do you see what I mean?

Collapse
 
rhymes profile image
rhymes

Understood yes! I don't think you can escape that, after all "higher level" languages were created to ease the developer experience among other things :)