Сезон Наполеонов...
Незнание никогда не делает зла; пагубно только заблуждение. Заблуждаются же люди не потому, что не знают, а потому, что воображают себя знающими.
Ж.-Ж. Руссо.
Начало и завершение данного материала вполне могли бы быть взяты из статьи уважаемого Black Prince'a в прошлом номере КГ (N№18(259)), также посвященной критике не вполне корректной информации. К сожалению, все чаще появляются материалы низкого качества, которые буквально заставляют "браться за клавиатуру". Сегодняшний "разбор полетов" посвящен статье "Открытие сезона на C и C++! Наполеон отдыхает..." Павла Горбунова, опубликованной в N№18(259) КГ.
Так как исходный материал весьма сумбурен, то я буду рассматривать его последовательно, но, стараясь не злоупотреблять при этом цитированием. Впрочем, цитирования заслуживает даже введение:
"...задайте себе тривиальный вопрос: "А знаю ли я C или C++?". Примерно 20% пользователей не поймут вопроса, еще 20% вспомнят, что это язык программирования, еще 20% скажут, что C и C++ не нужен им, а еще у 20% забьется сердце сильнее обычного. Так вот про последних 20% пользователей я бы и хотел рассказать, как о людях, которые в основе своей являются базой всего мира программного обеспечения уже 20 лет."
Автор просил задавать конкретные вопросы, что я и постараюсь сделать. Хотелось бы узнать, куда он подевал еще 20% пользователей. Если судить за динамикой реакции остальных, то можно предположить, что потерянная группа просто скончается на месте от счастья при одном упоминании о C/C++. Далее из вступления четко следует, что речь в статье пойдет о "20% пользователей". Тогда при чем здесь C/C++? Но даже если предположить, что это программисты (кстати, как заметил Black Prince, слово "user" часто незаслуженно воспринимается программистами как ругательство), остается неясным источник такой статистики. Думаю, что общее количество разработчиков ПО вряд ли перевалит за 5% всех пользователей компьютеров.
Первый абзац статьи я честно перечитал несколько раз, но так до конца и не уловил, про кого говорит автор, кому с кем не по пути и, вообще, "где суть" (ну такой уж я, наверное, недалекий...).
Далее, я должен оговориться, что не считаю себя профессионалом в C/C++, хотя по роду работы мне с недавних пор приходится всерьез заниматься данным языком применительно к разным операционным системам. Поэтому я постараюсь не давать категоричных суждений по этому поводу. При этом я не хочу в очередной раз поднимать тему соперничества Object Pascal и C++, для этого достаточно форумов в Интернет. Ну, а теперь вперед:
"Итак, существует 3 хорошо распространенных компилятора: Microsoft, Watcom и Borland. ...Естественно, что я говорю о компиляторах для серии операционных систем Microsoft Windows."
Нет, это не естественно. Особенно в свете рассуждений о "шансах выжить в мире технологий", последних событий вокруг Microsoft, развития Linux и того, что C/C++ - языки не привязанные к какой-либо платформе, несмотря на свое рождение в UNIX. Это просто мое мнение.
"Их идея [Borland'а] с визуальным программированием в лице Delphi, C++ Builder - это хорошая вещь в теории, но когда на практике решаешь серьезные задачи, то удивляешься, что одна и та же программа ведет себя на разных компьютерах по-разному. Оказывается, что ты не можешь контролировать собственные ресурсы (т.е. приходящие на них сообщения от ядра)."
Программа и должна вести себя на разных компьютерах по-разному. А неспособность контролировать приходящие события зависит только от места произрастания рук программиста. Визуальные возможности являются характеристикой среды программирования Delphi, грамотно поддерживаемые со стороны языка Object Pascal. Из этого следует полная свобода выбора в методах программирования. На самом деле, библиотека Delphi VCL (Visual Component Library) в большинстве случаев эффективно избавляет от головной боли по поводу Win32 API, оставляя при этом все возможности для прямой работы с ним и привнося море новых возможностей. Если же, например, объективно взглянуть на MSVC, то приставка "Visual" выглядит не более, чем удачным коммерческим ходом.
"Поймите, что написанное "вручную" приложение будет легче всегда вами самими пониматься и контролироваться."
Действительное, "ручное" программирование добавляет понимания того, что написал. Хотя со временем разница исчезает, и выгоднее доверить рутину среде, тем более что она это сделает быстрее и корректнее. Конечно, есть случаи, когда лучше сознательно отказаться от визуального программирования (например, разделить код интерфейса и функциональный код приложения), но это уже вопрос культуры программиста.
"Компилятор [Watcom C/C++] может генерировать не только приложения реального режима (которые работают так же, как программы на Turbo Pascal), но и генерирует программы защищенного режима 386 (32-битные приложения)."
Если мне не изменяет склероз:), то у Turbo Pascal'а не было проблем с защищенным режимом, а сам защищенный режим - это не только 32-, но и 16-битные приложения (и пример тому - те же Windows 3.x).
"В общем, кто не хочет переходить к Microsoft Visual C/C++, тот может забыть про коммерческий интерес к своей продукции."
А как же продвигаемые самой Microsoft продукты Visual FoxPro и любимая игрушка дядюшки Билли - Visual Basic? Говорят, что буржуи от них без ума, а они умеют считать экономический эффект. Логика же подсказывает, что коммерческий успех продукта зависит от кучи факторов, и средства его создания интересуют потребителя едва ли не в последнюю очередь.
"Выбирайте компилятор, исходя из Ваших потребностей, но знайте, что лучше пользоваться тем, чем пользуются миллионы разработчиков ПО, чем быть первопроходцем и наступать на многочисленные грабли."
Конкретный вопрос: "Когда Вы в последний раз слышали о человеке, который сделал что-нибудь выдающееся, идя проторенными тропами?" А вот, что по этому поводу думают великие:
Что большинство? Большинство - безумие. Ум ведь лишь у меньшинства.
Фр. Шиллер.
"Поймите, что на практике C++ хорош для скоростных офисных работ, а устойчивость таких работ много ниже, чем ежели бы они были написаны на C."
А что, давайте писать сразу в машинных кодах. И зачем только могли понадобиться все эти никчемные инкапсуляция, наследование и полиморфизм, проверка передаваемых в функцию типов и так далее?.. Нужно отметить, что одна из самых зловещих и широко распространенных проблем систем безопасности - переполнение буфера - характерна, в основном, только для программ, написанных на C/C++ (см. "Сетевые решения" N№3). Вот такая вот устойчивость.
"Не тратьте время на сорные языки: Pascal и Basic (пускай простят меня фанаты этих языков). ...Скоро Вы поймете, что актуален Паскаль был 20 лет назад."
Фанаты наверняка не простят. Почему? Потому что их устраивают их средства разработки. А при наличии профессионализма на любом языке можно делать совершенно удивительные вещи (но не все, конечно). Будучи еще школьником, я увлекался программированием на весьма древнем аппарате "Искра" (советский клон IBM PC), используя обычный Basic. Лишь через несколько лет я полностью осознал, что тогда на Basic'е я сваял вполне неплохую СУБД с буферизованным вводом/выводом в бинарные файлы записей и еще кучей наворотов и графическую двумерную космическую стрелялку (с самонаведением ракет, между прочим). И все это шло без тормозов на советском процессоре типа 8086 (не разогнанном:), в интерпретаторе Basic'а. Да, а актуальность Pascal'а растет с каждым днем, т.к. он не ограничен стандартизацией и очень динамично развивается именно как язык.
"Уже, наверное, давно все знакомы с ситуацией, когда одним новым фонтом набран документ, а на другом этого фонта нет. Это живой пример того, как заботятся о конечном пользователе корпорации-гиганты."
А как должны заботиться корпорации-гиганты о конечном пользователе? Носиться за ним с нужным фонтом? Притом, тот же Word позволяет этот фонт включить в документ, хотя он и так должен открыться на любой машине, подставив любой подходящий фонт.
"Так разве смогут они [корпорации-гиганты] конкурировать при нормальном подходе к делу? Я думаю, это будет недолго, если наш пользователь захочет развиваться, а их - останется в своих запросах на текущем уровне."
И с кем этим корпорациям придется конкурировать? В данном контексте они пока конкурируют только друг с другом. А так называемых "наших" пользователей еще вообще нет как таковых. И куда они могут захотеть развиваться? С моей точки зрения, развитие пользователей в основном связано с развитием экономики в целом. Ну а поскольку Беларусь никого в этом плане пока не обгоняет, то и запросы "наших" пользователей ровным счетом никого не интересуют (ну, может быть, только "наших" разработчиков, и то далеко не всех).
"Лень их [буржуев] когда-нибудь доведет до первобытного состояния, а Мы - голь, которая на выдумки хитра, останемся на планете и дальше, но только будем сохранять стандарты, будем видеть будущее, будем умнеть, а не хитреть, будем пропитыми трудоголиками и творцами. Будьте дружны. И объединяйтесь в команды, но не допускайте энтузиазма. Энтузиазм - враг команды."
Этот абзац построен на сплошных противоречиях. Все-таки не понятно, надо быть хитрыми или нет? И зачем сохранять "их" стандарты, если они в первобытной своей простоте уже не придумают новых? И что это за начисто лишенный энтузиазма творец? Мне он больше представляется тупым кодировщиком, которому безразличен результат. А на чем тогда основана работа команд разработчиков под Open Source? Я бы рекомендовал автору поинтересоваться ТРИЗ (Теорией Решения Изобретательских Задач) Генриха Альтшулера и, в частности, ЖСТЛ (Жизненная Стратегия Творческой Личности). Чрезвычайно интересная наука (именно наука), на многое открывающая глаза.
"Желаем ли мы добра своей стране? Думаю, что ответ на вопрос уже давно не однозначен."
Подобные высказывания наводят на крепкие размышления...
"Если нас, программистов на C/C++, становится в Беларуси много, то заграничные инвесторы, зная, что нам можно платить меньше, чем их местным (США, Канада) специалистам, будут работать с нами. Мы будем наращивать потенциал программеров, а на их специалистов спрос упадет, потому что они привыкли круто загибать пальцы. В итоге, на их стороне массовые увольнения, и многие из их специалистов либо возьмутся за более глупые занятия, либо вернутся на Родину. Ну как? Понятно, что при этом мозги перетекут сюда, а при наличии мозгов в стране появляется высокий жизненный уровень и капитал. Ведь, где мозги - там и капитал."
Не стоит рассчитывать на то, что упадет спрос на "их" специалистов, а тем более на массовые увольнения. В США и Германии сейчас имеется колоссальный дефицит программистов.
Не зря IT-компании протаскивают через штатовский Конгресс решения об увеличении квот на въезд специалистов, а сам канцлер Шредер приглашает до 20000 программистов в Германию (и уже начали ехать, кстати). Не стоит рассчитывать и на перетекание мозгов сюда. Скупая статистика свидетельствует, что мозги текут в сторону денег, но никак не обратно. И уж, конечно, никто не станет возвращаться на Родину ради меньших денег (возможно, ради чего-то еще, но это не массовая тенденция).
"Есть просьба: не присылать вопросов типа: "Чем докажешь, что Паскаль хуже C/C++?". Этот вопрос уже давно подходит к тому, чтобы его разместить в рубрике "Тупые вопросы 2000"."
Действительно, этот вопрос уже давно не просто тупой, а бессмысленный (прошу не путать с риторическим). Это разные языки. И у каждого свои достоинства и недостатки. Все остальное - коммерческая возня. И кто знает, как все могло сложиться, если бы Microsoft в свое время решила продолжить разработку версий Windows на Pascal'е, а не переходить на C (см. статью Евгения Щербатюка "Oberon и все-все-все" в N№15 (256) КГ).
И последний вопрос ко всем. Откуда на страницах КГ возникают "Наполеоны"? Которые еще и спрашивают: "Ну как?" Или КГ постепенно превращается в филиал "Новинок"? Давайте полечим любимую газету хорошими, продуманными техническими материалами.
Разум имеет свои права, о которые глупость и предрассудки рано или поздно должны сокрушиться.
Екатерина II.
P.S. В случае публикации этого письма прошу перечислить мой гонорар первому же новому автору, который опубликует серьезный, интересный материал. Извините, если я был местами резковат, просто оторвался за всех...
С уважением, Владимир Волосенков
Ж.-Ж. Руссо.
Начало и завершение данного материала вполне могли бы быть взяты из статьи уважаемого Black Prince'a в прошлом номере КГ (N№18(259)), также посвященной критике не вполне корректной информации. К сожалению, все чаще появляются материалы низкого качества, которые буквально заставляют "браться за клавиатуру". Сегодняшний "разбор полетов" посвящен статье "Открытие сезона на C и C++! Наполеон отдыхает..." Павла Горбунова, опубликованной в N№18(259) КГ.
Так как исходный материал весьма сумбурен, то я буду рассматривать его последовательно, но, стараясь не злоупотреблять при этом цитированием. Впрочем, цитирования заслуживает даже введение:
"...задайте себе тривиальный вопрос: "А знаю ли я C или C++?". Примерно 20% пользователей не поймут вопроса, еще 20% вспомнят, что это язык программирования, еще 20% скажут, что C и C++ не нужен им, а еще у 20% забьется сердце сильнее обычного. Так вот про последних 20% пользователей я бы и хотел рассказать, как о людях, которые в основе своей являются базой всего мира программного обеспечения уже 20 лет."
Автор просил задавать конкретные вопросы, что я и постараюсь сделать. Хотелось бы узнать, куда он подевал еще 20% пользователей. Если судить за динамикой реакции остальных, то можно предположить, что потерянная группа просто скончается на месте от счастья при одном упоминании о C/C++. Далее из вступления четко следует, что речь в статье пойдет о "20% пользователей". Тогда при чем здесь C/C++? Но даже если предположить, что это программисты (кстати, как заметил Black Prince, слово "user" часто незаслуженно воспринимается программистами как ругательство), остается неясным источник такой статистики. Думаю, что общее количество разработчиков ПО вряд ли перевалит за 5% всех пользователей компьютеров.
Первый абзац статьи я честно перечитал несколько раз, но так до конца и не уловил, про кого говорит автор, кому с кем не по пути и, вообще, "где суть" (ну такой уж я, наверное, недалекий...).
Далее, я должен оговориться, что не считаю себя профессионалом в C/C++, хотя по роду работы мне с недавних пор приходится всерьез заниматься данным языком применительно к разным операционным системам. Поэтому я постараюсь не давать категоричных суждений по этому поводу. При этом я не хочу в очередной раз поднимать тему соперничества Object Pascal и C++, для этого достаточно форумов в Интернет. Ну, а теперь вперед:
"Итак, существует 3 хорошо распространенных компилятора: Microsoft, Watcom и Borland. ...Естественно, что я говорю о компиляторах для серии операционных систем Microsoft Windows."
Нет, это не естественно. Особенно в свете рассуждений о "шансах выжить в мире технологий", последних событий вокруг Microsoft, развития Linux и того, что C/C++ - языки не привязанные к какой-либо платформе, несмотря на свое рождение в UNIX. Это просто мое мнение.
"Их идея [Borland'а] с визуальным программированием в лице Delphi, C++ Builder - это хорошая вещь в теории, но когда на практике решаешь серьезные задачи, то удивляешься, что одна и та же программа ведет себя на разных компьютерах по-разному. Оказывается, что ты не можешь контролировать собственные ресурсы (т.е. приходящие на них сообщения от ядра)."
Программа и должна вести себя на разных компьютерах по-разному. А неспособность контролировать приходящие события зависит только от места произрастания рук программиста. Визуальные возможности являются характеристикой среды программирования Delphi, грамотно поддерживаемые со стороны языка Object Pascal. Из этого следует полная свобода выбора в методах программирования. На самом деле, библиотека Delphi VCL (Visual Component Library) в большинстве случаев эффективно избавляет от головной боли по поводу Win32 API, оставляя при этом все возможности для прямой работы с ним и привнося море новых возможностей. Если же, например, объективно взглянуть на MSVC, то приставка "Visual" выглядит не более, чем удачным коммерческим ходом.
"Поймите, что написанное "вручную" приложение будет легче всегда вами самими пониматься и контролироваться."
Действительное, "ручное" программирование добавляет понимания того, что написал. Хотя со временем разница исчезает, и выгоднее доверить рутину среде, тем более что она это сделает быстрее и корректнее. Конечно, есть случаи, когда лучше сознательно отказаться от визуального программирования (например, разделить код интерфейса и функциональный код приложения), но это уже вопрос культуры программиста.
"Компилятор [Watcom C/C++] может генерировать не только приложения реального режима (которые работают так же, как программы на Turbo Pascal), но и генерирует программы защищенного режима 386 (32-битные приложения)."
Если мне не изменяет склероз:), то у Turbo Pascal'а не было проблем с защищенным режимом, а сам защищенный режим - это не только 32-, но и 16-битные приложения (и пример тому - те же Windows 3.x).
"В общем, кто не хочет переходить к Microsoft Visual C/C++, тот может забыть про коммерческий интерес к своей продукции."
А как же продвигаемые самой Microsoft продукты Visual FoxPro и любимая игрушка дядюшки Билли - Visual Basic? Говорят, что буржуи от них без ума, а они умеют считать экономический эффект. Логика же подсказывает, что коммерческий успех продукта зависит от кучи факторов, и средства его создания интересуют потребителя едва ли не в последнюю очередь.
"Выбирайте компилятор, исходя из Ваших потребностей, но знайте, что лучше пользоваться тем, чем пользуются миллионы разработчиков ПО, чем быть первопроходцем и наступать на многочисленные грабли."
Конкретный вопрос: "Когда Вы в последний раз слышали о человеке, который сделал что-нибудь выдающееся, идя проторенными тропами?" А вот, что по этому поводу думают великие:
Что большинство? Большинство - безумие. Ум ведь лишь у меньшинства.
Фр. Шиллер.
"Поймите, что на практике C++ хорош для скоростных офисных работ, а устойчивость таких работ много ниже, чем ежели бы они были написаны на C."
А что, давайте писать сразу в машинных кодах. И зачем только могли понадобиться все эти никчемные инкапсуляция, наследование и полиморфизм, проверка передаваемых в функцию типов и так далее?.. Нужно отметить, что одна из самых зловещих и широко распространенных проблем систем безопасности - переполнение буфера - характерна, в основном, только для программ, написанных на C/C++ (см. "Сетевые решения" N№3). Вот такая вот устойчивость.
"Не тратьте время на сорные языки: Pascal и Basic (пускай простят меня фанаты этих языков). ...Скоро Вы поймете, что актуален Паскаль был 20 лет назад."
Фанаты наверняка не простят. Почему? Потому что их устраивают их средства разработки. А при наличии профессионализма на любом языке можно делать совершенно удивительные вещи (но не все, конечно). Будучи еще школьником, я увлекался программированием на весьма древнем аппарате "Искра" (советский клон IBM PC), используя обычный Basic. Лишь через несколько лет я полностью осознал, что тогда на Basic'е я сваял вполне неплохую СУБД с буферизованным вводом/выводом в бинарные файлы записей и еще кучей наворотов и графическую двумерную космическую стрелялку (с самонаведением ракет, между прочим). И все это шло без тормозов на советском процессоре типа 8086 (не разогнанном:), в интерпретаторе Basic'а. Да, а актуальность Pascal'а растет с каждым днем, т.к. он не ограничен стандартизацией и очень динамично развивается именно как язык.
"Уже, наверное, давно все знакомы с ситуацией, когда одним новым фонтом набран документ, а на другом этого фонта нет. Это живой пример того, как заботятся о конечном пользователе корпорации-гиганты."
А как должны заботиться корпорации-гиганты о конечном пользователе? Носиться за ним с нужным фонтом? Притом, тот же Word позволяет этот фонт включить в документ, хотя он и так должен открыться на любой машине, подставив любой подходящий фонт.
"Так разве смогут они [корпорации-гиганты] конкурировать при нормальном подходе к делу? Я думаю, это будет недолго, если наш пользователь захочет развиваться, а их - останется в своих запросах на текущем уровне."
И с кем этим корпорациям придется конкурировать? В данном контексте они пока конкурируют только друг с другом. А так называемых "наших" пользователей еще вообще нет как таковых. И куда они могут захотеть развиваться? С моей точки зрения, развитие пользователей в основном связано с развитием экономики в целом. Ну а поскольку Беларусь никого в этом плане пока не обгоняет, то и запросы "наших" пользователей ровным счетом никого не интересуют (ну, может быть, только "наших" разработчиков, и то далеко не всех).
"Лень их [буржуев] когда-нибудь доведет до первобытного состояния, а Мы - голь, которая на выдумки хитра, останемся на планете и дальше, но только будем сохранять стандарты, будем видеть будущее, будем умнеть, а не хитреть, будем пропитыми трудоголиками и творцами. Будьте дружны. И объединяйтесь в команды, но не допускайте энтузиазма. Энтузиазм - враг команды."
Этот абзац построен на сплошных противоречиях. Все-таки не понятно, надо быть хитрыми или нет? И зачем сохранять "их" стандарты, если они в первобытной своей простоте уже не придумают новых? И что это за начисто лишенный энтузиазма творец? Мне он больше представляется тупым кодировщиком, которому безразличен результат. А на чем тогда основана работа команд разработчиков под Open Source? Я бы рекомендовал автору поинтересоваться ТРИЗ (Теорией Решения Изобретательских Задач) Генриха Альтшулера и, в частности, ЖСТЛ (Жизненная Стратегия Творческой Личности). Чрезвычайно интересная наука (именно наука), на многое открывающая глаза.
"Желаем ли мы добра своей стране? Думаю, что ответ на вопрос уже давно не однозначен."
Подобные высказывания наводят на крепкие размышления...
"Если нас, программистов на C/C++, становится в Беларуси много, то заграничные инвесторы, зная, что нам можно платить меньше, чем их местным (США, Канада) специалистам, будут работать с нами. Мы будем наращивать потенциал программеров, а на их специалистов спрос упадет, потому что они привыкли круто загибать пальцы. В итоге, на их стороне массовые увольнения, и многие из их специалистов либо возьмутся за более глупые занятия, либо вернутся на Родину. Ну как? Понятно, что при этом мозги перетекут сюда, а при наличии мозгов в стране появляется высокий жизненный уровень и капитал. Ведь, где мозги - там и капитал."
Не стоит рассчитывать на то, что упадет спрос на "их" специалистов, а тем более на массовые увольнения. В США и Германии сейчас имеется колоссальный дефицит программистов.
Не зря IT-компании протаскивают через штатовский Конгресс решения об увеличении квот на въезд специалистов, а сам канцлер Шредер приглашает до 20000 программистов в Германию (и уже начали ехать, кстати). Не стоит рассчитывать и на перетекание мозгов сюда. Скупая статистика свидетельствует, что мозги текут в сторону денег, но никак не обратно. И уж, конечно, никто не станет возвращаться на Родину ради меньших денег (возможно, ради чего-то еще, но это не массовая тенденция).
"Есть просьба: не присылать вопросов типа: "Чем докажешь, что Паскаль хуже C/C++?". Этот вопрос уже давно подходит к тому, чтобы его разместить в рубрике "Тупые вопросы 2000"."
Действительно, этот вопрос уже давно не просто тупой, а бессмысленный (прошу не путать с риторическим). Это разные языки. И у каждого свои достоинства и недостатки. Все остальное - коммерческая возня. И кто знает, как все могло сложиться, если бы Microsoft в свое время решила продолжить разработку версий Windows на Pascal'е, а не переходить на C (см. статью Евгения Щербатюка "Oberon и все-все-все" в N№15 (256) КГ).
И последний вопрос ко всем. Откуда на страницах КГ возникают "Наполеоны"? Которые еще и спрашивают: "Ну как?" Или КГ постепенно превращается в филиал "Новинок"? Давайте полечим любимую газету хорошими, продуманными техническими материалами.
Разум имеет свои права, о которые глупость и предрассудки рано или поздно должны сокрушиться.
Екатерина II.
P.S. В случае публикации этого письма прошу перечислить мой гонорар первому же новому автору, который опубликует серьезный, интересный материал. Извините, если я был местами резковат, просто оторвался за всех...
С уважением, Владимир Волосенков
Компьютерная газета. Статья была опубликована в номере 20 за 2000 год в рубрике разное :: мелочи жизни