gregory alan bolcer gbolcerendeavorscom gary lawrence murphy wrote r buckminster fuller id completed geodesic dome noticed beautiful r buckminster fuller cited information theoretic concept elegance dissertation google find reference instead found really great tech report uot knoxville bruce maclennan cites efficiency economy elegance think hes wrong middle e effectiveness otherwise kudos efficiency relation output input effectiveness total output information theory something elegant efficient smaller less costly something product output amount time greg 1 httpwwwcsutkedumclennananonftpelegancehtml cares elegance role aesthetics programming language design technical report utcs97344 bruce j maclennan computer science department university tennessee knoxville maclennancsutkedu abstract crucial role played aesthetics programming language design importance elegance programming languages defended basis analogies structural engineering presented billingtons tower bridge report may used nonprofit purpose provided source acknowledged adapted inclusion third edition principles programming languages 1the value analogies 2efficiency seeks minimize resources used 3economy seeks maximize benefit versus cost 4elegance symbolizes good design 1for designer 2for user 5the programming language work environment 6acquiring sense elegance 7references value analogies programming language design comparatively new activity existed less half century often worthwhile look older design disciplines understand better new activity thus book principles programming languages design evaluation implementation grew study teaching methods architecture primarily also pedagogy disciplines aircraft design perhaps also seen analogies drawn programming languages cars fortran model c dune buggy etc analogies informative serve intuition pumps enhance creativity used uncritically end analogies ultimately design decisions must based analogies since analogies misleading well informative essay ill address role aesthetics programming language design base remarks book structural engineering tower bridge david p billington although many differences bridges programming languages find many ideas insights transfer rather directly according billington three values common many technological activities call three es efficiency economy elegance values correspond three dimensions technology billington calls scientific social symbolic dimensions three ss consider turn efficiency seeks minimize resources used structural engineering efficiency deals amount material used basic criterion safety issues scientific strength materials disposition forces etc similarly programming language design efficiency scientific question dealing use resources many examples efficiency considerations influenced programming language design reviewed principles programming languages early days resources minimized often runtime memory usage processing time although compiletime resource utilization also relevant cases resource economized programmer typing time wellknown cases compromised safety eg fortrans implicit declarations also many wellknown cases security ie safety sacrificed sake efficiency neglecting runtime error checking eg array bounds checking efficiency issues often quantified terms computer memory time must careful comparing apples oranges compile time interchangeable run time neither one programmer time similarly computer memory traded computer time unless reduced common denominator money brings economic considerations turn economy seeks maximize benefit versus cost whereas efficiency scientific issue economy social issue structural engineering economy seeks maximize social benefit compared cost especially appropriate since structures like bridges usually built public expense benefit public programming language design public must satisfied programming community use language institutions programmers work economic tradeoffs hard make economic values change difficult predict example shift first second generation programming languages largely result decrease cost computer time compared programmer time shift second third generation involved increasing cost residual bugs programs fourth generation reflected increasing cost program maintenance compared program development social factors involved success failure programming language include whether major manufacturers support language whether prestigious universities teach whether approved way influential organizations us department defense whether standardized whether comes perceived real language used real programmers toy language used novices dilettantes forth seen historical remarks principles social factors frequently important scientific factors determining success failure programming language often economic issues quantified terms money monetary values costs benefits often unstable unpredictable depend changing market forces also many social issues dissatisfaction poorly designed software human misery resulting system failures inaccurately represented single dimension monetary cost kinds cost benefit must considered seeking economical design elegance symbolizes good design elegance cares elegance snorts hardnosed engineer billington shows clearly critical role elegance hardnosed engineering designer wellknown feature interaction poses serious problem language designers difficulty analyzing possible interactions features language see principles examples structural engineers face similar problems analytic complexity billington observes best designers dont make extensive use computer models calculation one reason mathematical analysis always incomplete engineer must make decision variables significant analysis may lead incorrect conclusions decision made well also equations often simplified eg made linear make analysis feasible another potential source error limitations engineers depend mathematical analysis may overdesign structure compensate unforeseen effects left analysis thus price safety additional material increased cost ie decreased efficiency economy similarly programming language design limitations analytic approach often force us make choice underengineered design run risk unanticipated interactions overengineered design confidence inefficient uneconomical many people seen famous film collapse 1940 fourmonthold tacoma narrows bridge vibrated pieces storm aerodynamical stability considered design billington explains accident along number less dramatic bridge failures consequence increasing use theoretical analyses began 1920s however problem destroyed tacoma narrows bridge anticipated avoided century bridge designers guided aesthetic principles according billington best structural engineers rely mathematical analysis although abandon altogether rather design activity guided sense elegance solutions structural engineering problems usually greatly underdetermined many possible solutions particular problem bridging particular river therefore expert designers restrict attention designs interaction forces easy see design looks unbalanced forces unbalanced design looks stable stable general principle designs look good also good therefore design process guided aesthetics without extensive incomplete mathematical analysis billington expresses idea inverting old architectural maxim asserting structural design function follows form adds p 21 form well chosen analysis becomes astoundingly simple words choice form open free pick forms elegant design expresses good design ie efficient economical design let aesthetics guide design applies programming language design restricting attention designs interaction features manifest good interactions look good bad interactions look bad let aesthetic sense guide design much confident good design without check possible interactions user case whats good designer also good user nobody comfortable crossing bridge looks like collapse moment nobody comfortable using programming language features may explode combined wrong way manifest balance forces welldesigned bridge gives us confidence cross also manifestly good design programming language reinforce confidence program welljustified confidence consequences actions accomplish little covering unbalanced structure beautiful facade bridge unable sustain load designed collapses wont much matter beautiful outside also programming languages elegance superficial manifestation deep coherence design programmers quickly see illusion loose unwarranted confidence summary good designers choose work region design space good designs look good consequence designers rely aesthetic sense users structures bridges programming languages design may miss good designs way limited value unless designer user confident good designs may summarize preceding discussion maxim analogous principles programming languages elegance principle confine attention designs look good good programming language work environment reasons elegance relevant wellengineered programming language programming language something professional programmer live even live feel comfortable safe like welldesigned home office way contribute quality activities take place within would work better oriental garden sweatshop programming language joy use encourage use decrease programmers fatigue frustration programming language hindrance serve collaborator encouraging programmers jobs better automobiles driving machines work natural extension driver programming language programming machine encouraging programmer acquire smooth competence seemingly effortless skill virtuoso programming language invite programmer design elegant efficient economical programs aesthetic dimension programming language symbolizes many values example variety features may symbolize profligate excess sparing economy asceticism kind features may represent intellectual sophistication downtoearth practicality ignorant crudeness thus programming language promote set values embodying certain values encourages us think neglecting negating values allows recede background attention sight mind acquiring sense elegance aesthetics notoriously difficult teach may wonder supposed acquire refined sense elegance necessary good design billington observes sense acquired extensive experience design especially europe encouraged competitive process choosing bridge designers structural engineers design many bridges build learn competition loose comparing designs winner losers public also critiques competing designs way becomes educated sense elegance develops along designers also improve programming language designer design many languages design obsessively criticize revise discard designs also evaluate criticize peoples designs try improve way acquire body experience need real thing comes along references 1billington david p tower bridge new art structural engineering princeton princeton university press 1983 chapters 1 6 relevant 2maclennan bruce j principles programming languages design evaluation implementation second edition new york holt rinehart winston oxford university press 1987 sat 05 oct 2002 065607 0700 apple saucedagain