K A K O Й B Ы П P O Г P A M M И C T ? NORMAN GRABOWSKY "WHAT KIND OF PROGRAMMER ARE YOU?" ЭTOT TECT PACCKAЖET O BAШEM ПPOГPAMMИPOBAHИИ БOЛЬШE, ЧEM BЫ CAMИ XOTEЛИ БЫ ЗHATЬ. ИCTOЧHИK: DATAMATION, MARCH, 1977 ПEPEMEHHAЯ I ПPEДCTABЛЯET COБOЙ ПOЛHOE CЛOBO C ФИKCИPOBAHHOЙ TOЧKOЙ. I ПPИHИMAET ЗHAЧEHИЯ 1 ЛИБO 2. ECЛИ I OKAЗAЛOCЬ PABHЫM 1, ЗAMEHИTE EГO HA 2 И HAOБOPOT. CPABHИTE BAШE PEШEHИE C ДECЯTЬЮ ПPEДЛOЖEHHЫMИ. HAЙДИTE OДHO ИЛИ HECKOЛЬKO HAИБOЛEE ПOXOЖИX HA BAШE И ПPOЧИTAЙTE B PAЗДEЛE 'KATEГOPИИ' KPATKУЮ XAPAKTEPИCTИKУ. BЫ MOЖETE KOДИPOBATЬ HA ЛЮБOM ЯЗЫKE, HO ДЛЯ CPABHEHИЯ ПPEДПOЧTИTEЛЬHEE BCEГO ИCПOЛЬЗOBATЬ PL/1. P E Ш E H И Я . 1. IF I='2' THEN I=1; ELSE I=2; 2. IF I=2 THEN I=1; IF I=1 THEN I=2; 3. IF I=1 THEN GOTO SKIP; I=1; GOTO DONE; SKIP: I=2; DONE: 4. J=2; IF I=2 THEN J=1; I=J; 5. DECLARE SWITCH LABEL; . . . IF I=1 THEN SWITCH=ONE; IF I=2 THEN SWITCH=TWO; GOTO SWITCH; ONE: I=2; GOTO DONE; TWO: I=1; DONE: 6. DECLARE ONETWO(2) FIXED BIN(31) INIT (2,1); . . . I=ONETWO(I); 7. I=3-I; 8. I=I-(I/2*2)+1; 9. IF I=2 THEN DO; I=1; END; ELSE DO; I=2; END; 10. IF I=1 THEN I=2; IF I^=2 THEN DO; PUT LIST('ПЛOXOE I - ЗAMEHEHO HA 1'); I=1; END; K A T E Г O P И И . 1. HEДABHИЙ BЫПУCKHИK ШKOЛЫ IBM. HE БOЛEE OДHOГO ИЗ ДECЯTИ OKOHЧИBШИX ЭTУ ШKOЛУ ЗHAЮT PAЗHИЦУ MEЖДУ 2 И '2'. УДИBИTEЛЬHO, KAK MOЖHO BOOБЩE ПPOГPAMMИPOBATЬ БEЗ ЗHAHИЯ CTOЛЬ ФУHДAMEHTAЛЬHOЙ KOHЦEПЦИИ. 2. ПPEПOДABATEЛЬ ПPOГPAMMИPOBAHИЯ. ЭTO PEШEHИE XУЖE ПPEДЫДУЩEГO. MHOГO ЛИ, OДHAKO, OБУЧAЮЩИX ПPOГPAMMИPOBAHИЮ CAMИ HAПИCAЛИ И OTЛAДИЛИ XOTЯ БЫ OДHУ ПPOГPAMMУ? 3. ПPOГPAMMИCT HA FORTRAN'E, TOЛЬKO ЧTO OKOHЧИBШИЙ KУPC PL/1. ДA, CTAPУЮ COБAKУ HE HAУЧИШЬ HOBЫM ШTУKAM! ЭTO PEШEHИE ДAET BEPHЫЙ PEЗУЛЬTAT, HO ЭTO BCE, ЧTO MOЖHO ПPO HEГO CKAЗATЬ. 4. ПPOГPAMMИCT HA ACCEMБЛEPE, ПPOШEДШИЙ TOT ЖE KУPC. ЭTO PEШEHИE HE ЯBЛЯETCЯ HИ ПPЯMЫM HИ,ЭФФEKTИBHЫM. BOЗMOЖHO, ЭTO PEЗУЛЬTAT OБУЧEHИЯ ЯЗЫKУ PL/1. B HEM ECTЬ TA ПPEЛECTЬ, ЧTO OHO HE COДEPЖИT CAMOMOДИФИЦИPУЮЩИX KOДOB, HO ЭTO ЛИШЬ PEЗУЛЬTAT BOЗBPATA HA ЗEMЛЮ ПOCЛE ИЗУЧEHИЯ ЯЗЫKA BЫCOKOГO УPOBHЯ. 5. CИCTEMHЫЙ AHAЛИTИK. ПPEKPACHAЯ ИЛЛЮCTPAЦИЯ ДЛЯ TEX, KTO ДУMAET, ЧTO OБЯЗAH- HOCTЬ CИCTEMHOГO AHAЛИTИKA - TAKAЯ PAЗPAБOTKA AЛГOPИTMA B KOTOPOЙ OKAЖETCЯ HEKOMПETEHTEH ДAЖE XOPOШИЙ И OПЫTHЫЙ ПPOГPAMMИCT. 6. COMPUTER SCIENTIST. HABEPHOE, ЭTO CAMOE УMHOE PEШEHИE. OДHAKO TAKИE "CAЛЬTO-MOPTAЛИ" БEЗ KOMMEHTAPИEB OKAЗЫBA- ЮTCЯ BECЬMA HEПOHЯTHЫMИ. ИCKУCCTBO TPEБУET ЖEPTB, A ЖEPTBOЙ БУДET TOT, KTO PAЗБИPAETCЯ B ЭTOЙ ПPOГPAMME - MOЖET БЫTЬ, CAM ABTOP ЧEPEЗ TPИ MECЯЦA. 7. MATEMATИK. OЧEHЬ ПOXOЖE HA ПPEДЫДУЩEE, CTOЛЬ ЖE ЭЛEГAHTHO, HO OПЯTЬ-TAKИ BCTAET ПPOБЛEMA: KAK ЖE B HEM PAЗOБPATЬCЯ? 8. ПPOГPAMMИCT, ЗAБOTЯЩИЙCЯ O CEKPETHOCTИ CBOEЙ ПPOГPAMMЫ. BOT PAБOTA HACTOЯЩEГO KOMПOЗИTOPA, И KOHEЧHO, HИKAKИX KOMMEHTAPИEB. "Я MOГЛA БЫ ПPИДУMATЬ И БOЛEE ЗAПУTAHHЫЙ CПOCOБ, KAK ЭTO CДEЛATЬ,- C ГOPДOCTЬЮ CKAЗAЛA БEЛAЯ KOPOЛEBA". 9. CTPУKTУPHЫЙ ПPOГPAMMИCT. KAЖДOMУ ЯCHO, ЧTO CИE ПPOИЗBEДEHИE - CTPУKTУPHAЯ ПPOГ- PAMMA. ИHOГДA ЗAБOTЯTCЯ TOЛЬKO O TOM, CKOЛЬKO KOЛOHOK HAДO OTCTУПИTЬ OT KPAЯ ЛИCTA. HACTOЯЩEE CTPУKTУPHOE ПPOГPAMMИPOBAHИE - ЭTO ПPEЖДE BCEГO TEXHИKA, И ПPИMEHЯTЬ EE HAДO C УMOM. 10.XOPOШИЙ ПPOГPAMMИCT. ЗAMETЬTE, ЧTO HИ OДHO ИЗ PEШEHИЙ 1-9 HE ПPOBEPЯЛO ДИAПAЗOH ЗHAЧEHИЙ I, A ЭTO BECЬMA OПACHO. K HECЧACTЬЮ, BAC HE CПACУT HИ CTPУKTУPHOCTЬ, HИ ФAHTACTИЧECKИE AЛГOPИTMЫ, HИ ЭЛEГAHTHOCTЬ PEШEHИЯ, ECЛИ BДPУГ OKAЖETCЯ, ЧTO I ПEPBOHAЧAЛЬHO HE БЫЛO PABHO HИ EДИHИЦE, HИ ДBOЙKE.