Programming is very exciting to me. It allows me to use the computer’s language to replicate my ideas digitally. This can then be distributed to people worldwide, making the computer platform a very powerful thing to harness. What makes programming languages different from other kinds of computer languages is that a programming language is compiled and used to write the majority of the software being made. My goal is to be able to harness the power of programming to be able to make games and write other software efficiently. In this pursuit I’m trying to learn C++, Java, and programming for Android.
C++ is a high-level, object-oriented programming language used to develop computer-based applications, whether through the command line or through an executable. The advantage to C++ is its ability to explicitly define memory commands and being backwards compatible with C, which is not object-oriented. Java is another object-oriented, high-level programming language used to develop computer-based applications, but Java is given built-in 2D art commands and the ability to produce GUIs easily through Java Swing. Java is also very portable, being able to run on anything that has the Java Virtual Machine (JVM). The main drawback to Java is that you are not allowed to explicitly define memory commands but instead uses garbage collection to filter through the memory, which can sometimes be CPU-intensive in itself. Android is programmed using Java and is structured with XML markup. C++ can now also be used by developing with the Native Development Kit (NDK). Android is becoming the biggest OS on the mobile market making this platform the best mobile OS to distribute to the largest amount of people.
Programming languages’ functionality can also be extended through libraries. Libraries are third-party code resources that people have created so they can be pulled from later on when needed in a program. This is usually through pre-built functions that are stored in the library that can be reused in code to improve efficiency. Libraries can also be written in several languages, this gives the programmer a vast resource to pull from that is not available in the native language of choice. e.g., LWJGL, which gives users of Java OpenGL features and a few extra game-related features that were previously available only in C++.
“Imagination is more important than knowledge.”
HTML and CSS is a big part of what I use on a day-to-day basis. With the latest editions to these languages that are an integral part of the web, these languages have taken entirely new abilities. With HTML5, the web has been introduced with new structural elements, video and audio capabilities natively, the amazing
canvas, and the deprecation of old elements that have been replaced by more suitable counterparts. CSS3 has gone on to add tremendously more customization even to this day. This adds many exciting new features, such as CSS animations, shadows,
::after, and many other great additions that changed the face of the internet as we know it. Of course, these new features didn’t come without its downsides. All the new properties and pseudo-selectors brought many inconsistencies that we’ve slowly seen smoothed out. During that time, and to this day, many libraries were released that worked with different rendering engines and old versions to let developers use the new features on older browsers as a polyfill. Many of these are still extremely popular to this day and even used in this very website to help smooth out the inconsistencies across browsers.
As CSS4 is still being worked on and planned to be released around 2020, there have also been many exciting third-party additions. Preprocessors, for example, have come to light and have made writing CSS much easier in some respects. Most of them utilize a programming language known as Ruby which is derived from C. It utilizes Ruby’s “gems” to compile a preprocessed language, such as Sass, to CSS. This has allowed us to use CSS variables, auto prefixers, more advanced math operations, and more through the power of third-party additions known as mixins. There also have been some exciting developments in browser APIs (application programming interfaces), such as the Web Audio API, which makes game sound handling easier through native JS. Inline SVG has also become popular recently, allowing you to make vector graphics straight inside your HTML, no external file required.
XML in Android is also something I’ve been experimenting with for making Android apps. XML allows you to harness the power of Android layouts to structure your app and invoke certain Java functions through markup attributes. While that is entirely separate from the web, it’s still a very powerful tool to learn to be able to create Android apps.
HTML and CSS have come a long way, and with all the new technology, it doesn’t seem to be stopping any time soon.