1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Информация к размышлению

Тема в разделе "Софт", создана пользователем Mr.V, 11.08.02.

  1. Mr.V

    Mr.V Новичок

    16
    0
    *
    TOP SECRET Microsoft(c) Code
    Project: Chicago(tm)
    Projected release-date: MAY 1998
    $History$
    */

    #include "win31.h"
    #include "win95.h"
    #include "evenmore.h"
    #include "oldstuff.h"
    #include "billrulz.h"
    #define INSTALL = HARD

    char make_prog_look_big[1600000];

    void main()
    {
    while(!CRASHED)
    {
    display_copyright_message();
    display_bill_rules_message();
    do_nothing_loop();
    if (first_time_installation)
    {
    make_50_megabyte_swapfile();
    do_nothing_loop();
    totally_screw_up_HPFS_file_system();

    search_and_destroy_the_rest_of_OS/2();
    hang_system();
    }
    write_something(anything);
    display_copyright_message();
    do_nothing_loop();
    do_some_stuff();
    if (still_not_crashed)
    {
    display_copyright_message();
    do_nothing_loop();
    basically_run_windows_3.1();
    do_nothing_loop();
    do_nothing_loop();
    }
    }

    if (detect_cache())
    disable_cache();

    if (fast_cpu())
    {
    set_wait_states(lots);
    set_mouse(speed, very_slow);
    set_mouse(action, jumpy);
    set_mouse(reaction, sometimes);
    }

    /* printf("Welcome to Windows 3.11"); */
    /* printf("Welcome to Windows 95"); */
    printf("Welcome to Windows 98");
    if (system_ok())
    crash(to_dos_prompt);
    else
    system_memory = open("a:\swp0001.swp" O_CREATE);

    while(something)
    {
    sleep(5);
    get_user_input();
    sleep(5);
    act_on_user_input();
    sleep(5);
    }
    create_general_protection_fault();
    }
     
  2. Mr.V

    Mr.V Новичок

    16
    0
    К теме Windows и как с ней работать и получать удовольствие (предвижу крики "Мы не мазохисты")я ещё вернусь, сейчас для пытливих молодых умов информация к размышлению:
    КРАТКОЕ РУКОВОДСТВО ПРОГРАММИСТА ПО ЯЗЫКАМ ПРОГРАММИРОВАИЯ
    Бурное размножение современных языков программирования (которые, похоже, просто заимствуют друг у друга бессчетные нововведения) приводит к тому, что иногда бывает трудно вспомнить, какой язык вы в настоящее время используете. Это удобное руководство предлагается для общего использования в целях помощи программистам, оказавшимся перед такой дилеммой:ЗАДАЧА: Прострелить себе ногу.
    C: Вы простреливаете себе ногу.
    C++: Вы случайно создаете дюжину экземпляров объекта "вы" и всем им простреливаете ногу. Срочная медицинская помощь оказывается невозможной, так как вы не можете разобраться, где настоящие объекты, а где - те, которые только указывают на них и говорят: "А вот - я!".
    ФОРТРАН: Итерактивно вы простреливаете каждый палец ноги, а когда пальцы заканчиваются, загружаете следующую ногу и продолжаете. Когда пули заканчиваются, вы все равно продолжаете попытки прострелить себе ноги, потому что не имеете возможности обработать такую особую ситуацию.
    ПАСКАЛЬ: Транслятор не позволит вам прострелить себе ногу.
    ADA: После тщательного описания пакета "нога", вы пытаетесь одновременно зарядить пистолет, нажать курок, завопить и выстрелить себе в ногу. В ходе попыток обнаруживается, однако, что вас постигла неудача, так как ваша нога оказалась неверного типа.
    КОБОЛ: Hаводите ПИСТОЛЕТ COLT 45 на HОГА.СТОПА, Затем помещаете РУКА.КИСТЬ.ПАЛЕЦ на ПИСТОЛЕТ.КУРОК и HАЖИМАЕТЕ. Затем возвращаете ПИСТОЛЕТ в КОБУРУ. ПРОВЕРЬТЕ, нуждаются ли шнурки в повторном связывании.
    LISP: Вы простреливаете себе отросток, который держит пистолет, с помощью которого вы простреливаете себе отросток, который держит пистолет, с помощью которого вы простреливаете себе отросток, который держит пистолет, с помощью которого вы простреливаете себе отросток, который держит пистолет, с помощью которого вы простреливаете себе отросток, который...
    ФОРТ: Hога простреливать себе вы.
    ПРОЛОГ: Вы сообщаете вашей программе, что вы хотите иметь простреленную ногу. Программа разрабатывает способ этого достичь, но синтаксис языка не позволяет объяснить этот способ вам.
    БЕЙСИК: Вы простреливаете себе ногу из водяного пистолета. а расширенных реализациях языка продолжайте, пока вся нижняя часть тела не промокнет.
    VISUAL BASIC: Hа самом деле вы будете только выглядеть, как будто ваша нога прострелена. Однако в процессе реализации вы получите столько удовольствия, что подобные мелочи вас не озаботят.
    HYPERTALK: Поместите первую пулю пистолета в ступню левой ноги вас. Сообщите результат.
    MOTIF: Вы затрачиваете несколько дней на построение UIL - описания вашей ноги, пули, ее траектории и замысловатой резьбы по слоновой кости на рукоятке пистолета. Когда вы наконец-то управились и готовы нажать на курок, пистолет закупоривается.
    APL: Вы простреливаете себе ногу, затем тратите весь день на то, чтобы представить себе, как это сделать с меньшим количеством символов.
    СНОБОЛ: Если вам удастся, прострелите себе левую ногу. Если не удастся, то прострелите себе правую ногу.
    UNIX:
    % ls
    Foot.c foot.h foot.o toe.c toe.o
    % rm * .o
    rm: .o no such file or directory
    % ls
    %
    ПАРАЛЕЛЛЬНЫЙ EUCLID: Вы простреливаете себе чью-то чужую ногу.
    ЯЗЫК УПРАВЛЕНИЯ ЗАДАНИЯМИ IBM/370: Вы посылаете свою ногу в управляющую информационную систему с приложением документа на 400 страниц, точно описывающего, как именно вы хотите быть простреленным. Через три года ваша нога возвращается с глубоким ожогом.
    PARADOX: Не только вы можете прострелить себе ногу, но и ваши пользователи.
    ACCESS: Вы пытаетесь прицелиться в вашу ногу, но в результате простреливаете все Борландовские дистрибутивные дискеты.
    REVELATION: Вы уверены, что сможете прострелить себе ногу, как только разберетесь, для чего служат эти маленькие хорошенькие пульки.
    АССЕМБЛЕР: Вы пытаетесь прострелить себе ногу, но обнаруживаете, что прежде вам придется изобрести пистолет, пулю, курок и вашу ногу.
    МОДУЛА-2: После того, как вы понимаете, что фактически ничего не можете сделать на этом языке, вы простреливаете себе голову.
     
  3. Mr.V

    Mr.V Новичок

    16
    0
    Теперь, когда Вы точно определились на чём будете писать, получите рекомендации, как писать:
    Абстрагируйте, абстрагируйте, абстрагируйте. Когда вы почувствуете, что на следующем шаге у получится пустота, знайте, что вы приблизились к вершине иерархии вашего проекта.Для получения хорошей абстракции ни в коем случае не влезайте в труды по программированию, лучше пропустите рюмашку, походите на голове, пообщайтесь с соратниками, в крайнем случае - погрузитесь в медитацию. Способствует получению хорошей абстракции также присутствие программисток и отдых в горах. Постарайтесь не думать, мысли - источник труднообнаруживаемых и трудноудалимых ошибок.Полученную абстракцию можно кодировать.
    Не думайте об объеме памяти. Память - приходяща, а неглубокая иерархия доставит немало хлопот и ощущение неудовлетворенности. Помните, что до получения первого десятка уровней абстракции вы не сможете написать ничего конкретного.
    Никогда не оглядывайтесь на быстродействие машины. Вы просто не представляете, насколько это здорово, когда для передачи сообщения о нажатии на клавишу драйвер опрашивает все объекты, собирает мусор, выносит его на улицу, верифицирует дисковод, а затем посылает сообщение о начинающейся генерации события клавиатуры. В общем-то, он должен проверить еще и получение события.
    Не используйте готовые библиотеки объектов, ибо нет ничего прекраснее воплощения в код собственного видения мира ( или его отсутствия ).
    Не обращайте внимания на объем кода и число промежуточных файлов. Программа, обладающая достаточным чувством собственного достоинства никогда не состоит из одного файла и не начинает работать через пять секунд после запуска. Помните, что настоящая объектно-ориентированная программа содержит, как правило, хотя бы два рабочих модуля ( из них один - оверлейный ), и не менее полусотни вспомогательных файлов, из которых пятнадцать никогда не используются, двадцать нужны только при аварийном завершении работы, в десяти содержится свопинг другой программы, а одного всегда не хватает. Вся эта радость занимает хотя бы 40 мегабайт, а при инсталляции дает угрожающее здоровью нормального программиста сообщение :"Освободите 60 мегабайт на устройстве A:" и презрительно отказывается разворачиваться, если условие не выполнено.
    Сделайте в документации пометку красным цветом :"ООП!". Это отпугнет неискушенных пользователей и настроит всех остальных на верный лад.Запуск должен быть торжественным. Промаринуйте пользователя минут пять ( за это время поищите недостающие файлы на диске, не беда, если на одном и том же месте - лишь бы завораживающе свистел винчестер и таинственно чернел экран ), а если он случайно нажмет на кнопку или откроет дисковод, можете спокойно аварийно завершать программу - в следующий раз будет осторожнее, поскольку каждый пользователь должен знать, что нельзя беспокоить объектно-ориентированную систему во время инициализации бестолковыми сообщениями с клавиатуры.
    {*** Комментарий для особливо любознательных **** Во время начальной загрузки происходит ни с чем не сравнимое таинство "инициализации" и "разворачивания объектов", на практике означающее изменение значения нескольких десятков указателей; перегонки из памяти в память объема, превышающего доступную память раз в сто ( для этого и нужны шины с повышенной пропускной способностью ); троекратного свопинга; перезагрузки ( нередко ). ***}
    И ничего не бойтесь.Заметив, что...
    ...счетчик строк компиляции соскальзывает на шестизначные числа, - расслабтесь и получите удовольствие от красоты дисплея.
    ...нажатие на клавишу обрабатывается две минуты, - не огорчайтесь, все-таки оно обрабатывается. Мир полон несовершенств, ваша машина - не исключение.
    ...программа работает, как вам кажется, неправильно, - почитайте книгу по юриспруденции. В конце концов - это только вам так кажется.
    ...работа подошла к концу :
    а) прогоните ее;
    б) задайте себе вопрос, а зачем это все нужно ?;
    в) не получив ответа, можете сдавать продукт.
     
  4. Mr.V

    Mr.V Новичок

    16
    0
    Ну и наконец, святая святых: Теория ошибок.
    Ошибки так же неисчерпаемы, как и атом.
    Аксиома: В любой программе есть ошибки.
    Закон пропорциональности: Чем более программа необходима, тем больше в ней ошибок.
    Следствие: Ошибок не содержит лишь совершенно ненужная программа.
    Фундаментальный закон теории ошибок: На ошибках учатся.
    Следствие 1: Программист, написавший программу, становится ученым.
    Следствие 2: Чем больше программист делает ошибок, тем быстрее он становится ученым.
    Следствие 3: Крупный ученый-программист никогда не пишет правильные программы.
    Замечание: На то он и ученый.
    Указание начинающему программисту: Если вы с первого раза сумели написать программу, в которой транслятор не обнаружил ни одной ошибки, сообщите об этом системному программисту. Он исправит ошибки в трансляторе.
    Закон находимости ошибок: Программист может обнаружить ошибку только в чужой программе.
    Следствие: Ошибке не все равно, кто ее обнаружит.
    Совет начинающему программисту: Никогда не исправляйте найденные ошибки, ибо это повлечет за собой появление неизвестного числа ненайденных. Лучше опишите их в сопроводительной документации как особенность программы.
    Определение: Будем называть языком ошибок правила, в обход которых пишутся программы.

    Язык ошибок.

    Ошибки могут следовать друг за другом.
    От перестановки двух эквивалентных ошибок результат не меняется (коммута- тивность эквивалентных ошибок).
    Две последовательные ошибки можно объединить в одну, более сильную.
    Одинаковые ошибки необязательно делать каждый раз, достаточно сделать од- ну, а затем обращатся к ней по мере необходимости из любого места программы.
    Ошибки могут образовывать циклы. Наиболее устойчивый из них - бесконечный.
    Ошибки могут вызывать друг друга и сами себя (рекурсивность ошибок).
    Ошибки допускают многократное вложение друг в друга. Две одинаковые вло- женные ошибки называются четной ошибкой и ошибкой не являются.
    Свойство четности ошибок: Если написанная программа сработала правильно, то это значит, что во время ее работы выполнилось четное число ошибок или программист не понял задание.
    Формулировка вышеприведенного свойства, предназначенная для политиков: Ошибка, повторенная дважы, перестает быть ошибкой.

    Взаимодействие ошибок с базовой операционной системой.

    Во время исполнения ошибки имеют наивысший приоритет. Прервать исполнение ошибки может только другая, более активная ошибка.
    Запросы операционной системы к ошибкам ошибками могут игнорироваться.
    Запросы ошибок к операционной системе игнорироваться не могут.
    При работе с файлами ошибки могут пользоваться файловой системой базовой ОС и ее ошибками.
    На ЭВМ с параллельной архитектурой может выполнятся несколько ошибок одно- временно.