Thursday, August 8, 2024

I Guess I'm a Geek

Last night as I was finishing up my shift at work, a young man, who is a Senior in High School, told me he is learning Python programming language. He ask if I knew what that was. So, I guess I'm a Geek because I do know what that is. His question spurred a conversation about my experience with computers and programming. A subject I am well versed in and love to discuss.

I asked him if he knew binary, asci, or DOS. He did know what binary was but didn't know what DOS was. So we talked about DOS for a while. DOS is an acronym for Disk Operating System and both IBM and Microsoft branded it in the early years.

One of the interesting memories I have is programming fonts in the early eighties. It was needed for publishing early childhood teaching courses at a Christian school I was working at. I was the tech guy doing layouts for pages that were reproduced on a printing press.

The ball and stick font hadn't been available in typewriters or on the computer. Actually, I had never seen a computer before that and when the director gave me one to use I proceeded to take it apart to see what was in it.

This raised her eybrows a bit, to say the least. I remember her saying something like, "Do you know how much that computer costs?" I said, "I can put it back together." She said, "You better. and it better work!" So I did and it did work. If you can call a flashing little green neon dash on the screen working.

The directors son and I created the font for our use and installed it into Word Perfect. It was a laborious process of plotting pixels and manually drafting letters and then 

That was the beginning of my computer career. Some 50 years later I have a vast amount of experience under my belt.

I remember buying a luggable Compaq computer with a 6 inch green screen, two 5 1/4 inch floppy drives and a keyboard that became my workstation for several years. I learned how to program DOS batch files and write in Basic so I could teach my son different subjects. I also programmed music lessons with words, music and a bouncing ball for him to sing along to.

So I looked up some information about operating systems and programming for those curious about the origin of such tech things. Here is what I found.

The origins of computer operating systems (OS) can be traced back to the early days of computing in the 1950s and 1960s. Here’s a brief overview:

1. Batch Processing Systems (1950s)IBM 701 and 704: 

Early computers like these did not have an OS. Programs were loaded one at a time, executed, and then the results were printed. The operator would then load the next program.

General Motors and IBM (1956): 

The first "true" operating system was GM-NAA I/O, created by General Motors for their IBM 704. It was a simple batch processing system, automating the sequence of jobs (loading programs, executing them, and unloading results).

2. Early Time-Sharing Systems (1960s) Compatible Time-Sharing System (CTSS) - 1961:

 Developed at MIT, CTSS allowed multiple users to interact with the computer simultaneously through terminals.

MULTICS (1965): 

Also developed at MIT in collaboration with Bell Labs and General Electric, MULTICS was a more sophisticated time-sharing system and is considered the precursor to Unix.

3. Unix (1969)Ken Thompson and Dennis Ritchie at Bell Labs: 

Unix was developed as a simpler alternative to MULTICS. It introduced many concepts still in use today, like hierarchical file systems and simple, modular utilities that can be combined in scripts.Unix later inspired a wide range of derivatives, including Linux and BSD, which are the foundation for many modern OSs.

4. Mainframe and Minicomputer Operating Systems (1960s-1970s)IBM OS/360 (1964): 

One of the first operating systems to manage hardware resources effectively, supporting a variety of programs and tasks simultaneously.

Digital Equipment Corporation's VMS (1977):

 Designed for their VAX minicomputers, VMS was influential in business and technical computing.

5. Personal Computer Operating Systems (1970s-1980s)CP/M (1974): 

Created by Gary Kildall, CP/M was a popular OS for early personal computers.

MS-DOS (1981): [This is where I fist started programming.]

Microsoft developed MS-DOS, which became the foundation for early IBM PCs. It was later replaced by Windows, which started as a graphical interface for MS-DOS.

6. Modern Operating SystemsWindows (1985): [Built on top of MSW-DOS]

 Microsoft introduced Windows as a graphical operating environment, which eventually evolved into a full-fledged operating system with Windows NT and beyond.

Mac OS (1984): 

Apple's Macintosh introduced a user-friendly graphical interface. Mac OS eventually evolved into macOS, based on Unix-like systems from the NeXTSTEP OS.

Linux (1991): [This worked good for servers I had at the Tech Center]

Created by Linus Torvalds, Linux is a Unix-like OS that is free and open-source. It has become widely used in servers, embedded systems, and as a basis for Android.The development of operating systems is a reflection of the evolving needs and capabilities of computing technology, from batch processing and time-sharing to multi-user, graphical interfaces and beyond.

