The Vala Programming Language
vala.dev
vala.dev
Yorba was around for a bit and did a few really ambitious applications in Vala, but never really finished and kinda disappeared. Shotwell and Geary came from them.
Does Glade work okay on macOS and with Vala?
Short version story, a group of WinDev folks weren't happy with C++/CX and its C++/CLI extensions.
So they brought in Kenny Kerr, which was trying to create a C++ library without those extensions.
Out of that effort, C++/WinRT was born, they deprecated C++/CX (5 years ago) and told Microsoft customers to suck it up and wait for the day C++ gets reflection, because they couldn't otherwise provide the same level of tooling for C++/WinRT, as C++/CX enjoys on Visual Studio.
Nowadays they are having fun with Rust/WinRT, while every customer that has to deal with C++/WinRT enjoys editing IDL files without any VS tooling, and merging the generated C++ code manually, after every IDL change.
To the point of that even MFC has better tooling for dealing with COM.
A tiny group inside Microsoft is now happy, while all customers deal with the mess they left behind.
By developing and using C++/WinRT, the Windows developers are prioritizing what's best for their systems programming work, as they should. Convenient tooling for rapid application development is the job of IDE developers, like the Visual Studio team. I think one of the mistakes of Windows 8 and Windows 10 was that the Windows team tried to directly provide conveniences for high-level application developers, built into the platform. I'm glad they've backed away from that. I know VS already has some tooling for C++/WinRT. Maybe they just need to do more work on that. Personally (as someone who no longer works in the Windows org, or at Microsoft at all), I'm glad I can use C++/WinRT, which is just standard C++, with any build system I want, and presumably even with clang rather than VC.
Well next time do a proper job, given that even ATL has better Visual Studio tooling.
The non standard extensions excuse apparently is only an issue for Microsoft compilers, as you are enjoying those clang extensions without problems.
The way management has dealt with WinRT ecosystem, it turned many of us that were hard advocates, into disgruntled developers that only wants it to implode as if it never happened.
In what concerns WinRT, "Developers, Developers, Developers" is long gone.
Clearly the timeline we deserve.
There is also the perception of what languages are favored for jobs (though freelance and independent work seems overlooked), despite that Object Pascal/Delphi is still doing quite well in the rankings (and for many years). Often floating between TIOBE's 10 to 15 rankings, and among or ahead of many notables like Go, Rust, Lua, Kotlin, D, Nim, etc... Who nobody in their right mind would claim are "dead".
One could argue that Nim had its shot, as its no spring chicken. Nim is older than Go, and has been around since 2008. So if it was going to get "the push", would think that would have already have happened.
V (vlang.io), on the other hand, comes across as a special case. Is still relatively young, so could possibly at some point make a run towards heading up the charts. It's in a sweet spot between being both a C and Go alternative, and has taken the approach of studying other languages to make itself more appealing, useful, and practical. Perhaps the sport's term, when describing a prospect, is that it has a "high ceiling" or high potential is the most appropriate.
Don't they have optional arguments? Weird
Gtk.Application("com.example.App");
would look much nicer for such a glue language.
Here is a random example I found on the interwebs:
string greet (string name, string language = "English") {
if (language == "English") {
return @"Hello, $name!";
} else {
return @"Sorry $name, I don't speak $language";
}
}
greet ("John");
greet ("Jane", "Italian");Half the time a new language gets introduced here and I spend 15 minutes hunting for some page somewhere on the site that deigns to share what the code looks like.
Agree with the point, but Vala is pretty old (relatively speaking). It's been around for a while and the whole idea is to have a GTK/GObject-focused C-family language. Last I looked it was a C transpiler and may still be.
I like to use Cheese, the nice little webcam app, to test a webcam when I first set it up or just take a selfie, even when I'm not on GNOME. That's a Vala application :)
From my early experiments with Vala, years and years ago, what I remember is that it had nice error messages and the author was very consistent in releasing new versions even when there wasn't too much momentum.
https://github.com/BuddiesOfBudgie/budgie-desktop
Also, on Arch I use Pamac as a GUI for package management and it is written in Vala as well.
I have used apps for quite a long time before realizing they were written in Vala. Not great for marketing but otherwise I would consider that one of its strengths.
Those days predate most people reading this, yet many new language syntaxes opt for "familiarity". I wish that all language design went through a filter where every character mattered like the designer was in an episode of Squid Game.
Bill Joy famously explained that syntax matters, a dense syntax puts more on screen. This is true even now. I struggle with this; my favorite syntax is a preprocessor that eliminates the need for most Lisp parentheses. The result is code poetry. Nevertheless, Haskell is more expressive.
(Here's an easy test: Anyone who proposes a way to minimize Lisp parentheses, who hasn't introduced a symbol for missing outline levels, is just pulling out chunks and hasn't used their system to write thousands of lines of code.)
I've written most of my lifetime of code in C, established my career in C, and C syntax is ground glass in my eyes.
Interesting.
And later when he (along with his collaborators) created Go, he moved with the times and avoided the need for semicolons.
Alongside they also shipped a tool that handles formatting so people can stop talking about that.
This is not something to write papers about, but a very significant thing anyway.
What's the preprocessor you're talking about?
Yes, I totally support this! Coming from languages like Haskell, most languages look so unnecessarily noisy to me. Cut the fat!
> Anyone who proposes a way to minimize Lisp parentheses, who hasn't introduced a symbol for missing outline levels, is just pulling out chunks and hasn't used their system to write thousands of lines of code.
What are outline levels? I tried Googling it but didn't find anything.
> C syntax is ground glass in my eyes.
Is that a good thing? I'm not sure what you mean by it.
I'd gladly trade a little compilation speed and ability to continue parsing incorrect code for a syntax without semicolons, braces, and other unnecessary characters. It's one of the things I really like about Python, though even that is starting to add lots of syntaxy glyphs.
But did he explain why it used semicolons, rather than periods, which would make more sense because a statement is basically a sentence?
Imagine that your statements are "x = y.x = z." The compiler needs to figure out if that middle dot is saying "x member of y" or if it's a statement terminator.
[1]: It's already complicated by that reuse, which is, I assume, why identifiers can't start with digits so your parser can be simpler.
print 42.0
int main (string[] args) {
var app = new Gtk.Application(
"com.example.App",
ApplicationFlags.FLAGS_NONE
);
app.activate.connect(() => {
var win = new Gtk.ApplicationWindow(app);
var btn = new Gtk.Button.with_label("Hello World");
btn.click.connect(win.close);
win.child = btn;
win.present();
})
return app.run(args);
}
Is this the equivalent of this html code? <button onclick="window.close()">Hello World</button>The equivalent portion is just these two lines:
var btn = new Gtk.Button.with_label("Hello World");
btn.click.connect(win.close);https://en.wikipedia.org/wiki/Mono_(software)#History
https://en.wikipedia.org/wiki/Vala_(programming_language)#Hi...
So Vala is trying to be the best of two worlds, having C-like resource usage with some of the language niceties of C#. Probably wouldn't have happened if Mono didn't prepare the way for C# syntax in the GNOME bubble.
c# is more of it's own thing whereas visual basic sort of had the same underlying idea of "hey we have this object library that has its own memory allocation primitives and data structures; what if we exposed it as its own language rather than making everyone use it from c/c++"
Clearly no, because Vala has a bunch of issues with memory safety. Not because it's a bad language, but since it translates directly to GObject, there is a lot of problems around pointers, ownership, ... mainly because that language lacks maintainers and GTK/Gimp developers didn't like it because they are "C essentialists".
Also, pthread TLS adds a pointer dereference to each access.
I think we agree.
Faster compiler than rust, smaller binaries, easier syntax, good GUI as defacto library (GTK)
> Rust is on the horizon and have voices to use it instead Vala
And https://siliconislandblog.wordpress.com/2016/10/31/thoughts-...
Also mentioned here https://elementaryos.stackexchange.com/questions/10664/conce...
And it turns out that the Rust people eventually came up with nice ways of integrating GObject, starting from 2017
http://smallcultfollowing.com/babysteps/blog/2017/05/02/gnom...
And nowadays, gtk4 https://gtk-rs.org/gtk4-rs/git/book/ and relm4 https://aaronerhardt.github.io/relm4-book/book/ are pretty cool
So I think that today Rust is a more satisfying language to code with, even in the ultra-specific niche of writing stuff with GObject
However, things can change over time of course.