Windows 1.0, 1985
Original called Interface Manager, the very first version of windows was technically an Operating Environment and acted as a front while MS-DOS was running in the background. While it uses a GUI type interface, it looks somewhat different from the Macintosh.
Keeping track of the many versions of Windows can be confusing. Today many people use either Windows 7 or 8. The original Windows had several versions finishing in 1992 with Windows 3.1 – but that still technically is part of what is now called “Windows 1”. To further complicate matters Microsoft started releasing different versions of windows for home and professional use. While the first few versions of the home editions were still based somewhat on MS-DOS, the professional operating systems were based on NT (New Technology). Starting with Windows XP (eXPerience), both home and professional editions are based on NT, even though the “NT” is dropped from their names.
Version
|
Home Editions
|
Professional / Power User Editions
|
1
|
Windows 1.0 – 3.1
|
Windows NT 3.1
|
2
|
Windows 95
|
Windows NT 3.51
|
3
|
Windows 98
|
Windows NT 4.0
|
4
|
Windows Millennium
|
Windows 2000
|
5
|
Windows XP Home Edition
Windows Home Server
|
Windows XP Professional Edition
Windows Server 2003
Windows Server 2003 R2
|
6
|
Windows Vista
|
Windows Server 2008
|
7
|
Windows 7
Windows Home Server 2011
|
Windows Server 2008 R2
|
8
|
Windows 8, 8.1
Windows Phone 8
Windows RT
|
Windows Server 2012
Windows Server 2012 R2
|
Windows 95, 1995
Microsoft introduced their second Windows operating system. This time, the GUI was very similar to that of the Macintosh. The appearance of the GUI would not radically change until Windows 8.
|
|
Tianhe-2 Supercomputer, 2013
In November 2012, the fastest computer in the world was officially the Titan Supercomputer made by the US Department of Energy. However, in June 2013 China’s Tianhe-2 took the title. It can perform 33,860,000,000,000,000 floating point operations in 1 second. This is almost twice as fast as the Titan.
Remember that the ENIAC could perform 385 multiplication operations in a second. If we ignore the fact that a floating point operation is more complicated than a simple multiplication operation, it would still mean the Tianhe-2 is about 88 trillion (88,000,000,000,000) times as fast as the ENIAC.
1.7 What Is Programming?
Computer science is a highly complex field with many different branches of specialties. Traditionally, the introductory courses in computer science focus on programming. So what is programming? Let us start by straightening out some programming misconceptions. Frequently, I have heard the phrase: just a second sir, let me finish programming the computer. I decide to be quiet and not play teacher. The person “programming” the computer is using some type of data processing software. In offices everywhere, clerks are using computers for a wide variety of data processing needs. Now these clerks enter data, retrieve data, rearrange data, and sometimes do some very complex computer operations. However, in most cases they are not programming the computer. Touching a computer keyboard is not necessarily programming.
Think about the word program. At a concert, you are given a program. This concert program lists a sequence of performances. A university catalog includes a program of studies, which is a sequence of courses required for different college majors. You may hear the expression, let us stick with our program, which implies that people should stick to their agreed upon sequence of actions.
In every case, there seem to be two words said or implied: sequence and actions. There exist many programs all around us and in many cases the word program or programming is not used. A recipe is a program to cook something. A well- organized recipe will give precise quantities of ingredients, along with a sequence of instructions on how to use these ingredients.
Any parent who has ever purchased a some-assembly-required toy has had to wrestle with a sequence of instructions required to make the toy functional. So we should be able to summarize all this programming stuff, apply it to computers and place it in the definition diagram below.
Program Definition
|
A program is a sequence of instructions, which enables
a computer to perform a desired task.
A programmer is a person who writes a program for a computer.
|
Think of programming as communicating with somebody who has a very limited set of vocabulary. Also think that this person cannot handle any word that is mispronounced or misspelled. Furthermore, any attempt to include a new word, not in the known vocabulary, will fail. Your communication buddy cannot determine the meaning of a new word by the context of a sentence. Finally, it is not possible to use any type of sentence that has a special meaning, slang or otherwise. In other words, kicking the bucket means that some bucket somewhere receives a kick.
A very important point is made here. Students often think very logically, write a fine program, and only make some small error. Frequently, such students, it might be you or your friends, become frustrated and assume some lack of ability. It is far easier to accept that small errors will be made, and that the computer can only function with totally clear, unambiguous instructions. It is your job to learn this special type of communication.
1.8 A Brief History of Computer
Programming Languages
I know what you are thinking. “Didn’t we just have a history section?” True, we did, but this one is specifically about programming languages.
In the earlier history section, it mentioned that computers like the ENIAC were incredibly difficult to program. Programming the ENIAC required rewiring the machine, and machines like the ENIAC had thousands of wires. While the Mark-I was technically a calculator, simply entering the numbers required manipulating its 1,440 switches.
Just entering a program into those early computers was hard enough, but what if the program did not work? On the ENIAC, you would be looking at a sea of thousands of wires, and you need to find out which is plugged into the wrong port. On the Mark-I, maybe you flipped switch #721 up, but it should actually be down. Seeing that amidst the other 1,439 switches is not easy.
Machine Language / Machine Code
Programming in Machine Language a.k.a. Machine Code means you are directly manipulating the 1s and 0s of the computer’s binary language. In some cases, this means you are manipulating the wires of the machine. In other cases, you are flipping switches on and off. Even if you had the ability to “type” the 1s and 0s, machine language would still be incredibly tedious.
Assembly Language and the EDSAC, 1949
Assembly Language was first introduced by the British with the EDSAC (Electronic Delay Storage Automatic Computer). This computer was inspired by the EDVAC and was the second stored-program computer. EDSAC had an assembler called Initial Orders which used single-letter mnemonic symbols to represent different series of bits. While still tedious, entering a program took less time and fewer errors were made.
|
|
“Amazing Grace”
Grace Hopper was mentioned a couple sections ago as one of the first programmers of the Mark-I. She is also credited with making the term debugging popular after a couple colleagues pulled the first literal computer bug (a moth) out of the Mark-II. Her biggest accomplishments are in the area of computer languages.
In the 1940s, Grace Hopper did not like the way we were programming computers. The issue was not that it was difficult. This issue was that it was tedious. She knew there had to be a better way. The whole reason computers were invented in the first place was to do the repetitive, tedious tasks that human being do not want to do. It should be possible to program a computer using English words that make sense, rather than using just 1s and 0s.
Imagine the presidents of the United States and Russia want to have a meeting. The American President speaks English. The Russian President speaks Russian. Who else needs to be at this meeting? They need a translator. Grace Hopper understood this. If she wanted to program a computer with English words, she would need some type of translator to translate these words into the machine language of the computer.
Grace Hopper wrote the first compiler (a type of translator) in 1952 for the language A-0. The language itself was not successful because people either did not understand or did not believe what a compiler could do. Even so, A-0 paved the way for several other computer languages that followed. Many of which were also created in part or in whole by Grace Hopper.
Her immeasurable contributions to computer science have earned her the nickname “Amazing Grace”. The Cray XE6 Hopper supercomputer and the USS Hopper Navy destroyer are also named after her.
High-Level Languages and Low-Level Languages
Languages like Machine Language or Assembly Language are considered Low-Level Languages because they function at, or very close to, the level of 1s and 0s. In contrast, a High-Level Language is a language that uses English words as instructions. BASIC, Pascal, FORTRAN, COBOL, LISP, PL/I and Java are all examples of high-level languages. Do realize that this is not the same English that you would use to speak to your friends. A high-level language consists of a set of specific commands. Each of these commands is very exact in is meaning and purpose. Even so, programming in a high-level language is considerably easier than programming in a low-level language.
It may surprise you that some programmers still write programs in a low level language like Assembly. Why would they do that? Comparing high-level languages and low-level languages is like comparing cars with automatic transmissions and cars with manual transmissions. There is no question that a car with an automatic transmission is easier to drive. Why do car companies still make manual transmission cars? Why do professional racecar drivers drive manual transmission cars? The issue is control. You have greater control over the car with a manual transmission. At the same time, if you do not know what you are doing, you can really mess up your car.
It is the same with a low-level language. You have greater control over the computer with a low-level language. At the same time, if you do not know what you are doing, you can really mess up your computer.
We are now going to look at a series of programming languages. Some of these languages have a specific strength. Others are listed because they contributed to computer science in some way.
FORTRAN, 1957
FORTRAN (FORmula TRANslator) was invented by John Backus at IBM. It is the first commercially successful programming language. It was designed for mathematicians, scientists and engineers. FORTRAN was very good a “number crunching”, but it could not handle the record processing required for the business world.
LISP, 1958
LISP (LISt Processing) was designed by John McCarthy while he was at MIT. It is known for being one of the languages specifically designed to help develop artificial intelligence. LISP introduced several important programming concepts which are used in modern programming languages today.
COBOL, 1959
COBOL (COmmon Business Oriented Language) was created for the business community. Grace Hopper was the primary designer of the language. Unlike FORTRAN, COBOL was specifically designed to handle record processing. COBOL became extremely successful when the Department of Defense adopted COBOL as its official programming language.
FORTRAN vs. COBOL, Early 1960s
In the early 1960s computer design was not yet standardized and was strongly influenced by programmers’ languages of choice. FORTRAN programmers wanted computers that were suited for number crunching. COBOL programmers wanted computers that were suited for record handling. Companies like IBM would have different models for “FORTRAN programmers” and “COBOL Programmers”. In 1964, the IBM System/360 family of computers standardized hardware and was suitable for both.
PL/I, 1964
After IBM standardized hardware with System/360, they set out to standardize software as well by creating PL/I (Programming Language 1). This language combined all of the number crunching features of FORTRAN with all of the record handing features of COBOL. The intention was that this language would be “everything for everyone”. The reality was that the FORTRAN programmers did not like the COBOL features, the COBOL programmers did not like the FORTRAN features, and new programmers found the language too complex and overwhelming to learn.
BASIC, 1964
Tom Kurtz and John Kemeny created BASIC (Beginners All-purpose Symbolic Instruction Code) at Dartmouth College. Their intention was that a simple, basic, easy-to-learn language would give non-math and non-science majors the ability to use computers.
The use of BASIC became widespread when personal computers hit the market. The first personal computer was the Altair which came out in 1976. The early PCs like the Altair and the Apple had very little memory and could not handle big languages like FORTRAN or COBOL. They were able to handle a small language like BASIC. Most personal computers in
|
|
the late 1970s and early 1980s were shipped with BASIC. The Altair was shipped with Altair BASIC a.k.a. Microsoft BASIC. This was actually the first product created by Microsoft.
Pascal, 1969
A number of college professors did not like BASIC because it did not teach proper programming structure. Instead, it taught quick-and-dirty programming. Niklaus Wirth, a Swiss professor, decided to create a language specifically for the purpose of teaching programming. He named this new language Pascal after Blaise Pascal. Unlike PL/I, Pascal is a very lean language. It has just enough of the math features of FORTRAN and just enough of the record handling features of COBOL to be functional. In 1983, the College Board adopted Pascal as the first official language for the Advanced Placement® Computer Science Examination.
C, 1972
In 1966, BCPL (Basic Combined Programming Language) was designed at the University of Cambridge by Martin Richards. This language was originally intended for writing compilers. In 1969, Ken Thompson, from AT&T Bell Labs, created a slimmed down version of BCPL which was simply referred to as B. In 1972, an improved version of B was released. This could have been called B 2.0 or B 1972 or even B Vista. Instead, they simply decided to call the new language C. In 1973, C was used to rewrite the kernel for the UNIX operating system.
C++, 1983
As the demands for sophisticated computer programs grew, so did the demand for ever more sophisticated computer programming languages. A new era was born with a powerful programming technique called Object Oriented Programming (OOP). Bjarne Stroustrup wanted to create a new language that uses OOP, but did not want programmers to have to learn a new language from scratch. He took the existing, very popular language C and added OOP to it. This new language became C++. In 1997, C++ replaced Pascal as the official language for the AP® Computer Science Exam.
C and C++ are sometimes considered to be medium-level languages. This is because they have the English commands of a high-level language as well as the power of a low-level language. This made C, and later C++, very popular with professional programmers.
Java, 1995
Java was released by Sun Microsystems. It is the first Platform Independent computer language. “Platform Independence” means that a program created on one computer will work and have the exact same output on any computer. For example, if you wrote a Java program that worked on a Dell computer, it would also work on a Toshiba. You would notice that not only does the program compile and execute... it will have the exact same output.
|
|
Like C++, Java uses Object Oriented Programming. There are many other similarities between Java and C++, but there is one major difference. C++ was designed to be backwardly compatible with the original C. This means that in C++ you have a choice. You decide to use OOP or not to use OOP. Java does not give you that choice. You must use OOP. Now the College Board likes OOP and they want computer science students to learn OOP. For this reason, in 2003, Java replaced C++ as the official language for the AP® Computer Science Exam.
Lego NXT, 2006
A new kind of programming has come about that is very high-level. In this point & click programming environment, programmers click on different program blocks. Each block performs a different task. By creating a sequence of these blocks, people can program the computer.
In 2010, Oracle acquired Sun Microsystems. This means to download the latest version of Java, you need to go to Oracle’s website. Java has continued to improve in the same manner as when Sun Microsystems owned the company.
In 1998, the Lego Corporation created their first point-and-click language for use with their Lego Mindstorms robots. In 2006, they released their next language, and decided to call it NXT. In 2009, NXT 2.1 was released.
|
|
1.9 Summary
This has been an introductory hodge-podge chapter. It is awkward to jump straight into computer science without any type of introduction. Students arrive at a first computer science course with a wide variety of technology backgrounds. Some students know a little keyboarding and Internet access along with basic word processing skills taught in earlier grades. Other students come to computer science with a sophisticated degree of knowledge that can include a thorough understanding of operating systems and one or more program languages as well.
The secret of computer information storage and calculation is the binary system. Information is stored in a computer with combinations of base-2 ones and zeroes. Individual binary digits (bits) store a one or a zero. 1 means true and 0 means false. A set of eight bits forms one byte.
A byte can store one character in memory with ASCII, which allows 256 different characters. The newer, international Unicode uses two bytes to store one character. This allows storage for 65,536 different characters.
Computers use hardware and software. Hardware peripheral devices are the visible computer components. There are external peripheral devices, such as monitors, keyboards, printers and scanners. There are also internal peripheral devices like disk drives, CD ROM drives, network interface cards and video cards.
There are two types of software: application software and system software. Application software includes the common applications of word processing and spreadsheets, but also tax return software and video games. System software is something like Windows 8 or UNIX. It runs the computer and allows the user to personalize the computer to his or her needs and organize data.
Sun Microsystems created Java to be a programming language that is portable on many computer platforms, a so-called platform-independent language. They also wanted the language to be compatible with web page development.
Chapter I Introduction to Computer Science Page
Share with your friends: |