11.07.2015 Views

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

386 programming as a pr<strong>of</strong>essioncalculations. Although practical electronic computers firstbegan to be built in the 1940s, it took considerable time forprogramming to emerge as a distinct pr<strong>of</strong>ession. The firstprogrammers were the computer designers themselves, followedby people (<strong>of</strong>ten women) recruited from clerical personswho were good at mathematics. With machines likeENIAC, programming was more like setting up a complicatedpiece <strong>of</strong> factory machinery than like writing. Switchesor plugboards had to be set, <strong>and</strong> numeric instruction codespunched on cards to instruct the machine to move eachpiece <strong>of</strong> data from one location to another or to perform anarithmetic or logical operation.Two factors led to greater recognition for the art or craft<strong>of</strong> programming. First, as more computers were built <strong>and</strong>put to work for various purposes, more programmers wereneeded, as well as more attention to their training <strong>and</strong> management.Second, as programs became larger <strong>and</strong> more complex,a number <strong>of</strong> high-level languages such as COBOL <strong>and</strong>FORTRAN came into use (see programming languages).Besides making it easier to write programs, having just afew languages in widespread use made skills more readilytransferable from one computer installation to another. Andas with any pr<strong>of</strong>ession, programming developed bodies <strong>of</strong>knowledge <strong>and</strong> practice.At the same time, advances in language developmentwould raise a recurrent question: Are pr<strong>of</strong>essional programmersreally necessary? Since FORTRAN looked a lot likeordinary mathematical notation, couldn’t scientists <strong>and</strong>engineers just write the programs they need without hiringspecialists for the job? Similarly, some enthusiasts ledmanagers to think that with COBOL accountants (or evenmanagers) could write their own business programs.Sometimes part-time or “amateur” programming didprove to be practicable, particularly for scientists who foundthat writing a quick FORTRAN routine to solve a problemwas easier than trying to explain the problem to a pr<strong>of</strong>essionalprogrammer. However, the pr<strong>of</strong>essional programmer’sjob was never really in danger. Businesspeople wereless inclined to try to learn COBOL <strong>and</strong> entrust somethinglike the company’s payroll processing to ad hoc efforts. Inaddition, the programs that controlled the operation <strong>of</strong> thecomputer itself, which became known as operating systems,required both arcane knowledge <strong>and</strong> the ability to design,verify, test, <strong>and</strong> debug increasingly complex systems (sees<strong>of</strong>tware engineering).Development <strong>of</strong> PracticeIn response to this growing complexity, computer scientistsapproached the improvement <strong>of</strong> programming practice onseveral levels. New languages developed in the 1960s <strong>and</strong>1970s featured well-defined control structures, data types,<strong>and</strong> procedure calls (see Algol, Pascal, C, data types,loop, <strong>and</strong> structured programming.) The management<strong>of</strong> programming teams <strong>and</strong> the factors affecting productivitywere examined by pioneers such as Frederick Brooks,author <strong>of</strong> The Mythical Man-Month, <strong>and</strong> IBM sponsoredworkshops <strong>and</strong> study groups.While many mainframe business programmers continuedto write <strong>and</strong> maintain programs written in the olderlanguages (such as COBOL), starting in the 1970s a newgeneration <strong>of</strong> systems <strong>and</strong> applications programmers usedC <strong>and</strong> worked in a different environment—campus minicomputersrunning UNIX. Unlike the hierarchical, systematicapproach <strong>of</strong> the “mainframe culture,” the minicomputerprogrammers tended toward a decentralized but cooperativeapproach (see open-source movement <strong>and</strong> hackers<strong>and</strong> hacking).When the personal computer revolution began to arriveat the end <strong>of</strong> the 1970s, much <strong>of</strong> the evolution <strong>of</strong> programmingculture would be recapitulated. Since early microcomputersystems had very limited memory, programmerswho wanted to get useful work out <strong>of</strong> machines such as theApple II had to work mainly in assembly language or writequick <strong>and</strong> dirty programs in a limited dialect <strong>of</strong> BASIC. Thehobbyists <strong>and</strong> early adopters <strong>of</strong>ten knew little about theacademic world <strong>of</strong> computer science <strong>and</strong> s<strong>of</strong>tware engineering,but they were good at wringing the most out <strong>of</strong> eachclock cycle <strong>and</strong> byte <strong>of</strong> memory.As personal computers gained in power <strong>and</strong> capabilitythrough the 1980s, programmers were able to use higherlevellanguages such as C. Applications such as word processors,spreadsheets, <strong>and</strong> graphics programs became morecomplex, <strong>and</strong> programmers had to work in larger teams liketheir mainframe counterparts.At the same time, the sharp demarcation between programmer<strong>and</strong> user became less distinct with the personalcomputer. Many users who were not pr<strong>of</strong>essional programmersused applications s<strong>of</strong>tware that included programmablefeatures, such as spreadsheets <strong>and</strong> simple data bases (seemacro <strong>and</strong> scripting language). New languages such asVisual Basic let even relatively inexperienced programmersplug in user interfaces <strong>and</strong> other components <strong>and</strong> createuseful programs (see programming environment).Each sector <strong>of</strong> programming seems to go through acycle <strong>of</strong> improvisation <strong>and</strong> innovation followed by st<strong>and</strong>ardization<strong>and</strong> pr<strong>of</strong>essionalization. Just as the earlyENIAC programmers evolved into the organized hierarchy<strong>of</strong> corporate programming departments, the individuals<strong>and</strong> small groups who wrote the first personal computers<strong>of</strong>tware evolved into large teams using sophisticated s<strong>of</strong>twareto track to the modules, versions, <strong>and</strong> developmentsteps <strong>of</strong> major programming projects. Similarly, when theexplosion <strong>of</strong> the World Wide Web starting in the mid-1990sbrought a new dem<strong>and</strong> for people who could code HTML,CGI, <strong>and</strong> Java, much <strong>of</strong> the most interesting work was doneby individuals <strong>and</strong> small companies. But if history repeatsitself, the Internet applications field will undergo the sameprocess <strong>of</strong> pr<strong>of</strong>essionalization, with increasingly elaboratest<strong>and</strong>ards <strong>and</strong> expectations (see certification <strong>of</strong> computerpr<strong>of</strong>essionals).Throughout the history <strong>of</strong> programming, visionarieshave announced that the time was coming when most ifnot all programming could be automated. All a person willhave to do is give a reasonably coherent description <strong>of</strong> thedesired results <strong>and</strong> the required program will be coded bysome form <strong>of</strong> artificial intelligence (see expert systems,genetic algorithms, <strong>and</strong> neural network). But whileusers have now been given the ability to do many things

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!