Old-school programming techniques you probably don't miss
"...and today can blissfully forget" by Esther Schindler, ComputerWorld Developer
http://www.computerworld.com/action/article.do?command=viewArticleBasic&taxonomyName=Development&articleId=9132061&taxonomyId=11&pageNumber=1
Esther has written a wonderful article on Computerworld's Development site. She highlights 11 programming techniques that developers sent her after she posted a request on FaceBook and otehr sites asking developers to send in their thoughts. The article also lists some "honorable mention" techniques in each area.
The 11 she lists are:
Sorting algorithms
Creating your own GUIs
GO TO and spaghetti code
Manual multithreading
Self-modifying code
Memory management
Working with punch cards
Math and date conversions
Hungarian notation
Making code run faster
Being patient
One that I sent in was my happiness that I no longer use GOTO statements and Spaghetti Code programming. Thank goodness for Structured Programming, Object-Oriented Programming, and Functional Programming.
In the 1970s when I was an assembly language programming on Data General Nova minicomputers, we did a lot of self-modifying code to get complex programs to fit in the small amount of core memory we had. One great thing about the Nova minicomputer is that every bit pattern was an instruction and also data. Looking at the processor handbook you could do crazy things like inserting an bit pattern in a location that would also be a data constant and also part of a pointer address that you needed in upcoming instructions. We also used self-modifying assembler code for dynamic dispatching of functions (thank goodness for OOP and VMTs).
I was also a college student in the days of punch cards (quickly moving to punched paper tape and terminals). I always sequence punched by cards, especially after seeing other students drop their large card decks and spend hours sitting on the floor trying to put the program cards back in the right order.
I would probably not have put "doing strange things to make code run faster" on the list. While this item was specifically focused on undocumented Windows API(s), on most systems we are always trying to squeeze as much slowness from our programs as we can. Thankfully we have faster processers, more memory, profilers, optimizing compilers, register variables, inline assembler code, static and dynamic analysis tools, database tuning tools, better algorithms, better memory managers, and more. Developers have so many choices to help programs run faster including undocumented OS calls, undocumented processor instructions, and green crystals - just document the places where you use them and if they are version specific, use IFDEF(s) around them and provide safe alternatives too!
Esther - thank you for the walk down memory lane.
http://www.computerworld.com/action/article.do?command=viewArticleBasic&taxonomyName=Development&articleId=9132061&taxonomyId=11&pageNumber=1
Esther has written a wonderful article on Computerworld's Development site. She highlights 11 programming techniques that developers sent her after she posted a request on FaceBook and otehr sites asking developers to send in their thoughts. The article also lists some "honorable mention" techniques in each area.
The 11 she lists are:
One that I sent in was my happiness that I no longer use GOTO statements and Spaghetti Code programming. Thank goodness for Structured Programming, Object-Oriented Programming, and Functional Programming.
In the 1970s when I was an assembly language programming on Data General Nova minicomputers, we did a lot of self-modifying code to get complex programs to fit in the small amount of core memory we had. One great thing about the Nova minicomputer is that every bit pattern was an instruction and also data. Looking at the processor handbook you could do crazy things like inserting an bit pattern in a location that would also be a data constant and also part of a pointer address that you needed in upcoming instructions. We also used self-modifying assembler code for dynamic dispatching of functions (thank goodness for OOP and VMTs).
I was also a college student in the days of punch cards (quickly moving to punched paper tape and terminals). I always sequence punched by cards, especially after seeing other students drop their large card decks and spend hours sitting on the floor trying to put the program cards back in the right order.
I would probably not have put "doing strange things to make code run faster" on the list. While this item was specifically focused on undocumented Windows API(s), on most systems we are always trying to squeeze as much slowness from our programs as we can. Thankfully we have faster processers, more memory, profilers, optimizing compilers, register variables, inline assembler code, static and dynamic analysis tools, database tuning tools, better algorithms, better memory managers, and more. Developers have so many choices to help programs run faster including undocumented OS calls, undocumented processor instructions, and green crystals - just document the places where you use them and if they are version specific, use IFDEF(s) around them and provide safe alternatives too!
Esther - thank you for the walk down memory lane.


David Intersimone (known to many as David I.) is a passionate and innovative software industry veteran-often referred to as a developer icon-who extols and educates the world on Embarcadero developer tools. He shares his visions as an active member of the industry speaking circuit and is tapped as an expert source by the media. He is a long-standing champion of architects, developers and database professionals and works to ensure that their needs are folded into Embarcadero's strategic product plans. David holds a bachelor's degree in computer science from California Polytechnic State University at San Luis Obispo, California.
I never sat on the floor resorting cards - Cardiff uni had a machine the size of a car to do that for you. Wonderful invention - must have cost a fortune.... :-)