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.