Master the Mainframe Global User Group

Expand all | Collapse all

Weekly t-shirt challenge: best programming languages

  • 1.  Weekly t-shirt challenge: best programming languages

    Posted Thu July 30, 2020 08:01 PM

    Thank you so much to the aspiring mainframers who posted some great questions - @Nweke Chinonso, @Michel Rodrigo de Sousa, @Vishal Bajpe and some great advice from experienced mainframer @Steven Lauretti.  You're all getting a shirt!

    This week I'm inspired by a huge debate on Twitter about programming versus scripting languages.  The poster was frustrated with everyone arguing which led to - everyone arguing in his comments!

    So let's argue (or share notes) about programming languages.  What language or languages do you prefer and why?  Bonus points for explaining what languages are the most important for students to learn.

    The rules*:
    1.  Every Thursday, I'll start a new discussion thread titled Weekly Challenge.

    2.  This week, reply to the thread with the best programming languages.  

    3.  Vote for your favorite entries by clicking the "Recommend" button next to your favorites.

    4.  The following Thursday, I'll announce the winner and start the next week's thread.

    5.  The person submitting the item with the most votes will receive one of these Legends of Z t-shirts (or equivalent)!

    * The rules are not really rules.  This isn't a real contest or anything.  It's just something I feel like doing and having a fun excuse to share some cool t-shirts with you.  I hope you all have fun with it.  I am!


    Misty Decker
    Master the Mainframe
    @MistyMVD on Twitter

  • 2.  RE: Weekly t-shirt challenge: best programming languages

    Posted Fri July 31, 2020 04:37 AM
    Arguing about programming languages is always fun. :-)

    My preferred programming language is D ( D has a C-like syntax and comes with features like compile-time function execution and template meta-programming. And of course, a working module system. Developed since the end of the 90s by Walter Bright (author of the Zortech C++ compiler) and Andrei Alexandrescu (author of "Modern C++ Design"), it's a really cool language which gives you the power of C++ without all the pitfalls C++ has. Several compilers exist and the language can be used on a wide variety of hardware. The community around D is small, vital and friendly. So give it a try!

    IMHO for students, it is important to learn programming, not a single programming language. The syntax of a new programming language can often be mastered very fast with the help of modern IDEs. Writing good and fast applications requires deep knowledge about fast algorithms, understanding of big-O notation and insight into hardware concepts. If you do not learn these basics, then you will certainly tackle a NP-complete problem with the wrong methods.

    Programming skills need training. I recommend to learn a language with a C-like syntax, e.g. C/C++/D/Go. This syntax is often copied (Java, JavaScript, Node.js, ...), therefore it's useful to be fluent in it. I also recommend to try a functional programming language like Standard ML or Lisp. This really helps to better understand the functional parts of modern programming languages.

    Best regards,

    Kai Nacke
    IT Architect
    IBM Deutschland GmbH

  • 3.  RE: Weekly t-shirt challenge: best programming languages

    Posted Mon August 03, 2020 04:28 AM
    Edited by Praneeth Kumar Mon August 03, 2020 04:29 AM
    My choice is 'Python'

    > It is a beginner friendly language. Widely used for automation of redundant tasks.
    > In the recent times, it has become a popular language in Data Science field. With wide range of predefined functionalities and packages for data processing, data visualization and applying ML algorithms, it has gained more popularity.
    > With wide range of open source community, it is evolving every day with new features.

    For beginners, it's always good to start with easily understandable language having powerful features. Python is one among such programming languages.

    Thank You,
    Praneeth P.

  • 4.  RE: Weekly t-shirt challenge: best programming languages

    Posted Mon August 03, 2020 09:04 AM
    Hi there,
    When we talk about the best programming language, always comes the first one, in my case: BASIC, born in the 80's was used everywhere: Oric1, Z80, TRS80, PC, Apple2e, Apple Lisa, PDP11, IBM 370, etc. Then I knew COBOL my second love!.
    I tried but don't liked: PASCAL, C, ASSAMBLER. I fall in love (again!) with PROLOG.
    In the late 90's the languages began to be used with something new then: The Frameworks, like PHP, Javascript, Ruby, JAVA, C++, etc.
    Now after the MTM18 and the MTM19, I fall in love with REXX, COBOL staying near!
    In between I used Python (I didn't liked in the beginning) but with FLASK I confirmed!
    I used SINATRA as part of RUBY, ADA as a try, and PERL is another very good one!
    Programming languages are like human languages (I speak 5), a kind of intent to communicate, sometimes good and sometimes with a "bloody" accent! ;)
    But I agree with Kai: " is important to learn programming, not (only) a single programming language..."
    My personal advice: Try many until you liked 2 or 3, but use 1 or 2 for different needs.

    Georges Kopp

  • 5.  RE: Weekly t-shirt challenge: best programming languages

    Posted Mon August 03, 2020 09:36 AM

    That's an easy one: Lisp.

    Now, on a more serious tone, it really depends. My favorite one, for quite some time now, has been Python. It's easy, simple, low-effort to maintain and quick to onboard new developers. It's probably not a great choice for mainframes (not even LinuxONE), but it's excellent for cloud applications where you can scale horizontally and spend most of the time waiting for upstream services to return data.

    I've also been playing with Rust and I love the memory safety primitives. They make a lot of sense in heavily threaded single-image apps with lots of mutable context. I don't really love the time it takes to compile (and the time it takes to get things right).

    One I never got to play with is Vala. It's a lovely, somewhat Java-like language that compiles to C and has Python-like slicing. A shame it's not more widely used.

    Ricardo Bánffy

  • 6.  RE: Weekly t-shirt challenge: best programming languages

    Posted Mon August 03, 2020 10:50 AM
    There is no "best programming language" for everything.
    The choice of programming language for a certain project  depends on where and how it will be used.

    If you write a one-time program  that you will run yourself, you are free to choose whatever programming language you choose. Probably it will be some interpreted scripting language like REXX or PYTHON.
    If it is a piece of code that has to be executed hundreds or thousands time each second, you better write in a language that is most native to the machines where it will be executed. Either assembler, or a language that can be compiled and optimized for specific hardware like C.

    An important factor is: who will do the bugfixing and the maintenance, not only the coming 6 months but also after 5 or 10 years.
    If you start working for a boss, or as freelancer for a client, the choice is usually limited to what is already being used in that environment. It does not make sense to introduce another programming language there, just because a new programmer is hired.

    For study/education purposes, I fully agree with what Kai Nacke wrote in his reply to this subject.
    I taught my grandchildren (OO)REXX as first programming language, easy to start with and it will run on their own Linux or Windows PCs. Without my help they were able to learn more languages, such as SCRATCH and C(++)

    To get an idea about how many programming languages there are to choose from, have a look at the famous website 99 bottles of beer.
    As education exercise in the spirit of Master the Mainframe, I suggest you improve the IBM Assembler solution, by using the BXLE and EDMK instructions. Instead of writing to a dataset you could direct the song to JES2 SYSOUT, via a WTO  macro with routecode 11.

    Have Fun!

    Loek Sluijter - Retired IBMer- Master IT Specialist

  • 7.  RE: Weekly t-shirt challenge: best programming languages

    Posted Mon August 03, 2020 11:58 AM
    As almost everyone said, what you should focus at a first step is on learning logic and programming techniques, not on the languages. This because, and many forgot as they think on the math behind computer programming, programming languages are languages, so are ways to express what you want

    I had (and have) studying lots of languages. Curiosly, like a lot PHP, found it nice and simple for webdesign and interesting to work on scripting for open systems. C is also very nice, as you learn how things are done on the barebones, but without to have to dela with the mess that is Assembler (specially x86). Python is cool.

    On Mainframes, COBOL is one of the most interesting languages I think, even with all the nowadays COBOL is dead yadda-yadda, specially because it is verbose enough to be self-documented and legible and almost understandable for anyone, even without a tech background. REXX is cool too as it works integrated on the zSystem environment very nicely.

    But, above everything, you should focus on the best language for the problem you are trying to solve. Sometimes is good to see on sites the very common thread about Someone did X on Y, being X something and Y on a languages COMPLETELY not focused for doing X, like a Webserver on Bash or a GUI app on COBOL. But if you go on this and try to find a panaceaic language, this is a problem. As we say in Brazil, tudo vira prego quando só se tem um martelo (when you just have a hammer, everything becomes a nail), and this would not only becoming a maintenance problem, but also a performance and even a security one.

    Fábio Emilio Costa
    Performance Analyst
    Sao Paulo

  • 8.  RE: Weekly t-shirt challenge: best programming languages

    Posted Mon August 03, 2020 01:50 PM

    I had started working on the IBM Z platform back in 2008 – that was when I started my career in IT. Back then, it was considered nice if you had some non-mainframe skill-sets (JAVA, for example); however, nowadays, it has become more of a requirement and necessity that people working on the IBM Z platform do possess non-mainframe skill-sets as well – 'the more, the better' seems to be the Mantra. And, rightly so – IBM Z has evolved so much over the past few years; the platform now supports development in any of the popular languages of your choice, Containerization technology (zCX), RESTful APIs, Artificial Intelligence (AI) – you mention anything from the so-called 'latest and greatest' breed of technologies/technology trends and the platform supports everything. It is quite natural that people like us working on the platform need to constantly upgrade our skill-sets to stay relevant in today's digital age where technology keeps on changing in the blink of an eye.


    Nowadays, there is so much emphasis given to mainframe application modernization and a lot of work is going on all around. Clients worldwide clearly understand the power and value of the mainframes; they understand that Application Modernization and not Migration off the platform, is the need of the hour. What is also constantly evolving is the continuous adoption of DevOps and an ever-increasing awareness and need of implementing stricter security mechanisms.

    After spending a little over 12 years working in the IT industry, I firmly believe in the age-old wise saying that "CHANGE is the only constant". And, the only way to cope up with the change is to constantly up-skill yourself so that your skills do not get outdated and you remain relevant in the modern digital era. If I look at the IBM Z platform, I feel amazed at how the platform has evolved over the years and if I fail to up-skill myself, it is natural that I would lose my relevance and fall behind. So, in short, one very, very important lesson that I have learned over the course of my career is that you should find time to constantly invest in life-long learning to stay relevant in the marketplace; it doesn't matter which industry you work for or which technology you work in – Learning should not stop.


  • 9.  RE: Weekly t-shirt challenge: best programming languages

    Posted Mon August 03, 2020 01:56 PM
    I agree with the responses above that the most important thing is to learn how to program correctly first.  How to break down a problem, how to  setup sub routines and pass parameters back and forth, how to build a function correctly.   Maybe most important is how to document correctly so that you, or the next programmer, can easily understand what is going on in block of code.  You may wonder why I say "you."  Well once you get in the real world working on a lot of things and you need to go back in a couple of years to touch something, even your own code is not as memorable as you thought it was going to be without clear documentation! 
    The syntax of the languages is different but that is fairly easy to pick up if you understand the architecture of programming.   As another gentleman said, you need to used the languages in use in the shop you work in.   In mainframe infrastructure that is REXX and assembler depending on what you need to do.   Personally I like to use SAS for data analysis but you can't use SAS in something like NetView or TSO for automation and you definitely don't want to write an exit in SAS.   My buddy and I regularly have the SAS vs. REXX wars since my go to is SAS and his is REXX.   We both understand the advantages and disadvantages of each but when you get a case where either will work,  you can have the friendly battle of which is better.    
    Now once you understand programming and are working in a language you should dive deeply into that language to be sure you are understanding all the features and functions and using them correctly.  

    Steven Lauretti

  • 10.  RE: Weekly t-shirt challenge: best programming languages

    Posted Tue August 04, 2020 09:18 AM

    This is an interesting discussion and given the number of programming languages in use (I believe a language is named after every letter in the english alphabet ) everyone has their own favourites. But the question also asked which of these languages students must know. So, I am trying to answer that as well.

    (Human) Language is a medium to understand the literature around you, and your reach is limited by the languages you know. For example, English is not the best language in the world (best language is again other interesting discussion) but just so much great content is available in English that we tend to learn it.

    So going by this analogy, in order to take benefit of all the literature (code) out there, students must have decent grasp of Python and Javascript.

    My go-to language is always Python, and I suggest everyone to at least know the common syntax. It is really easy to pick-up and almost every thing has an open-source counterpart written in Python somewhere on GitHub. And it is powerful enough to fuel large projects. You can't match the scope of Python :). Javascript is the language of web, no matter what framework or tool you use, you will always need to interact with Javascript. And again open-source programs are being heavily written in Javascript. Also, Javascript (with proper highlighting) is the most beautiful language (according to me).
    These are languages I would suggest everyone to know, from as early as possible.

    But there are many concepts that these languages abstract, (and they are dynamically-typed) so for a more formal understanding of languages (and yeah speed) I would suggest to learn C++. Java is just too much code and somehow lies exactly in-between C++ and Python (/javascript), and borrows common syntax from C++. It is easy to pick up after C++. I never found a reason to focus on it (in current scenario) and I'm biased against it.

    From the remaining spectrum of languages, Haskell is my go-to (new for me). I've seen start-ups switching their entire code-bases to Haskell to save development times. There are just too much added benefits of going full-on Functional Programming and would suggest students to keep an eye on it. I am learning Haskell and looking into it. I hope others will also find it interesting.

    These are my preferred languages and also my suggestion to students as well.


    Shubham Kumar Jha

  • 11.  RE: Weekly t-shirt challenge: best programming languages

    Posted Tue August 25, 2020 08:29 AM
    I agree with most other people but I think Python is probably the most versatile in terms of its libraries. I can use through micropython for IOT to astronomy work to pandas/numpy for machine learning. It is really a good all arounder.

    Karan Naik

    Karan Naik

  • 12.  RE: Weekly t-shirt challenge: best programming languages

    Posted Tue August 25, 2020 12:03 PM

    I must make a clear separation here between general purpose languages and domain specific languages. Their purposes are very different.

    In my opinion the best DSL is COBOL. No other language has been around for so long and still serving its purpose. This language was made in a time that agile methodology wasn't mainsteam, yet it managed to do what was, especially then, very uncommon: Let programmers and non-programmers work together on the same project. This is only possible because of the language structure and design.

    The best GPL in my opinion is Go. The power of this language is that it managed to create a very nice balance between performance and code readability. Sure Python is very readable, but it's by far not as performant as Go. Sure C++ or even Rust is very performant, but it's by far not as readable as Go. Add to that the idea of web/networking as a core part of the language design and it should be clear why this language has been chosen by large projects such as Docker, Kubernetes and even IBM's own blockchain framework: Hyperledger Fabric.

    For this reason I myself also switched from Python to Go, because it allows me to write complete backends without the use of heavy frameworks. The language gives me all I need.

    Arjan van Eersel

  • 13.  RE: Weekly t-shirt challenge: best programming languages

    Posted Tue August 25, 2020 04:33 PM
    Hi Arjan,
    Which is the simplest way to learn GO or Golang? Because I tried but I found it too complicate and not very friendly and not useful as well, for general propose.

    Georges Kopp

  • 14.  RE: Weekly t-shirt challenge: best programming languages

    Posted Tue August 25, 2020 02:55 PM
    I was never a developer but since I started in my career I had opportunity to know several languages already mentioned here, like assembler, PL-I, COBOL and JAVA. Nevertheless I 'd like to mention one that I don't know if someone in this audience knows. It is a 4th generation language called NATURAL. It is a extremely easy language used to access mostly the ADABAS database with  semantics very similar the colloquial language. It was largely used in Brazil in the 80's and 90's to develop online system under CICS. It also can be used to access DB2 and IMS in mainframe and other databases in LUW environments.

    Marilene Munhoz

  • 15.  RE: Weekly t-shirt challenge: best programming languages

    Posted Tue August 25, 2020 04:25 PM
    Yes Natural was very easy! And they have a special language for Reports called  SuperNatural, very useful too! I used it around 1985.

    Georges Kopp

  • 16.  RE: Weekly t-shirt challenge: best programming languages

    Posted Wed August 26, 2020 09:28 AM
    Edited by Barbara Cullis Wed August 26, 2020 09:33 AM
    Natural and ADABAS are awesome.  I coded in Natural for 10 years at PSU, 1985 - 1995.  Much of the code is still running.  Natural and ADABAS have been widely used in higher education, utilities, finance and government.  It's still out there!

    Barbara Cullis
    Faculty Program Director Technology Projects
    University of Delaware
    Newark DE

  • 17.  RE: Weekly t-shirt challenge: best programming languages

    Posted Wed August 26, 2020 11:26 AM
    "Best" is a popularist metric, and is suited only for soccer teams :-)

    I began in the 1980s on several variants of BASIC - I was a self-starter, and didn't grok assembler, the concept of 'registers' or anything like that.  BASIC worked because I could look at examples and learn from them - and I had no such gentle introduction to assembler.  In my pre-Intel days, I've used BBC Basic (and the Acorn Electron variant), Spectrum +3's BASIC, AMOS and AMOS Professional, some LOGO (in which I think we wrote an email system), and a bit of QBASIC and Visual Basic.

    At university, we were taught Miranda - a purely functional language.  I never quite fitted in with the way it was taught and didn't "get it" for a while - possibly because the speed of the tutor was different to my speed of learning.  We then did some ADA and dabbled in PROLOG - both on Solaris systems, neither of which suited my style - and this was the early days of Java, but too early for us to learn it formally.

    When I left and got a real job, I learned Perl.  For me, this was the ideal language at the time - I could manipulate text, automate network monitoring functions and do almost everything I needed to.  PHP too, much as I dislike it now, did me proud because I could build web applications in short order - which is what I needed to do.  I then put Perl behind me when it came to building MVC-style applications and brought myself up to speed with Ruby so I could use Rails.  Again, this was an ideal language - it suited what my colleagues were working on, and we had in-house expertise.

    A few years ago, in my late 30s, I moved over to Java.  The company I was working for was a Java shop, and I had access to plenty of supporting material - and that's where I am now.  Although I never did COBOL, I wrote some code last year to take flat file data from a PDS on z/OS and convert it in to CSV format using the copybooks supplied.  I could have done that in Java, but why, when the right tool for the job was easier to learn?

    Looking back, the best language to learn as a student would have been Java - but it was difficult to say that with confidence at the time.  Do you learn the new shiny language, the trusty older language, or something that fits in with your environment?  I've always gone with the latter.

    For anyone new to programming now, I'd suggest Python was a good choice to learn.  It's object oriented, doesn't have a complex toolchain and whilst it has quirks and dislikes not having sufficient spaces or tabs, there's a massive community and it's a brilliant foundation if you want in to Data Science, or building web-based applications.  It may not be the purist's choice, but it's well known and a good foundation.

    Peter Hicks