5 ms·
It's such a pity these days there is no modern tool chain/workflow for Ada (or C++ for that matter). I mean, a package manager, a build tool with integrated dep
by evacchi 9y ago
It's such a pity these days there is no modern tool chain/workflow for Ada (or C++ for that matter). I mean, a package manager, a build tool with integrated dependencies. As far as I know, there is very little open source software for Ada. It's a shame, because I feel like the language would become more mainstream, if only better tooling was easily available.
- pavlov 9y agoFor C++, I'm reasonably happy with CMake and the Jetbrains CLion IDE. CMake makes it relatively painless to wrap multi-platform dependencies without having to explicitly know whether they come from a Unix package manager or from Windows DLLs.
- evacchi 9y agoI wish there were a simplified (as in automated) and "community-blessed" workflow at least for static binaries with source dependencies, like all the popular "modern" PLs are doing these days. I'm saying this as a newcomer (in C++ land) that finds the lack of this kind of tooling a bit intimidating.
- pavlov 9y agoI know what you mean. It's just really hard to bolt dependency management on C family languages, and so many ways it can exacerbate the problem by adding another layer of accidental complexity... (IMHO, CocoaPods is a good example of how a community-managed library dependency manager can end up creating a worse mess than the one it tried to solve.) The Rust team started working on a package manager early as part of the language design, which seems like the only way to make it actually work.
- steveklabnik 9y agoFun bit of history: it's a hard problem! Rust went through three different package managers in its history: 1. Cargo. But not the one you've heard of. A small Python script that pulled stuff off of GitHub. 2. Rustpkg. Felt like Go's tooling. https://doc.rust-lang.org/0.9/guide-rustpkg.html https://doc.rust-lang.org/0.9/guide-rustpkg.html 3. Cargo, the one we still use today. https://mail.mozilla.org/pipermail/rust-dev/2014-March/009087.html https://mail.mozilla.org/pipermail/rust-dev/2014-March/00908... just over three years ago.
- pathsjs 9y agoThe problem is that it does not manage and version dependencies for you. Say I start a new C++ project where I want - say - use ZeroMQ and also Folly to parse JSON. Where do I start? Should I install ZeroMQ and its headers globally? What if the version changes? Will it conflict with other system libraries? Well, better start using Docker. What if the version I need is not in the Ubuntu repositories yet? I need to add to the dockerfile instructions to download and install the dependencies... you see, things get out of hand real fast
- pavlov 9y agoTo paraphrase JWZ... "Some people, when confronted with a dependency problem, think 'I know, I'll use Docker.' Now they have two problems." Unfortunately there's no single answer. Static libraries vs. dynamic? Global install or packages from a repo? Everything depends on the degree of control you have over the deployment environment.
- pathsjs 9y agoYeah, I know, I don't want to use docker. The problem is that C and C++ offer no real option in this camp. I'd be happy with anything that resolves and download dependencies, builds them locally (using CMake?) and adds the correct headers and library dir configurations to my project. But I could not find anything that really works
- oblio 9y agoTrue, C/C++ have it a bit more complex. But is it really an unsolvable problem? One would think that with the level of investment in C/C++ someone would be able to create something all the hipster languages have done in the last 20 years. I guess Gentoo's emerge would be the closest thing to a "good" C/C++ package manager we have today, which I find a bit funny :)
- AstralStorm 9y agoC++ standard committee is working on an intermediate step in the right direction: module support.
- snovv_crash 9y agoI believe you are looking for http://conan.io http://conan.io + cmake + any number of IDEs (VS, QtCreator, CLion, KDevelop, Eclipse, Vim) all of which will integrate with cmake perfectly.
- evacchi 9y agoI guess! (CMake is still horrible, but well...)
- Raphael_Amiard 9y agoThere are a few people at AdaCore working on this, we're trying to bootstrap it and involve the community, more about that soon we hope :) The build tool, GPRBuild is already a step above makefiles, and personally I find it very convenient to work with.
- evacchi 9y agoThen I hope to see soon a non-trivial (setting up a few dependecies) "Getting Started" for the layman !
- e12e 9y agoI'm sure I'm not the only one that would appreciate an up-to-date, real-world best-practices "How I start"[1]-article for Ada - from people that actually write non-trivial Ada code and have a stake in project setup, packaging etc. [1] http://howistart.org/ http://howistart.org/