Bill Buchanan - My Five Favouriate/Least Favouriate Computer Programming Languages

ASecuritySite Podcast - A podcast by Professor Bill Buchanan OBE

Categories:

Blog: https://medium.com/asecuritysite-when-bob-met-alice/my-five-favouriate-least-favouriate-computer-programming-languages-dd8a560c27a I love programming and think that every child should be taught it at school at an early age — and, for me, coding is for everyone. As an artist uses paint and a canvas, programming allows me to practice my art — cryptography. I can then re-enforce my learning of theoretical methods into practice — and where the learning comes alive. It also allows me to script things that would be extremely time-consuming. With the Cloud, for example, I can open and close ports on a firewall with a simple Python script — and which allows me to avoid logging into a system and using a silly GUI (Graphical User Interface, aka browser) to perform a simple operation. Overall, I have taught programming in the past, but I have no desire to teach it as a subject on its own. Personally, I would rather teach cryptography or cloud computing and then show how code can be used to implement things practically. And, so, here are my favouriate programming languages and least favouriate ones. My Web site (https://asecuritysite.com) has a range of programming languages. Sometimes I pick the language because it is easiest to implement a given method, but other times I might only be able to find a certain method within a given implementation. And, so, you will find lots of Python, Golang, Rust, and JavaScript, but not so much for Java. You will not find so much on C#, but that is the core language that I use to build the Web site, so it’s still one of my favouriate languages. The best for me? I know many people will disagree with me, but my five favouriate programming languages in order of how much I like them: Golang. It just always works for me, and no real problems in finding libraries. C is my natural programming language, and I just find Golang so intuitive in its structure and the methods it uses to compile programs. I also love a command-line approach to compiling programs, and which can provide an alternative to complex GUIs. For prototyping, it is great and produces executables which can work across different platforms. It is, though, very much a back-end programming language and will produce fairly dependable code. I particularly like it, as it loads its libraries onto my machine with a Git pull, and it gives me some satisfaction that I am pulling a fresh version of a library. C#/ASP.NET. It has (mostly) everything you need, and you can build systems in so many ways. With ASP.NET, we have a pure (M)odel, (V)iew and (C)ontroller approach and can properly code for the Web. I vividly remember changing from Microsoft Windows coding to ASP.NET, and it opened up a whole new world of Web coding. In less than a day, I covered 100s of thousands of C# code into an ASP.NET environment. Python. The syntax is a bit horrible and can break easily, but it’s powerful and portable. It misses many things that I would think are natural, such as a proper for() loop and repeat … until(), but it is the fall-back language that many systems will use. As it is interpreted, it is fairly slow, and can lack a bit of robustness, but for its scope, its everywhere and can turn its hand from microcontrollers to cloud scripting. Rust. If we were to start programming all over again, we would use Rust and not C. We fell into a large trap in using C programs with its usage of memory pointers, and pointers to pointers. Rust teaches you good programming and how not to rely on the garbage collector to get rid of your variables that you do not use anymore. PowerShell. If you know C#, then you know PowerShell. While many think it is just tied to Microsoft Windows, it can now run on most operating systems. Basically, it is the command shell programming language that Microsoft Windows has always needed. But, watch-out, those cybercriminals can use it for bad purposes. It is a saint and a sinner. The worst for me? And my least favouriate: Java. So, sorry. I know it’s one of the top computer languages around and extremely powerful, but Java has just passed me by. I think it is all the hassle of building class files and defining class paths, but it just doesn’t work for me. JavaScript. Well, it has very little to do with Java, but I still don’t like it. It is, though, extremely powerful and one of the few computer languages that can exist in the browser but also in the back (with Node.js). Many years ago, I predicted that JavaScript would die off as it was a horrible language and basically fossilised its version. But, I was wrong, and while Flash and all the other plug-ins for browsers have fallen, JavaScript has rebuilt the Web, and where code now runs in the browser rather than calling back to a server. And its version control is really terrible but powerful. With npm — its package manager — we have a quick way to install libraries, but also a convenient way for the delivery of back door trojans. And, for remembering the syntax? I have very little clue about that and often have to Google for the basics of a Writeline statement. PHP/ASP. These are terrible and allow for the integration of mark-up code that can be rendered when delivered. Both PHP and ASP are bad, and lack any real debugging environment and proper code integration. Luckily, Microsoft saw the errors in the ways and updated ASP with the ASP.NET and allowed the integration of the Razor front-end code and C#/.NET as a backend and middleware. It provided a proper MVC (Model, View and Controller) solution. And, for PHP, I would never even consider it for a minute as a solution for anything. To me, I can often spot an old site with its use of PHP or ASP. There was a time when it opened up the Web for customisation, but it passed quickly. SQL. Some would say it isn’t a programming language, but it is. It is the oldest programming language, and it is showing its age. I appreciate it is powerful and simple to use, but this power opens up so many security problems. And, too, the days are SQL are numbered with the rise of JSON objects and NoSQL databases. C++. I grew up programming in C, and the languages I like most use a C-style syntax. But, C++ came along, and I just missed it completely. I appreciate that the world became object-oriented, but I just have never liked the basic syntax of C++, and so I avoid coding with it. Oh, and I know many will disagree with me here, but Perl is a nightmare to debug and understand. Perhaps these are one of the reasons it is so powerful — as it can obfuscate the operation of the code. Conclusions And, there you go. Golang and Python for prototyping, PowerShell for pushing the operating system, C# for infrastructure building, and Rust for production code. So learn some Golang: https://asecuritysite.com/golang and some Rust: https://asecuritysite.com/rust Which are your five favouriate and least favouriate programming languages?

Visit the podcast's native language site