|My Favorite Languages|
|Z Shell||Very Active|
|Java||Total Novice Student|
|C||Formerly Novice Student|
|C++||Formerly Novice Student|
|C Sharp||Formerly Active Student|
I am just a little obsessive about the things I create being done right. I also tend to be talented at doing many detail-orient things, so my time at a computer is often either interrupted or short. That said, I love learning, particularly in science, and have tried to carefully analyze every programming language I have access to, in order to decide which is worth my time to work hard and become good at. Many of the currently most popular languages, C#, Go, C++, Java, and more have attracted my attention, but only after long searching, and a few months of studying and working in C#, did I realize which were really reliable, simple, and most cross-platform capable. In the end, I settled on Ada being the best, but due to its insufficient cross-platform GUI support, Java, Go, Python/Kivy(Most notable) and Tcl/Tk are being considered. Beside the proper programming languages, I am an enthusiastic fan of Zsh, which I have been settled on for a long time. With MS Windows 10 now beginning to support an embedded native Linux environment, it is becoming practical for me to use Zsh anywhere with advanced programming/scripting being cross-platform and maintainable. The only major things a Zsh environment lacks are a GUI and the speed/compatibility of a natively compiled executable. So ultimately, The best programming environment for producing something and being truly cross-platform is probably going to be Zsh, Ada, and Python with Kivy. * After further reading into the subject, I found that Python has some serious issues with slow performance and needing dependencies - not a reason to not use it for my purpose. Also, against my previous belief, I can't find a professional grade Ada compiler for iOS. This automatically bumps Go to the top of the list for cross-platform. Ada is still my favorite, and iOS will still run Ada apps via direct content drawing from a web server (Gnoga), but that requires a local web-kit-app of some kind, so I can only hope a compiler will be made for iOS someday and have to divide my efforts with Go for now.
Note: By cross-platform, I mean to quantify how effectively code written will compile and run on all major operating systems with little or no variation, including: MS Windows, Mac OS X, Linux, Android, iOS, FreeBSD, OS/2, and the most major other Unix-like operating systems. If one or two of the first five is is not supported, it means the language is much less cross-platform, even if is well supported on the others.
- What I found was that Java is the most well established as cross-platform, but with different support levels and different APIs on different systems, most notably not supporting iOS, and having a C-like appearance it is not the most simple and not completely cross-platform.
- Go is a magnificent language that is probably the most cross-platform native-compiled language, yet still young - with new areas of development likely being worked on.
- C# is also marvelously well constructed and easy to learn, but it has a few serious design glitches. Most notable is the structural dependence on the MS Windows operating system's design, which had to be emulated/implemented from scratch for other operating systems, dividing the support community into different groups trying to solve the problem, namely Mono and Xamarin. Neither are truly cross-platform (see Note) and production ready. Also, because certain features made for very long, bracket-heavy code, an alternative style is also used. With either being used, the language seriously loses the value of simplicity and readability.
- C++ and C are both good for interfacing with from a variety of languages and are very useful, but simply put, they (more C than C++) are accident prone, imprecise languages that are not easy to read. C is a low level language, so work done with it will be slow and tend to not be cross-platform, despite it being supported (or mostly supported - iOS) on all platforms. C++ is more mid-level, with clever unbounded/vector string handling and access to high-level features through object-oriented types and language-standard updates that significantly improved the language over the years. Though strong, C++ has accumulated way too many syntax and library enhancements over the years, making it no more desirable than C. Both C and C++ libraries and code are long overdue for a complete conversion to an easier to read, more maintainable language and every year that is put off we as a people become more deeply stuck in the bog of inefficiency and bugs that are created by working in them.
- Tcl/Tk is a marvelous and most efficient scripting environment. Also, because it can be statically embedded into other software, it is more useful and efficient than typical work in Java or GTK (which I like, by the way). It would be my first pick for working with Ada, but because of insufficient support in the latest years, it is altogether lacking any dependable support on Android and iOS (AndroWISH is for pure TCL programming and not really for integrating into other software). I still intend to use Tcl/Tk for my small programs and scripting with Zsh, but it is not worth my time becoming very good at when I can't produce anything Sale-worthy on all important platforms.
- Python/Kivy is the last and best GUI tool I think I have found. Python is well established and runs almost anywhere that I might be concerned about. It is designed with the ideal that one python script using Kivy will produce the same result graphically on all operating systems. It also is designed with the future-thinking expectation that all programming will have to accommodate all the newest input features of modern mobile devices. I have not had the chance to work in it yet, but it has become my main target to work with Kivy as my GUI front end for all programming of compiled languages by interfacing my Ada programs with Python and having python do all the human-interactivity work, reporting to Ada which will do all the computational work. This way a native executable can run (Ada) and a cross-platform, simple scripting platform (Python) can do all the facilitating.
- Ada is too good for words. It is well supported, started by the USA Department of Defence, and almost as old as C. It has all the coveted features of modern programming languages, is extremely precise and strongly typed. It is both a high-level language, with cross-platform-stable file management, unbounded strings, various kinds of list-like containers and much more; and a low-level language with Assembly Language being embedded directly as procedures or functions on a specified data type and C/Fortran/other procedures and functions being importable for all direct operating system calls. The language has hardly changed at all over the last twenty years and yet it has full language-implemented multitasking and works with the modern world very well.
- REBOL/Red is completely unique and upcoming as a potential replacement for C, Go, and low-end Java. Though it can't replace Ada, Red comes with support for modern protocols and mid-strength typing, much like Go. It also can be run as a script or fully compiled into a native executable, like Go. Like C, and less like Go, Red System (the static low-level language Red script compiles into) has more basic system programming capabilities and has less focus on user input/output or input/output filtering. It might be used for general programming as the replacement for C. REBOL is the foundation for Red, but has become mostly ignored by developers because of it's over-focus on basic interactions with a user and development shifting over to Red. In Red a clock/UI can be written in about ten to twenty lines of code and native support for JSON, IP addresses, graphical images, files, and much more as libraries and types are standard -- in fact, the standardizing of types like these is one major reason REBOL/Red is so compact and powerful. The best part is that the whole environment can be distributed in a few megabytes and run instantly with a simple executable. Sadly, Red is still in the early development stages and is only complete enough to support demonstration apps right now. Support was added for Android recently, and if Go can create an OpenGL screen printing interface for iOS, I suspect Red will soon as well.
Programming is my fun and an important part of my employment plans. I worked as a US Letter Carrier for a number of years. I enjoyed serving the public as a letter carrier - and would be inclined to do it again - but the U.S. Post Office is not reliable for long-term employment (they use people for a while, then dismiss them or change the contract, ever since the career-status hiring freeze in 2007-2008). I decided to work in computing for the health industry instead. The medical industry is stable and well paying, but I want to avoid the sins and liability issues that plague the career workers there, so I prefer to work behind the scenes in databases, IT, and information processing. I am a long way away from getting where I want to go, and I have lots of opposition at home and abroad, but medical information handling, programming in Ada, and professional-grade blade and cutlery sharpening are the areas I enjoy working in, so that is where I will have to work. Unfortunate or fortunate it may be, Ada isn't the dominant language in computing and C, C++, Go, Java, and maybe .Net languages seem the most promising for modern/future career work. I wish I could educate the hoards of talented programmers who have been directed by popular misinformation to the most inferior popular languages, so they could have the chance to use Ada and see for themselves the better way to program. If I can influence a few in schools, I have a chance of getting a few in that direction. The more programmers are well informed at the start, and the more commercial production is being done in Ada, and possibly Red, the better our future will look as a people. That is, I think the more we as a population focus on the best and most stable programming languages, converting and replacing everything old and hard to maintain unto them, the better our future will look for producing more, more quickly, and more enjoyably. That means better device usability, better work productivity, better emergency and military response, and more meaningful recreation. I guess that for my career, I am stuck with my options and I will just have to become more proficient and diverse.