There are extra problems with reading large programs, beyond their simple length. The number of programmer-defined words in a program can be, and very often is, larger than all the words in the original programming language itself.
When writing a large program, the programmers will have been forced to invent thousands of all-new, program-specific words in programming terms, variable names 7 to describe their particular problem.
While these names are more often useful than not in understanding what the program is doing, not-useful names are still far too common 8. Even if they are individually easy to understand, the very number of words means that programming language-specific knowledge helps very little.
Instead, they can go backwards and forwards and jump around in the strangest possible ways 9. This is particularly bad with old programs written before we discovered that this was a serious problem and with programs that have been heavily changed without the effort to keep them readable. At this point the careful reader might notice that the real world seems to contradict our position.
After all, programs written today are doing much more complicated things now than ever before. Nowadays, most people interact with computers through sophisticated graphical interfaces with smooth animation and deliberately broad appeal. If our last two sections are true, how did we get this far? The answer is that lots of smart people saw what happened when programs began to become too long. They found examples of large programs that became long but still were easy to change. They carefully studied how humans actually read and write programs.
They brainstormed new ideas. They created and tested new programming languages and new programming techniques. The end result was that, on average, and over decades of hard work and experience, we have gotten better at writing programs. In the big picture, these improvements are very good news. They have enabled a truly remarkable growth in what computers can do for us. The problem is that practically all of these techniques and methods require some very important things:.
Of these, only item 3 has really become normal and easily available to modern businesses and governments Items 1, 2, and 4 require employees with training, experience, and dedication to both quality and to the good of the employer.
Perhaps most importantly, though, item 4 requires both commitment and understanding from the employer. At this point, it makes sense to expand our analogy from item 4 above. You can imagine a small house that is well-built and safe and stable. That often describes how a program starts when it is first written by a single person. Then things change; you need a little bit more room.
Do you expand the house and the foundation or do you build a cheap shed outside? The temptation is to just build the cheap shed. The whole thing can end up as a pile of sheds. The original house may end up crushed under the weight of all the extra sheds. In building a real house, at some point, you have to stop adding more sheds and actually expand the house. If you do it right , you might even slowly turn your small house into a beautiful mansion, or office building, or skyscraper—far larger, stable, and more useful than it started.
Refactoring is easily the most important part of code maintenance. And this at last is the core problem with improperly maintained systems. If you have a system that keeps changing, but only do the bare minimum to patch it every time a change is needed, you end up with a pile of sheds rather than a mansion. New employees will spend most of their time figuring out where the kitchen is 11 , rather than actually adding new things.
Fixing things becomes more and more expensive, but demolishing and rebuilding also becomes more expensive. This last point is very important, because it introduces one of the most important concepts of proper software maintenance: technical debt.
Just like normal debt, it can actually be useful if managed well having a single shed is often the right choice, by itself , but also just like normal debt, it has a nasty habit of growing out of control. Thirty-three years later, longer than most Java developers' age, and a decade beyond the age of Java itself, he's still at it.
Overall it really has been a steady language all these years," Levy said. Levy said he sees a decent amount of COBOL developers in their 40s and occasionally someone in the 30s.
Many are born overseas, he added. IBM's Stoodley said his company hopes to push that number younger with its Millennial Mainframer blog. VC F is led by the author. Our editors highlight the TechRepublic articles, downloads, and galleries that you cannot miss to stay current on the latest IT news, innovations, and tips.
Evan became a technology reporter during the dot-com boom of the late s. He published a book, "Abacus to smartphone: The evolution of mobile and portable computers" in and is executive director of Vintage Computer Federation, a c 3 non-p Image: U. Best of the Week Newsletter Our editors highlight the TechRepublic articles, downloads, and galleries that you cannot miss to stay current on the latest IT news, innovations, and tips.
Fridays Sign up today. Python, on the other hand, was created in the s, with three decades of extra knowledge. What does the example above illustrate? A good programming language has easy, English-like syntax, making it easy to read, write and understand. Vice versa, a bad programming language is just the opposite.
COBOL is considered wordy and cluttered. Even though we singled out COBOL as an example of a bad programming language, it does have its applications and some systems that are still in use, especially at government organizations or banks, were written in COBOL. Applications are more complex than what can be achieved with older languages. There may even have been a real justification to excluding sorting from a programming language around for small computers.
What I said above was basically what you get after around 20 years of not being able to check facts due to throwing away the book. I should still point out, though, that I formally studied COBOL from this recommended book that covered the standard not the standard in and But that doesn't necessarily represent the COBOL world dragging its feet - well, not that much anyway. New standards adoption takes time for any language, even now. The misunderstood, i.
So you type a few extra characters! Its not a serious issue. There is no such thing its just that COBOL can handle just about any file format and just about any file organization.
So all in all its doing quite well for something that was put together by a committee in the s. If an existing application is implemented in COBOL and does the job there is no reason to re-write it.
This is probably down to Djikstra. Djikstra stated that "The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense. With the ability to self-alter code a practice discouraged even among cobol programmers it was viewed as quite difficult to debug or follow too. This goal obviously had a profound affect on the way the language was designed, and it now it evolved.
However, after working in IT for almost 20 years 15 in banking I've never encountered a single system that was implemented in it. I think people have a preconceived notion that old is bad, "newest is bestest". It's still very much in use, and I'm sure there will be enough maintenance work on code to be had for another half century. In coding, one must always select the best tool for the job, and with certain industries that are married to certain hardware, the language is optimal.
I've never worked in banking, where I had heard it was popular, but Sean's answer indicates this isn't the case. If there's a problem with legacy code looking old, as long as you can slap a UI or a web interface in front of it, most users won't even know the difference. It was designed for business, finance, and administrative systems for companies and governments.
Guess who was designed to crunch data and have lots of files for breakfast? Or is it? Let's consider governments. What data does a government need to track? People ids, birth certificates, medical records, taxes oh And they must hold these infos indefinitely, today and 50 years ago also.
Some exist for hundreds of years like this one for example. That means that some data from 50 years must still be here with us, today, the 7th October, As time passed the data for govs and banks grew larger and larger and it was more and more expensive to migrate the systems. Some banks are slowly migrating while other just stick a nice Web2. Can you say legacy code? COBOL goes hand in hand with extreme legacy code, some that was touched by plenty of people over decades of existence - another thing we programmers don't like :D.
And now you have a niche of activity. COBOL now has limited application and your experience is affected. At this point the demand is lower than the supply and those who don't make the cut must move to something else.
And they must start as juniors since COBOL does really cripple the mind believe it of not Copy-Paste is the main style of development in COBOL and accounts for large its large productivity and now they curse the day they picked up COBOL and don't lose any occasion to tell their horror stories about it :.
But you could tell those stories about any old fart language that is no longer in demand these days but you are the unfortunate person stuck with it. O well And how did day measure that?
When computers only had 32K of RAM, each instruction mattered. It modified a GOTO statement to have a different destination. The term "free union" -- i. Two REDEFINES aliases cannot be trivially distinguished by the data; only extensive reading of program logic could determine the meaning of the two alternate interpretations of the bytes. If you find this dismissive, you could ask for details.
Or flag it so that the moderators can delete it. Its syntax is simple compared to today's languages and you don't need to much theory to learn to get going. That means you focus on the business not on the technology, so you work 7 out of the 8 hours on coding not at learning MVM, JavaScript and the like. The issue with COBOL is bad marketing that lead to lack of interest from 3rd parties to develop tools and programming environments for it.
Also, its lack of support to Windows like interface caused its popularity to decline after The C language drew much of the light as it was able to be more portable and had direct access to OS functions which is something COBOL had very little of.
I think the biggest problem is its verbosity -- a simple "Hello, world! It's just not a very elegant or attractive language. It was also designed to handle yesterday's problems, and doesn't really lend itself to development paradigms developed after about
0コメント