C has its root buried deep in programming world. A lot of things were written in C, big things, that people don't want to touch but they have to use. It's no longer as popular as, say 5 years ago. Along with Java, the popularity is being decentralized as communities of other languages get stronger (including Pascal).
HN user
leledumbo
Yep, that's why I always recommend Lazarus instead of cracking Delphi illegally.
Too wonderful. I was shocked when I see common filesystem drivers (including NTFS!), completely written in Pascal. The author must be a programming God.
Lazarus and/or Free Pascal? Android is looking good, though maybe not really a pleasing experience for those with less experience. It even has multiple approaches. iOS is still dark, no one seems interested in making it work, even Arduino gets its place before iOS.
Delphi? Some big mobile apps are written in it already. WPS Office for Android and/iOS, if you ever heard, was written in Delphi. At least the last time I decompile their APK it confirms a Delphi runtime existence. Disadvantage would be the framework that's not native, thus you may end up in jumbo size APK even for a form + label containing hello world.
No other RAD claiming IDE has the same RAD capabilities as Lazarus or Delphi (or C++ builder), including QT Creator. Live database connection and manipulation while designing your form and data module? Nah, it doesn't even know what a data module is.
Smaller and simpler (written in old Delphi, with some 3rd party packages, so Windows only), nothing else I guess. Lazarus is far superior in every other aspects.
As MySQL develops, the bindings are updated as well, but most people will have to wait for stable release. If you use trunk, though, you can enjoy it right away because MySQL bindings has been designed rather easy to port a new version.
Yes it is, finally :) I like the ability to extract build information from .lpi, despite still needs a lot of work (macros won't work), already lifts the burden to write the unnecessary build scripts.
It's what Pascal should have become IMHO. Base syntax: case-insensitive Oberon. Extensions: Object Pascal features. Now that's heaven. If only we don't need to maintain backward compatibility...
It's been 15 years since Lazarus (and thus LCL) was born and the following changes has happened:
- GTK1 interface is obsolete (was mainstream), GTK2 is mainstream, GTK3 is on the write - QT4 is mainstream, QT5 is on the write - Carbon is mainstream, Cocoa is near completion
I believe legacy already shows how the project can keep things up to date. It's the power of full community driven project, there's no necessity for a single maintainer to update everything on his own. Contributors may come and go, but they're there to update things.
That's what the community has been missing all these years. Writing documentations are boring activity, so contributors tend to give only demos, examples and sometimes unit tests. How the system works is actually documented in a simplified diagram here: http://wiki.lazarus.freepascal.org/Overview_of_Free_Pascal_a...
It's already done. Many people in Pascal community works with Arduino, Pi, Odroid, etc. Ranging from simple LED toggling to complex robotics.
I assure you, it can. Be it through API, custom socket protocol, bindings, no problem. When one doesn't exist yet, creating yourself is not a big deal.
I agree with your first 2 sentences, which Modern Pascal is just as capable, if not more, than Java. Lazarus is an example of such complex project, it has near 5 MLoC (without external dependencies) according to openhub and is managed just fine, thanks to the compiler's smart dependency management.
Modern Pascal is a very good language of choice when you have tight budget but still want to compete with enterprise Java systems. The low resource requirement is one prominent factor while the performance is similar if not better in real world applications. We have one of our apps (web application with embedded web server, proxified by nginx) running constant 100MB RAM only at peak, single process, while serving tens of thousands of users, backed only by a single SQLite database. Even the 100MB is mostly due to our template engine automatic caching system.
Java will win in microbenchmarks, but that's the best HotSpot JVM can do. Tight loops and complex calculations are actually seldom happened in enterprise apps, while context switching happens a lot more often as (a lot of) users move from one context to another frequently.
Good to know that many things are native Pascal nowadays, even some great Pascal people choose to either write from scratch or native porting instead of writing wrappers. Personally I don't mind using wrappers, but having native Pascal counterpart is better in the long run since no 3rd party implementation dependency required, things can be fixed and improved right away.
just a single reference to open your eyes: https://ultibo.org/
web servers are just network programming, it's even easier. FPC even ships a HTTP server library with examples in only a few lines of Pascal.
I never need a closure. You need a shift in thinking, closures are much heavier than ordinary procedures, at least in Golang (yes, this is a real world experience).
Delphi has closures, FPC is on development, but in the end I won't use it much. I need performance and maintainability, closures are against those two.
I do. I don't use CGI, though. As I find the embedded web server is more reliable. However, changing between CGI, FastCGI amd embedded server is a matter of changing a single uses clause entry.
It's applicable for both the preshipped fpWeb and Brook, which is my choice of web framework due to its simpler and shorter hand coding.
Nope, it will require porting. Only the pure Pascal part is portable. The Assembly and MacApp parts are not, and MacApp no longer exists in OS X AFAIK.
Surely you have no idea what you're talking about. Pascal is modern, perhaps you are the one that's not up to date. Java? Err.. assuming everybody has a lot of RAM, maybe. JavaScript? Forget about it, unless you can find a compiler producing native executables. Go? Has anything useful ever been written in it?