Programming languages have evolved significantly since their inception, with the earliest forms dating back to the mid-20th century. Here’s an overview of their development and usage:

1. Early Mechanical Languages (19th Century)Ada Lovelace (1842-1843): [Way before my time!]

Often considered the first computer programmer, Ada Lovelace wrote an algorithm for Charles Babbage’s Analytical Engine, though it was never built. This algorithm is considered an early example of a programming language, albeit for a hypothetical machine.

2. Assembly Language (1940s)ENIAC and Early Computers (1940s): [Still before my time.]

The first computers like the ENIAC were programmed using machine code, which is the most basic level of programming directly in binary. Assembly language was introduced as a human-readable representation of machine code, using mnemonic codes and labels instead of binary.Usage: Assembly languages were used to write programs that controlled hardware directly, offering more readability and manageability than pure machine code.

3. High-Level Languages (1950s)FORTRAN (1957): [Started when I was born]

 Developed by IBM, FORTRAN (FORmula TRANslation) was the first high-level programming language, designed for scientific and engineering calculations. It allowed programmers to write code using mathematical formulas instead of needing to manage hardware details.

COBOL (1959): Created for business data processing, COBOL (COmmon Business-Oriented Language) was designed to be readable and understandable by people without a deep technical background.

LISP (1958): Developed by John McCarthy, LISP (LISt Processing) was one of the first languages used for artificial intelligence research and introduced many concepts still in use today, such as recursion and symbolic expression processing.Usage: High-level languages abstracted away the complexity of hardware, allowing programs to be written more easily and ported between different machines.

4. Structured Programming and Language Expansion (1960s-1970s)ALGOL (1960):

 ALGOL (ALGOrithmic Language) introduced structured programming concepts like block structure, which influenced many later languages.BASIC (1964): [I used to program on a Tandy PC with Basic.] Designed to be easy for beginners, BASIC (Beginner's All-purpose Symbolic Instruction Code) became popular in schools and with hobbyists.

C (1972): Developed by Dennis Ritchie at Bell Labs, C provided low-level access to memory but with the flexibility of a high-level language. It became widely used for system programming, including the development of Unix.

Usage: These languages emphasized structured programming techniques, improving code readability, maintainability, and reusability.

5. Object-Oriented Programming (1980s)Smalltalk (1972-1980):

 Smalltalk introduced the concept of object-oriented programming (OOP), where data and the methods that operate on that data are bundled together into objects.

C++ (1985): Bjarne Stroustrup developed C++ by adding object-oriented features to C. It became widely used for large-scale software development.

Usage: Object-oriented languages made it easier to model complex systems and reuse code, becoming dominant in software engineering.

6. Scripting and Internet Languages (1990s)Python (1991): [They are still teaching and using this in school.]

Created by Guido van Rossum, Python emphasized readability and simplicity, becoming popular for a wide range of applications, including web development and data science.

Java (1995): Developed by Sun Microsystems, Java was designed to be platform-independent, running on any device with a Java Virtual Machine (JVM). It became a standard for enterprise applications and Android development.

JavaScript (1995): JavaScript was created by Netscape for adding interactivity to web pages and has since become a crucial part of web development.

Usage: These languages were designed for rapid development, ease of use, and cross-platform compatibility, which were essential as the internet and web applications grew in importance.

7. Modern Programming Languages (2000s-Present)

C# (2000): 

Developed by Microsoft, C# is used primarily for Windows applications and has similarities to Java.

Swift (2014): 

Created by Apple, Swift is used for developing iOS and macOS applications, emphasizing safety and performance.

Rust (2010): 

Developed by Mozilla, Rust focuses on memory safety and concurrency without sacrificing performance, becoming popular for system programming.

Usage: Modern languages focus on safety, concurrency, and developer productivity, addressing the challenges of modern software development.SummaryProgramming languages have evolved from low-level machine and assembly code to high-level languages that abstract away hardware details, enabling more complex and powerful software development. Each generation of languages introduced new concepts and abstractions that made programming more accessible and productive, reflecting the changing needs of computing over time.

I hope this helps some of you who have actually read and enjoyed this historical review up to this point. If so, please comment and follow me for future geeky stuff. 

May God bless you this day as you seek him in all you do.


ReplyForward