Ал-р Канарский Настоящие программисты пишут на... ( несколько строк о Си ) Язык Си был придуман Керниганом и Ритчи где-то в середине 70-х годов, и с тех пор многие половозрелые особи, склонные к занятиям программированием, пишут на нем. Рассматривая этот факт с точки зре- ния психоаналитиков, любому становится ясно, что всех эти людей привлекает - возможность сублимировать свои извращенные наклонности в цивилизованной форме. Несмотря на усилия передовой части челове- чества (Никлаус "Сопляк" Вирт), все больше людей вынуждены контакти- ровать с сишниками. Эти заметки помогут определить сишника, помочь общению с ним. В качестве приложения даны краткие характеристики из- вестных систем программирования на Си, и методы борьбы с ними, что особо полезно в случае, когда нормального человека попросили напи- сать программку на Си (например, курсовую работу для девушки), и от- вертеться никак нельзя. Если в процесс общения с Си Вам понравилось - Вы сишник. Не пугайтесь, это нормально. Начинающим сишникам реко- мендуется прочитать классические труды великих сишников (см. выше), а также людей со сходными взглядами - " Real programmers don't use Pascal" и "Как стать сексуальной женщиной" Рут Диксон. Итак, поеха- ли. Следуя традиции фирмы Borland, ниже приводится список распостра- ненных вопросов на волнующие темы - и ответов. 1. Си и Сишники 2. Окружение 3. Ошибки 4. Библиотеки 1. Я купил себе PC и не знаю, на каком языке писать свои первые программы. Мои друзья рекомендуют Си, но я в сомнении... Вы, безусловно, правы. Здесь есть о чем подумать. Если Вы пише- те на Си, вы получаете маленькие и загадочные программы, кото- рые доставят удовольствие Вам и тому парню, который вместе с Вами будет ломать голову над тем, что Вы хотели сделать этим оператором. Если Вы хотите, чтобы Ваши программы просто работа- ли, достаточно писать их на чем-либо другом, например на Паска- ле. 2. Я не знаю, на каком диалекте Си и в какой среде мне работать... На этот счет не может быть других мнений: настоящие сишники пи- шут только на Microsoft C. Это лучший компилятор, с этими ключами в командной строке и таинственными сообщениями об ошиб- ках. К тому же, у него обычно нет среды, а если есть, то этот недостаток компенсируется непонятностью команд редактора, вели- колепными глюками в отладчике и молчаливой оптимизацией, кото- рая преображает Вашу программу до совершенно неузнаваемого ви- да. Если Вы не сишник, можно рекомендовать систему Turbo C. 3. Я написал программу на Си, и она не компиляется... Это бывает. Попробуйте первым делом отключить сообщения об ошибках (это стандартный метод). Если не помогает, попробуйте описать переменные по-другому. Также проверьте наличие скобочек у всех вызовов функций. Несколько слов о сообщениях типа "Ошиб- ка ассемблера : неправильное использование памяти в строке 1437", при этом Вам покажут какой-то файл с множеством ассемб- лерных операторов, и Вы убедитесь, что эта ошибка в процедуре _ _debug048, которую Вы видите первый раз в жизни. Не пугайтесь. Оставьте все, идите с девушкой в кино или заниматься любовью (если она сишница, можете поискать ошибку). Скорее всего, на следующее утро эта ошибка уже не случится. Еще можете отключить использование отладочной информации. 4. При компиляции все виснет... По-видимому, Вы работаете с Turbo C ++ или что-то в этом роде. Измените число ошибок до остановки компиляции в пункте меню Make, лучше увеличить. Попробуйте разбить программу на части и откомпилировать их раздельно. Если в памяти много резидентов, выбросьте их. И так далее. 5. Откомпилированная программа не линкуется. Похоже, Вы упорный малый. Настойчивость - хорошее дело, и если Вы хотите еще и слинковать программу, запомните Этапы освоения языка C на PC вероятно, выглядят так : - "?!!" - Программа, тщательно списанная из какой-то книжки, при ком- пиляции выдает кучу невразумительных сообщений, типа "illegal type perversion". При внесении изменений, которые, по Вашему мнению, могут эти ошибки элиминировать, программа виснет, перегружает машину, форматирует винт, пережигает карту адаптера... Это нормальный этап, если это Вас не отпугнуло, Вы, вероят- но, перейдете к следующему этапу : - "???" - Этап соответствует магическому мировоззрению (см. курс на- учного атеизма). Программа начинает делать нечто напоминаю- щее первоначальный замысел, но не сразу. Требуется совер- шить массу ритуальных действий - заменить большие буквы на маленькие (спокойно, спокойно, не кричите "Элементарно, Ватсон !" - в собственных идентификаторах), обявить локаль- ные переменные глобальными, перетащить includ'ы в один файл... Иногда требуются и жертвоприношения - инсталляция новой копии транслятора или что-нибудь в этом роде. Резать черного петуха обычно не требуется (во всяком случае, я и мои знакомые без этого пока обходились). Несложные умозаключения подсказывают, что возможены и сле- дующие этапы. Ведь кто-то же пишет эти исходники, которые поставляются с разными пакетами. Некоторые из них даже мож- но откомпилировать самостоятельно. Кстати, Керниган и Ритчи, насколько я знаю, разрабатывали язык на PDP -номер такой-то, а у PDP - ПАМЯТЬ НЕПРЕРЫВНАЯ, а не СЕГМЕНТИРОВАННАЯ, как на PC. Я верю в чистоту их намерений, иначе, если они планировали кучу моделей памяти и несколько типов несовместимых указателей с са- мого начала...