Эволюционная лестница программиста

    Здесь приведены все этапы развития программиста, на примере написания до боли всем нам известной программы «Hello, World».

    Школьник:
    10 PRINT «HELLO WORLD»
    20 END

    Студент-первокурсник:
    program Hello(input, output)
    begin
    writeln('Hello World')
    end.

    Студент на старших курсах:
    (defun hello
    (print
    (cons 'Hello (list 'World))))

    Новый специалист:
    #include<stdio.h>
    void main(void)
    {
    char *message[] = {«Hello », «World»};
    int i;

    for(i = 0; i < 2; ++i)
    printf("%s", message[i]);
    printf("\n");
    }

    Опытный специалист:
    #include<iostream.h>
    #include<string.h>
    class string
    {
    private:
    int size;
    char *ptr;

    public:
    string(): size(0), ptr(new char('\0')) {}

    string(const string &s): size(s.size)
    {
    ptr = new char[size + 1];
    strcpy(ptr, s.ptr);
    }

    ~string()
    {
    delete [] ptr;
    }

    friend ostream &operator <<(ostream &, const string &);
    string &operator=(const char *);
    };

    ostream &operator<<(ostream &stream, const string &s)
    {
    return(stream << s.ptr);
    }

    string &string::operator=(const char *chrs)
    {
    if (this != &chrs)
    {
    delete [] ptr;
    size = strlen(chrs);
    ptr = new char[size + 1];
    strcpy(ptr, chrs);
    }
    return(*this);
    }

    int main()
    {
    string str;

    str = «Hello World»;
    cout << str << endl;

    return(0);
    }

    Очень опытный программист:
    [
    uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
    ]
    library LHello
    {
    // bring in the master library
    importlib(«actimp.tlb»);
    importlib(«actexp.tlb»);
    importlib(«actexp.tlb»);

    // bring in my interfaces
    #include «pshlo.idl»

    [
    uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
    ]
    cotype THello
    {
    interface IHello;
    interface IPersistFile;
    };
    };

    [
    exe,
    uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
    ]
    module CHelloLib
    {

    // some pre related header files
    importheader();
    importheader();
    importheader();
    importheader(«pshlo.h»);
    importheader(«shlo.hxx»);
    importheader(«mycls.hxx»);

    // needed typelibs
    importlib(«actimp.tlb»);
    importlib(«actexp.tlb»);
    importlib(«thlo.tlb»);

    [
    uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
    aggregatable
    ]
    coclass CHello
    {
    cotype THello;
    };
    };

    #include «ipfix.hxx»

    extern HANDLE hEvent;

    class CHello: public CHelloBase
    {
    public:
    IPFIX(CLSID_CHello);

    CHello(IUnknown *pUnk);
    CHello(IUnknown *pUnk);
    ~CHello();

    HRESULT __stdcall PrintSz(LPWSTR pwszString);

    private:
    static int cObjRef;
    };

    #include <windows.h>
    #include <ole2.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include «thlo.h»
    #include «pshlo.h»
    #include «shlo.hxx»
    #include «mycls.hxx»

    int CHello::cObjRef = 0;

    CHello::CHello(IUnknown *pUnk): CHelloBase(pUnk)
    {
    cObjRef++;
    return;
    }

    HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
    {
    printf("%ws\n", pwszString);
    return(ResultFromSpre(S_OK));
    }

    CHello::~CHello(void)
    {

    // when the object count goes to zero, stop the server
    cObjRef--;
    if( cObjRef == 0 )
    PulseEvent(hEvent);

    return;
    }

    #include <windows.h>
    #include <ole2.h>
    #include «pshlo.h»
    #include «shlo.hxx»
    #include «mycls.hxx»

    HANDLE hEvent;

    int _cdecl main(
    int argc,
    char * argv[]
    ) {
    ULONG ulRef;
    DWORD dwRegistration;
    CHelloCF *pCF = new CHelloCF();

    hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

    // Initialize the OLE libraries
    CoInitializeEx(NULL, COINIT_MULTITHREADED);

    CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
    REGCLS_MULTIPLEUSE, &dwRegistration);

    // wait on an event to stop
    WaitForSingleObject(hEvent, INFINITE);

    // revoke and release the class object
    CoRevokeClassObject(dwRegistration);
    ulRef = pCF->Release();

    // Tell OLE we are going away.
    CoUninitialize();

    return(0);
    }

    extern CLSID CLSID_CHello;
    extern UUID LIBID_CHelloLib;

    CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
    0x2573F891,
    0xCFEE,
    0x101A,
    { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
    };

    UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820
    */
    0x2573F890,
    0xCFEE,
    0x101A,
    { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
    };

    #include <windows.h>
    #include <ole2.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #include «pshlo.h»
    #include «shlo.hxx»
    #include «clsid.h»

    int _cdecl main(
    int argc,
    char * argv[]
    char * argv[]
    ) {
    HRESULT hRslt;
    IHello *pHello;
    ULONG ulCnt;
    IMoniker * pmk;
    WCHAR wcsT[_MAX_PATH];
    WCHAR wcsPath[2 * _MAX_PATH];

    // get object path
    wcsPath[0] = '\0';
    wcsT[0] = '\0';
    if( argc> 1) {
    mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
    wcsupr(wcsPath);
    }
    else {
    fprintf(stderr, «Object path must be specified\n»);
    return(1);
    }

    // get print string
    if(argc> 2)
    mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
    else
    wcscpy(wcsT, L«Hello World»);

    printf(«Linking to object %ws\n», wcsPath);
    printf(«Text String %ws\n», wcsT);

    // Initialize the OLE libraries
    hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

    if(SUCCEEDED(hRslt)) {

    hRslt = CreateFileMoniker(wcsPath, &pmk);
    if(SUCCEEDED(hRslt))
    hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);

    if(SUCCEEDED(hRslt)) {

    // print a string out
    pHello->PrintSz(wcsT);

    Sleep(2000);
    ulCnt = pHello->Release();
    }
    else
    printf(«Failure to connect, status: %lx», hRslt);

    // Tell OLE we are going away.
    CoUninitialize();
    }

    return(0);
    return(0);
    }

    Начинающий хакер:
    #!/usr/local/bin/perl
    $msg=«Hello, world.\n»;
    if ($#ARGV>= 0) {
    while(defined($arg=shift(@ARGV))) {
    $outfilename = $arg;
    open(FILE, ">". $outfilename) || die «Can't write $arg:
    $!\n»;
    print (FILE $msg);
    close(FILE) || die «Can't close $arg: $!\n»;
    }
    } else {
    print ($msg);
    }
    1;

    Опытный хакер:
    #include
    #define S «Hello, World\n»
    main(){exit(printf(S) == strlen(S)? 0: 1);}

    Бывалый хакер:
    % cc -o a.out ~/src/misc/hw/hw.c
    % a.out

    Хакер, всем хакерам — хакер:
    % cat
    Hello, world.
    ^D

    Новый руководитель:
    10 PRINT «HELLO WORLD»
    20 END

    Средний руководитель:
    mail -s «Hello, world.» bob@b12
    Колян, помоги написать программу, которая выводит на экран «Hello, world.»?
    Нужно выполнить к завтрашнему дню.
    ^D

    Старший руководитель:
    % zmail Колян
    Мне нужен «Hello, world.» к обеду.

    Глава корпорации:
    % letter
    letter: Command not found.
    % mail
    To: ^X ^F ^C
    % help mail
    help: Command not found.
    % Чёрт!
    !: Event unrecognized
    % logout


    Английский вариант был найден здесь.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 55

      0
      Баллы прибавляются, но никто не комментирует =)
        0
        Может быть, программисты еще не проснулись.
          +21
          а может за как минимум 9 лет уже все кто хотел откомментировали ;)
            +8
            Я уверен, что есть такие же как и я люди, которые ещё не видели этой весчи.
              +4
              через год можно будет смело постить еще раз. новички порадуются.
          –5
          хорош боянить!
            +3
            те кто вечно кричат про боян напоминают мне ситуацию в кинотеатре "да я видел это кино, он ему ща как вмажет! а тот ему! а в конце все будет хорошо"
              –1
              а меня раздражают бородатые анекдоты
            0
            Старинная шутка, но смешная.
              0
              А где же ASM?
                +1
                Видимо, аудитория хабра молода и считает новым что-то весьма забытое и старое ;)
                  0
                  Более-менее молода, но не считает :)
                    0
                    Надо еще качели запостить)
                      0
                      не очень молода, но считает
                      не должна?
                      0
                      на асме

                      global _start

                      _start:

                      mov eax, 4
                      mov ebx, 1
                      mov ecx, msg
                      mov edx, msglen
                      int 0x80

                      mov eax, 1
                      mov ebx, 0
                      int 0x80

                      section .data

                      msg: db "Hello World",0x0A,0
                      msglen equ $-msg
                        0
                        На эту же тему есть еще вариант

                        Задача. На вход подаются числа от 0 до 10. Нужно выводить 0, если число четное и 1, если нет. Как решают задачу...

                        1. Школьник:

                        10 INPUT I
                        20 IF I = 0 OR I = 2 OR I = 4 OR I = 6 OR I = 8 OR I = 10 THEN
                        30 PRINT "0"
                        40 ELSE
                        50 PRINT "1"
                        60 END IF
                        70 END


                        2. Первокурсник:

                        program OutputOdd;
                        var i:byte;
                        begin
                        Read(i);
                        if odd(i)
                        then write('1')
                        else write('0');
                        end.


                        3. Старшекурсник:

                        #include
                        #include
                        int main(int argc, char** argv){
                        int i = atoi(argv[1]);
                        printf("%d",i % 2);
                        }


                        4. Молодой специалист:

                        #include
                        int main(){
                        int i; cin >> i,cout > i;
                        cout
                          0
                          ............
                          4. Молодой специалист:

                          #include
                          int main(){
                          int i; cin >> i,cout > i;
                          cout
                            0
                            разве, чем опытнее программист, тем у него тупее и длинее алгоритмы?
                              +7
                              Чем опытнее программист, тем труднее ему даются простые решения. А некоторые под грузом своего опыта вообще разучиваются мыслить гибко.
                                +1
                                полностью согласен.
                                авторов первых 3х листингов можно держать в штате
                                +11
                                Не тупее, но длиннее :)

                                ***

                                Можно написать аналогию с веб-мастером.

                                Для начинающего интересно что-то сделать. Он берет код чужой страницы и методом удаления лишнего приводит ее в необходимый ему вид. По аналогии создает еще несколько страниц и сайт готов. Размещает на доступном хостинге (типа Народ.ру). Уходит 2-3 дня :)

                                Через некоторое время веб-мастер начинает задумываться о движке для сайта. Пусть он и состоит из десятка страниц. Изучает PHP и MySQL. Создает код, выносит всю разметку в шаблоны. Наслаждается тем, что "Заработало!" или копается дальше. Такой сайт уже неприлично размещать на бесплатном хостинге - нужен свой, и домен в придачу. Уходит 2-3 недели (или больше)...

                                Продвинутый веб-мастер понимает, что без CMS сайт "говно". На основе своих продвинутых знаний пишет свой движок, используя доступные библиотеки и куски кода.

                                У опытного веб-мастера есть уже свой, написанный с нуля движок и вылизанный. Его цепляют за живое другие движки, особенно, если они бесплатны. Доказывает, что универсальность - это известная беда...

                                Постепенно смысл работы над сайтом переходит от его непосредственной цели к возможностям движка - на сколько он функционален.

                                Исходя из этого, становится понятно откуда появляются неудобные интерфейсы. Программеры делают их для самих себя.

                                ***

                                Есть еще одна интересная вещь :)

                                Достаточно собрать два-три человека и начать обсуждать насущную проблему. В самом разгаре обсуждения сообщить собеседникам, что проблема далее не актуальна (предварительно заложить такой поворот событий - найти реальные причины неактуальности проблемы). А дальше можете наблюдать за инертностью собеседников. В большинстве случаев никто не захочет здраво посмотреть на актуальность - они будут защищать свои идеи и требовать продолжения "банкета".

                                "Первое правило бизнеса: защищай свои инвестиции" (c) фильм "Револьвер"
                                  0
                                  классный коммент, ради такого коммента можно и такие посты иногда постить. И спасиб за цитату, я ее уже забыл. Фильм классный, хотя многим не понравился , не шарят.
                                    0
                                    Отличный коммент!
                                    Но пропущен последний этап: постепенно смысл работы над сайтом теряется.
                                    И развитие продолжает идти по спирали. =)
                                  +3
                                  Я думаю, что поколение глав корпораций, использующих в своей практике арготизм "сцуко", пока еще не сформировалось.

                                  [[::::::]]
                                    0
                                    А всё потому, что в оригинале было "damn!" ­— "Event not recognized".
                                      0
                                      Черт, это какое-то дежавю. Все повторяется, и даже комментарии. Нет, не пойду искать ссылку, нет :))))))))))))))
                                        0
                                        О, спасибо что напомнили. Кто-нибудь может подсказать, не починили ли русскую «б» в последних релизах шрифтов DejaVu Sans? :)
                                          0
                                          Починили — это как? У меня, вроде, не возникало проблем :)
                                            0
                                            Ну ведь с такой вот «б» жить трудно.
                                              0
                                              Да, уродская буковка, всегда меня разражала. А почему Тахому не поставите?
                                                0
                                                Потому что Tahoma не является открытым шрифтом, и меня не устраивает его лицензия.
                                                  +1
                                                  К сожалению, мы вынуждены конфисковать ваш компьютер, т. к. на табах в вашем Firefox'e используются нелицензионные шрифты :-) А еще у вас нет иконки «Мой компьютер»!
                                                    +2
                                                    Вам хиханьки, а у нас суровая реальность.
                                                0
                                                Ах, вот оно что :)
                                                Ой, не знаю, о вкусах не спорят. Меня она удивила, конечно, после миграции было непривычно первые 2 недели. Потом привык, уже забыл как иначе.
                                      +2
                                      Программист должен быть ленив :)
                                        +3
                                        У каждого дела запах особый.
                                        В булочной пахнет сгоревшею сдобой.
                                        Мясом протухшим пахнет мясник.
                                        Газом угарным пахнет печник.
                                        Пахнет молочник прокисшей сметаной.
                                        Пахнут шахтеры горелым метаном.
                                        Пахнет газетчик как дохлая утка,
                                        Как парфюмерный отдел проститутка.
                                        Пахнет хирург неудачным наркозом.
                                        Пахнет доярка вечерним навозом.
                                        Содранной шкурой пахнет скорняк.
                                        Ассенизатор... Знаете как.
                                        Пахнет кухарка капустою кислой.
                                        Пахнет сестра медицинская клизмой.
                                        Тещи, как правило, пахнут блинами,
                                        Все на таможне - большими деньгами.
                                        Пахнет партиец как красные флаги.
                                        Нянечка пахнет подгузником Хагги.
                                        Пахнет сапожник густым гуталином,
                                        А популярный певец - кокаином.
                                        Консул английский пахнет овсянкой,
                                        Школьный учитель разит валерьянкой.
                                        Пахнет несвежим солдат сапогом.
                                        Пахнет горячим браток утюгом.
                                        Пахнет ревматик озокеритом.
                                        Пахнет любитель рывков динамитом.
                                        Килькой в томате пахнет турист,
                                        Йодом с зеленкой спортсмен альпинист.
                                        Пахнет священник святою водою.
                                        Пахнут раввины кошерной едою.
                                        Азбукой Морзе пахнет радист.
                                        А героином контрабандист.
                                        Нефтью разлитой пахнет моряк.
                                        Лишь программисты ... не пахнут никак.

                                        "Лишь программисты не пахнут никак", -
                                        Подумать такое мог только дурак.
                                        Си-кодировщик пахнет структурой,
                                        Visual Basic пахнет халтурой.
                                        С++ пахнет полиморфизмом,
                                        Оракл пахнет бюрократизмом,
                                        Митингом нудным разит DBA,
                                        Пахнет Main Frame, словно старый еврей.
                                        Web-программист пахнет связью случайной,
                                        Пахнут COBOL программисты отчаянием.
                                        Пахнет PASCALщик чем-то забытым,
                                        ACCESS разработчик - корытом разбитым.
                                        Вместе все пахнут словно бардак -
                                        Тестеры только не пахнут никак!

                                        Это неправда! Понюхайте сами,
                                        Тестеры вечно пахнут клопами...
                                        Только зайдешь к ним и глянешь вокруг -
                                        Так копошится какой-нибудь жук.
                                        Над программистом, как муха жужжит.
                                        - Тут не работает, там не стоит...
                                        Даже админ отмахнуться не сможет,
                                        Запах жука ему встанет дороже.
                                        Не зная ни кода и не системы,
                                        Тестеры пахнут общей проблемой!
                                          0
                                          Супер-мега-охрененный кодер:



                                          :D
                                            0
                                            <?php
                                            echo "Hello world!";
                                            ?>

                                            сцуко, порезало)
                                            • UFO just landed and posted this here
                                                0
                                                неа.

                                                hello.html:
                                                Hello world!

                                                и запустить этот файл в браузере. там даже тэги не нужны :)
                                                  0
                                                  Мега круто:

                                                  % echo Hello, World!
                                                    –1
                                                    Hello, World!
                                                      –1
                                                      (лихо я закодил, да? даже без Коляна и не ожидая обеда)
                                            • UFO just landed and posted this here
                                                0
                                                Особенно хорошо выглядит код на брэйнфаке :)
                                                  0
                                                  "C++ с использованием рекомендованной Майкрософт технологией COM"
                                                  жесть )
                                                  0
                                                  О! Я - студент на старших курсах! И правда...
                                                    0
                                                    Про руководителей очень повеселило %))
                                                      0
                                                      Зачем руководителю уметь программировать?

                                                      Не хотел бы писать такое, как у "Очень опытный программиста" и вроде и не надо уже. Вот что значит прогресс!
                                                        0
                                                        ..ВАЛЯЛСЯ )))
                                                          0
                                                          "Вот что думают менеджеры о работе программиста":

                                                          ...На самом деле программист может делать всё: и дизайн, и тестирование, и администрирование. Почему не делает? Ленив. Ему неинтересно...
                                                          ...душевная организация программсита ортогональна и неконгруентна целям бизнеса...
                                                          ...Для программистов заказчик - это идиот с мешком денег, который даёт им возможность зарабатывать на жизнь, решая такие задачки, которые при других обстоятельствах программисты с неменьшим удовольствием решали бы бесплатно...
                                                          ...заказчик платит не за удовольствие программиста кодить интересные кусочки, а за сделанную работу...

                                                          взято с: http://articles.best-host.ru/index.php?i…
                                                            0
                                                            Я плакаль!... (((-:
                                                              0
                                                              согласен с менеджерами
                                                              про разного рода админов можно кстати сказать тоже самое
                                                              0
                                                              как раз с классом stroka разбираюсь. Очень кстати )
                                                                0
                                                                эх
                                                                если бы бы автор этом сам всё написал
                                                                эх
                                                                а тут вот ссылка иноязычная (((

                                                                Only users with full accounts can post comments. Log in, please.