571 karma · joined June 5, 2013
One of the things I miss in Haskell is a way to compile to C, and a convenient declarative GUI which also compiles to C so that all code can be linked together, and distributed as a single binary. The GUI doesn't need to be native. Lisp has its own GUI (McCLIM), Smalltalk has one (Squeak), Rust has one (Conrod), why not Haskell?
Many theories are wrong due to lack of knowledge which is substituted with suspicions. That's the reason why conspiracy theorists are ridiculed so often. Some conspiracy theories however are true. If Pulitzer prize winners Woodward and Bernstein hadn't believed in conspiracies Watergate would never had been discovered.
I am amazed that there are actually people right here who stubbornly reject the reality of conspiracies at all. Conspirators want people who don't believe in conspiracies since deceiving such people couldn't be easier.
Not yet. I was seriously interested in Haskell. The cabal hell however put me back. Stack is interesting but installation from source is still troublesome.
I always want to be able to install my developer tools from scratch (by source only) since I want to make sure that I can port my software to new systems. Haskell's and Rust's way of installation (curl | sh) is convenient but inacceptable for porting. Nim's bootstrap from source (no dependencies except a C compiler) is the right way how it should be.
That is correct. However, in Haskell you need a lot of discipline to guide a big project in the right direction. Maintenance can quickly became a nightmare due to very dense code.
If maintenance is the main issue I would choose Ada than Haskell. I have no problem to understand my own Ada code written 10 years ago, even without documentation. In Haskell however I had problems to understand my own code which was just some weeks old :-)
McClim is not a business case. It is just a project to revive the most sophisticated GUI for Lisp. The graphical shell [1] for instance which already works gives a remarkable impression.
[1] https://common-lisp.net/project/mcclim/static/media/screensh...
[1] http://compgroups.net/comp.lang.lisp/static-type-checking-in....
Do you have enough experience that you dare to judge him?
> Compared to modern languages (say, Haskell), not so much.
I disagree. I was in a lot of languages, in all different programming styles. Lisp still is the language with a maximum of freedom of programming, probably also regarding productivity. Only Nim comes close.
Haskell may look elegant at the surface, regarding productivity however I don't recommend it except for DSL and compiler construction. If you are not a world class expert in Haskell then in most cases Haskell takes a lot more time for development than other languages (say Lisp, Python, C++, even Rust).
git log --reverse | perl githead.pl
where githead.pl is my $date, $old; while (my $line = <>) { chomp $line; next unless $line; $date = "$1 $2 $3" if $line =~ m|Date:\s+(.+?)\s+(.+?)\s+(.+?)\s+|; if ($line =~ m/^\s+/) { if ($date ne $old) { printf("%-10s%s\n",$date,$line); $old = $date; } else { printf("%-10s%s\n",'',$line); }}}IMHO, a potentially successful Emacs ports depends on a new plugin system which supports code in other languages (Rust for instance) rather than elisp so that new developers get attracted who dislike Lisp. In other words, don't attempt to clone emacs but develop a completely new editor which uses the successful concepts of Emacs.
Unfortunately, plugins require dynamic code generation, and AFAIK only scripting languages like Lisp, Scheme and Python are able to do that. Emacs has that already. Emacs's plugin system has an unmatched simplicity and reliability, and that's likely the reason why any clone has a very hard time to compete.
Regarding the other points, I have the impression that Ada is much easier to handle than Rust, hence Ada code is easier to maintain. Package managers are not always a blessing. Haskell's cabal hell demonstrated that the usability of package managers is questionable. As for me, I prefer the "dumb" configure - make - make install tool chain since it follows the KISS principle. In most cases it just works.
And how it is!
I don't understand why people consider Java "fast". The JVM may be fast on pure server applications. On clients however it is still unacceptably slow in comparison to native applications. Just consider Eclipse and compare it with Ada's GPS editor, or with native C++ IDE's. The startup time of Clojure applications is also still beyond acceptance for me.
I know a lot of programming languages. Nim is one of the most productive ever. It is like safe programming C with the clean syntax of Python and the nice macro features of Lisp.
The impact of Rust on the programming safety community has grown so big that even hardcore Ada developers are getting really nervous about Rust's powerful competition.
https://groups.google.com/forum/#!topic/comp.lang.ada/H35QcY...
Although Nim and Lisp are still more productive than Rust for my use cases -- Rust really needs a convenient edit-compile-debug cycle, and also an easy bootstrap from source mechanism -- I am watching Rust's development with pleasure.
I am pretty convinced that within the next ten years Rust will not only cause a serious decline of C++ but also eat a big portion from Ada's lunch in safety critical applications.
If you don't need all the options, ignore them. If ls is too complicated for you then do just as the author recommends: "write a simpler alternative to ls", and name it lf ("list files") or the like.
The flaws C++ were the reasons why Rust was invented. Mozilla wanted a safe language for the next generation of browsers, and they realized that C++ is not a good choice for safe programming.
Quote: "Mozilla intends to use Rust as a platform for prototyping experimental browser architectures. Specifically, the hope is to develop a browser that is more amenable to parallelization than existing ones, while also being less prone to common C++ coding errors."
Source: https://www.quora.com/Why-is-Mozilla-developing-the-Rust-lan...
http://compgroups.net/comp.lang.ada/ariane5-faq/1406823
And yes, Ada is still used today.
I believe that Rust has the power to take a significant part of C++ in coming years. Maybe that also Ada will increase due to the rise of public interest in code safety. C will remain as it is because there is no easier way to port system software to new platforms.
Honestly, I've seen C++ code so muddled and obfuscated that I actually wondered if those devs just wanted to make themselves indispensable. I really dislike such an attitude.
If C++ is your only hammer then every problem looks like a nail to you. Of course, there are viable alternatives. At least Ada which is still used in avionics and other safety critical systems.
I believe in exactly the opposite. I always try to follow the KISS principle (Keep it simple, stupid) whenever possible since it always turned out to be the most reliable and maintainable solution.
It is funny that the first Ada versions (93 and 95) were considered vastly more complex in comparison to C++ in those days. Today it's the opposite. Ada looks like a clean mature language which only adds features which are actually needed. C++ wants to copy everything, attempting to squeeze every new feature into its narrow syntactic framework while still suffering the legacy of C and old C++ for reason of compatibility.
The only reason (IMHO) to learn C++ today is for maintaining legacy code in business. In all other cases there are better typed languages - Ada, Rust, and Nim for instance.
C++ may look nice at the basic level. As soon as things get serious C++ devs have a tough time. How does the experienced C++ dev fight that? He looks into his long list of tips and nostrums which hie collected in all his years to avoid all the pitfalls and minefields of C++. I don't believe that will change significantly with C++17.