I
have been following the development of several different programming environments, but not so much with Qt/KDE and C++ in general, because of maybe irrational disagreements with the grammars and complexity of the compiler.
I started out learning how to code originally with BASIC, when I was 8 years old, on an 8 bit TRS-80 with MS Basic (2.1, I think it was), and by the way things were back in those days with the lack of a GCC compiler (at least, me not having access to USENET or an intel based processor computer) I spent a lot of time exploring languages that generally tend towards being clustered with the BASIC side of language types (by this I include also languages like Pascal, Python, Modula 2, Oberon) and it was quite some time before I really got much chance to learn C.
I wrote a Mandelbrot set generator, in Turbo C, back in the day, and it was quite exciting for me to have some time to access a laptop with an amber plasma display, that had a 387 floating point processor, and I used K&R's book to figure out how to translate my BASIC version of this simple program, to target C and the graphics library - I forget which - that let me see some really fast processing.
On my Amiga 500, it could take as long as 5 minutes to draw a view of the set, the more I zoomed it, of course, the bigger the iterations had to be to get a sharp boundary of the black region of infinite iterations that generates this famous mathematical object. On the 387, it was under 2 seconds.
Computer Language Theory
Anyway, I spent more of my time reading about languages and especially books about methodologies and models than coding, basically, and I read books from back in the heyday of Computer Science (the late 80s-early 90s) about refinements and developments in different types of programming languages. I did even start to try and write a python-like language that used whitespace structure - this is how my favourite language of all time back then, Amiga E, was structured also, using a book about compiler writing and language design, using Bison and Yacc and some other tools.
So, to sum up, I am very interested in the subject of computer language theory, but especially about issues like documentation, code readability and security against common bugs being built into the grammar of the language or in the compiler and generated runtimes. Correctness is a subject I am very interested in, and it is my view that the more cumbersome a language is to read, the harder it is to avoid serious logic errors that often also become vulnerabilities to exploits.
My explorations of possible systems programming systems for projects
A few years ago, after my first foray into the Blockchain world in 2013, I started to come up with ideas for blockchain architectures, and when I was able to sit at a computer and have a go at writing some code, my first issue as a long-time-out-of-the-loop aspiring programmer, I did quite a bit of exploration. I mean, I had looked at Qt, because I remembered quite liking KDE in version 1 when I first finally had a PC running linux (Red Hat 5.1) in 1998.
I also encountered GNOME, and its first iteration was pretty terrible, second version was better, but a few years ago as I was looking at my options for programming environments, I discovered that GNOME 3 is very very nice indeed. Not just a bit less memory intensive, but also very pretty, and with an interface that is only bettered by Android and Windows 8+ for coping with HiDPI displays.
But more than this, even since GNOME 2, it has had a very comprehensive event callback system which enables handy things like configurations that instantly apply, but is of great relevance to any software project, which especially with network based applications, are by their nature event driven.
My early ventures into coding applications
At first I was just tinkering with building GUI applications using Gtk+ 3, and I learned about Vala, which is a lot like C# - implementing OOP and Functional Programming features by using GLib and GObject and generating instead of assembly or binary code, it generates compliant GCC code. I have done a fair bit of code in Vala, and interspersed with that, Python, and though I did not in my own experience conclusively decide whether I liked Python's approach versus Vala, whenever I code in Python, I am always cursing not having access to the convenient anonymous function, as some callbacks can be incredibly simple and really don't warrant writing a whole function to implement it.
But it's not a dealbreaker - I prefer the readability of whitespace structured code. Python is just far slower than compiled code.
Enter Vala and Genie
For anyone who also likes non-C-like programming languages, especially ones like Python and Delphi, you can now use much of these grammatical structuring notations like these languages, but produce very tight code that is nearly equal to pure C, but with simple management of memory with almost completely automatic allocation and freeing of resources, as well as a strong type checking in the compiler, which is also enforced within the GLib and GObject libraries at runtime (as well as, introspection, which back in the day used to be called 'reflection').
The Vala compiler includes a second language called Genie, and you can find a good introduction to its grammar and syntax at this page:
https://wiki.gnome.org/Projects/Genie
I have up to this point avoided really digging into Genie, because there is not a great deal of documentation, or example code, but the compiler is stable as is the language specification, and because I was focusing on Gtk+ 3 applications.
But now I am wanting to write network database type applications, Genie, like Vala, includes always GLib and GObject libraries, which the equivalent in the C++ world would be like having Boost++ integrated into and implementing most of the language's constructs (GObject allows introspectable objects like how Python allows introspection of objects, allowing easy runtime changes of both code and objects, without the complexity of self-modifying code).
The other advantage of Vala/Genie is that it is not difficult to integrate any C libraries into it, the variable and function and class definition stubs just have to be written into Vala grammar, and by this, valac, the compiler, can then address these libraries correctly. At present, there is a pretty comprehensive set of library interfaces and for most tasks no new one needs to be made.
Digging into the Genie
I am commencing a second, more serious attempt at tackling the learning of this language, and further developing my ability to design and structure programs correctly. I want to also learn to document my code well.
There is a great inertia in the software industry towards new programming techniques and languages, partly because of the cost of maintenance of code and documentation. The majority of developers of systems and performance critical applications have a familiar set of tools, but these tools are much more cumbersome than, in my opinion, they have to be, and the opacity of the language grammar and excessive but not beneficial flexibility of these systems just makes them produce code that is harder to fix.
It should be a rule in programming, like the inspiration vs perspiration principle:
Good software is 1% good ideas, 2% coding, 7% debugging, and 90% maintenance.
Maybe it's Pareto distributed, and 80% is maintenance, and 20% is building it (including design). The design is very important - it should focus also on the facilitation of the most work involved in the life cycle of software. The more a system can be broken into smaller, simpler parts, the easier it is to isolate problem areas, as well as extend, and the most frequently executing code is profiled and optimised, when the design is modular, it is easier to eliminate side effects in algorithms, which increase with complexity of code.
Well, that's my opinion anyway. YMMV.
We can't stop here! This is Whale country!
![](https://steemitimages.com/640x0/http://s20.postimg.org/igf27v79p/signature_new_small.png)
hey mentor! It looks like you are looking for a fast programming language, yet easy to learn and code. Ever touched Lua & LuaJIT? It is easy to earn, fast as hell and still scripting, also mature enough and with a decent community.
-- @develCuy
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I only know of lua as a language used for scripting extensions for some apps which I can't remember what. But I am using Genie because it is practically the end result of the beginning of a grammar spec I wrote years ago. I even included using a colon to specify the type of a variable. Genie is like a nice mix of Pascal and Basic. "serious" language people sneeze at the many educational languages.... even though they are complete...
The other thing I really like that it compiles to C. Compiling to C makes so much sense, why reinvent the assembly code generator when there already is a very good one?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Reminded me of http://harmful.cat-v.org/software/c++/linus - I learned quite a few langs in the distant past, but C was always... home :) These days it's mostly perl unfortunately. I wish I had time for a side project...
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
This comment by Linus is particularly hilarious. Choose C to keep C++ programmers off the project! dun dun TSS!
Well, everyone has opinions but I think that a guy who knows kernels inside and out probably knows something about quality and compact code... I have always been in the anti++ camp since back in the day.
I remember when Microsoft released their big thing about the design of NT, I read the whole thing. I didn't know a lot about unix at that point but it seemed overly complicated.
Just because a lot of people do something doesn't mean it's good, and just because some people have made it work despite the bad design of the tools they are using does not affirm the value of the tools. I mostly have focused on procedural and more recently, functional languages up to now, and I haven't really done a lot of work with OOP.
But if you had told me 25 year ago that someone would make a reusable library to implement object primitives and then write a compiler that translates into the same language the library was written in, I would have immediately said 'well, that's the most efficient way to do it.' OOP languages mostly generate the code that implements objects, meaning by its nature it must be using more memory. Sure, for some specific cases, it can be better to minimise library calls or other branches, and for that, it is a good thing if the language allows you to not use objects as well. So far every box is being ticked on the Vala/Genie project in my opinion.
GLib is the foundation of a hell of a lot of software now and it's had enough eyes on it that it performs well and stably. It's been in development also for about 20 years, dating back to the inception of the Gimp, from which spawned all the GNOME stuff.
But yes, back to me organising myself a main project... since I have the luxury of the time and some resources and knowhow. I am working on running a witness!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I have to agree with @develcuy here.
LuaJIT implements some of the most cutting edge state-of-the-art JIT tracing techniques out there. I got around to benchmarking it against other scripting languages, like Python, Javascript(Node.js), Ruby in addition to some statically compiled languages like C, C++ and Java. I was surprised by the results, it was beating pretty much all of them except C and C++ -- yes, it was even beating V8 engine in NodeJS!
This is especially impressive when you consider LuaJIT is mostly the work of one man, my hats off to Mike Pall.
If you haven't considered Lua before, I definitely recommend checking LuaJIT. It has a nice C API interface that's much easier to work with(compare that to Python's C API). It's not just a scripting language, it works quite well as a general purpose language too.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
We had some experiences in common. I wrote a few Mandelbrot programs in various languages. I do C#, C++ and Oracle PL/SQL professionally, but am having fun with Python too. I'd like to get into more languages, but there's never enough time. Not heard of Genie and Vala. Maybe you can post some examples. I find it fascinating how people come up with totally new languages.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Come on!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit