Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Обсуждение статей
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2008, 09:08   #1
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Сообщение

XAKEP.RU: C мёртв

Обучение программированию с помощью Си эквивалентно развращению малолетних
А.А.Берс

Цитата:
Sмена парадигмы
Будущее всегда наступает медленно и незримо. Подкрадывается, словно ниндзя, подступает на мягких лапках. Нельзя проснуться однажды утром и осознать – вот он, технотронный скачок, ведь вместо чашки кофе я возьму шприц и вколю прямо в сердце смесь таурина с чистым адреналином. Человек сильно ограничен в понимании окружающего мира, и пусть он хоть трижды огнекрылая валькирия компьютерного андеграунда и неистовый апологет духа робоцивилизации, смену технопарадигмы ему не заметить.

Даже самым прогрессивным из нас свойственен консерватизм и любые, порой незначительные изменения к лучшему мы готовы встретить в штыки. Особо мы недолюбливаем, когда мир меняется не вокруг нас, а внутри, в собственном сознании. Многие люди мнят себя глубоко законспирированными «живыми воплощениями бога» (в простонародье: экспертами), которым трудно, подчас невозможно, выкинуть из головы накопленные знания и опыт и начать всё заново.

Не так важно, заметили ли вы или нет эволюционный переход. Способность к адаптации позволит вам существовать на любой стадии развития человечества. Осталось только принять сам факт эволюционного скачка.

Cага о трёх яzыках
«На каком языке программировать?» - едва ли не ключевой вопрос в IT-сфере за последние 30 лет, особенно актуальный для российской консервативной индустрии программирования. «Правильный» язык должен максимально способствовать «техничному» программированию, помогать развивать хороший стиль и т.п. Определенные вещи «язык адекватного программирования» должен и запрещать (например, оператор безусловного перехода), а другие гарантировать (сокращенное вычисление логических выражений для грамотной организации циклов).

В 1970 г. Никлаус Вирт опубликовал свой первый язык, спроектированный именно с учетом весьма жестких требований, широко известный язык Паскаль. После изобретения Паскаля понимание технологий программирования углубилось (модульные и объектные методы). Сам Вирт учёл это последовательно в двух языках, прямых потомках Паскаля, - это Модула-2 (1980) и Оберон (1988). Модула-2, появившаяся одновременно с другим паскалеобразным языком Ада, разработанным по заказу министерства обороны США, но более простая и эффективная, естественным образом пришла на смену Паскалю в российской космической и оборонной индустрии.

Оберон - наиболее совершенный наследник старого Паскаля, спроектированный с тщательнейшим учетом требований эффективной профессиональной работы. Однако научно-исследовательские разработки Вирта по углублению и расширению возможностей языков были погребены жёсткой маркетинговой политикой фирмы Борланд, производителя Турбо Паскаля. Поэтому часть программистов ушла с Турбо Паскаля на более «современный», «настоящий», «промышленный» продукт фирмы Борланд - Дельфи. Система Дельфи, однако, основана на версии Паскаля, в которую было бездумно добавлено множество модных наворотов, резко усложнивших язык. Для сравнения: язык Оберон, в который Вирт также ввёл ключевые элементы объектно-ориентированного программирования, сравнительно с Паскалем и Модулой-2 выглядит значительно проще, а не сложнее старого Паскаля. Но Оберон качественно мощнее «дельфийского» Паскаля, несмотря на всю сложность последнего (благодаря механизму автоматического управления памятью, до Оберона остававшегося прерогативой интерпретируемых языков). На будущее заметим, что Оберон существует в нескольких мало отличающихся вариантах, одному из которых ученики Вирта дали название Компонентный Паскаль, чтобы подчеркнуть близость и прямую преемственность со старым Паскалем.

В самой индустрии ПО наибольшую популярность стали приобретать проекты Java и C#, сделанные, хотя и на другой синтаксической основе, но под сильнейшим влиянием именно Оберона. Можно сказать, что индустрия ПО под давлением объективной реальности сумела лучше разобраться в глубинной природе процесса создания ПО, чем программисты, соблазнившиеся поверхностной синтаксической преемственностью «дельфийского» Паскаля с первоначальным вариантом языка.
Alter вне форума Ответить с цитированием
Старый 11.07.2008, 09:10   #2
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Сообщение

Тирания мозга веrсии С
Цитата:
Уход в «дельфийский» Паскаль вместо «правильного» Оберона - это лишь одна сторона проблемы программирования. В хаосе последних 10-15 лет проявилась ещё более тревожная и опасная тенденция: распространение C-образных языков.

В середине 1970-х была создана и в дальнейшем широко распространилась в разных вариациях (в т.ч. знаменитый Linux) весьма мощная операционная система Unix. Вместе с ней в мир программирования «въехал» и получил распространение язык C, использованный для её написания. В дальнейшем на его основе был построен (как и «дельфийский» Паскаль, бездумным прямым добавлением множества новомодных, зачастую непроверенных средств) язык C++.

Язык C был сочинен (именно сочинен, т.к. проектированием это назвать нельзя) из бесхитростно проинтерпретированных практических соображений как замена ассемблеру в написании операционной системы Unix (которая сама по себе явилась, безусловно, прорывной разработкой). При создании C была проигнорирована вся накопленная к тому времени мудрость создания высоконадежных языков программирования. В результате на C легко написать совершенно нечитаемые конструкции. Приведу цитату с форума:

{Известны 10 преимуществ Паскаля перед Си Я приведу только одно, но самое важное:
На Си Вы можете написать:
Код:
for(;P("\n").R-;P("\ "))for(e=3DC;e-;P("_ "+(*u++/8)%2))P("| "+ (*u/4)%2);
На Паскале Вы НЕ МОЖЕТЕ такого написать.}

При таком аморфном синтаксисе программист совершенно не защищен от случайных ошибок (причем в C рассыпано и множество других «граблей»).

Было обнаружено, что плотность ошибок в больших программных текстах на языке C при прочих равных (квалификация разработчиков, объем и сложность ПО, время разработки и т.п.) в 16 раз превышает плотность ошибок в программах на наиболее совершенном потомке Паскаля BlackBox’е (об этом языке речь пойдет ниже).

Тем не менее, именно те свойства языка C, которые делают его использование источником дыр в больших программах, привели к его популярности среди незрелых киддисов от программирования, рассматривающих его как игру, соревнование, арену демонстрации собственного «интеллекта». Важно понимать, что подобные явления не являются специфичными для программирования: в филологии и детской психологии хорошо известно аналогичное явление «детского фольклора» (страшилки и т.п.), демонстрирующее устойчивость на протяжении многих десятилетий. Таким образом, можно говорить о стихийном распространении своеобразной мифологии вокруг языка C и его производных, коренящейся в естественном недостатке знаний и опыта, а также в особенностях психики юных программеров - желания самоутвердиться среди сверстников («настоящие программеры пишут на C») и т.д.

Возникновение монструозно сложного языка C++, сочиненного путем тупого добавления к C без исправления его многочисленных дефектов модных конструкций объектно-ориентированного программирования (о недостатках C++ написаны целые трактаты), только усугубило ситуацию: многие по наивности путают сложность и мощь языка, об ошибочности чего постоянно говорил Н. Вирт.
___________________________________ ____

Последний раз редактировалось Alter; 11.07.2008 в 09:16.
Alter вне форума Ответить с цитированием
Старый 11.07.2008, 09:14   #3
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Сообщение

Цитата:
Стихийное распространение в среде юных партизан от программирования порочной мифологии, возникшей вокруг языков C/C++, имеет резоны в примитивных архетипах подростковой психологии. К этому стихийному явлению нельзя относиться пренебрежительно по следующим причинам. Во-первых, на примере программистов, учившихся на фортране еще в 1960-х г., мы видим, как долго и упорно сохраняются в зрелом возрасте эмоциональные предпочтения и привычки программистского мышления, зафиксировавшиеся в юности (это явление отражено в старом анекдоте: «Пожилому программисту требуется домработница, говорящая на фортране»). Обучать современным эффективным методам программистов с уже сложившимися привычками почти невозможно, и такие программисты постоянно «тащат» в серьезные проекты эти негодные инструменты. Во-вторых, масса фанатов C/C++ создает стадный эффект: с одной стороны, на него ориентируются коммерческие издательства (которые, как показывает опыт, функционируют как мощный усилитель любого мракобесия, если только находится достаточно покупателей; напомним, что изначально потребность знать C была создана распространением операционной системы Unix, а теперь и Linux). С другой стороны, новички-самоучки (коих множество) не имеют другого ориентира, кроме правила «иди за толпой». Наконец, менеджеры под давлением сиюминутных обстоятельств вынуждены ориентироваться на «предложение» рынка рабочей силы. Возникает порочный замкнутый круг, который разрывается только в относительно специфических классах приложений (встроенные системы управления и т.п.), где в игру вступает неумолимая объективная реальность, разрушающая мифологию. В-третьих (и это самое главное), продолжающий расти массив программ, написанных на C/C++, есть постоянный источник проблем - от потерь времени пользователей (современные версии Windows продолжают регулярно падать, как и 15 лет назад, хотя и научились лучше сохранять работу), до дыр безопасности, связанных с дефектами программ (переполнение буфера, утечки памяти и др.). Дефекты, порожденные использованием таких опасных языков программирования, как C/C++, очень трудно устранять.

{В августе 2001 г. вице-президент Microsoft Джим Олчин объявил во время доклада на открытии конференции Intel Developers Forum в Сан Хосе, что в новой операционной системе Windows XP все возможные проблемы из разряда переполнение буфера были устранены посредством специального анализа исходных текстов на предмет безопасности (security audit). Но в декабре того же года была найдена «дыра» в одной из программ в составе Windows XP (в программах поддержки стандарта подключения внешних устройств Universal Plug and Play), причем, дыра оказалась именно из категории «переполнение буфера».}

The stanд…
Вообще, вся ситуация здесь выглядит совершеннейшим абсурдом: то, чего можно без труда добиться просто выбором качественного и простого языка программирования, решается... невообразимо сложным и дорогостоящим способом, а главной причиной, в конечном счете, оказывается умственная инерция программистов, в начале карьеры подвергшихся «заражению холерой C». Отсюда понятно, почему серьезные специалисты употребляют такие сильные выражения как «развращение малолетних», «интеллектуальная зараза» и т.п., говоря о языках C/C++.

Разумеется, проблемы C/C++ ощущаются и в индустрии (не все же там, в конце концов, «программные анархисты» или менеджеры), даже несмотря на то что конкуренция здесь ослаблена из-за быстрого расширения сферы IT. Именно поэтому возник язык Java, представляющий из себя попытку сделать то, что не сумели сделать авторы C++, а именно - не просто бездумно добавить на предательски ненадежную основу C все возможные новомодные средства, но и сделать какой-то осмысленный отбор, а также перепроектировать «основание» языка, исключив коварные ловушки, которыми знаменит C. При этом сильнейшее влияние оказал виртовский Оберон (компилятор которого, по сообщению Вирта, команда создателей Java изучила в исходниках, дав ему высокую оценку за несколько лет до выпуска Java) - строгая типизация, автоматическое управление памятью, отказ от множественного наследования - фактически, это отказ от главных культовых свойств C, делающих его столь опасным («полная свобода программисту, включая свободу делать любые ошибки»). Разумеется, чтобы убедить фанатов C согласиться с таким отказом, нужен был сильный способ отвлечь их внимание, и средство для этого было найдено в анти-майкрософтовских движениях, широко распространенных в мире IT. Дорогостоящая маркетинговая кампания, в значительной степени построенная на эксплуатации этой «обманки», имела успех.
____________________
Alter вне форума Ответить с цитированием
Старый 11.07.2008, 09:15   #4
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Сообщение

Цитата:
Успех маркетинга Java привлек достаточно разработчиков, чтобы преимущества Java в плане производительности из-за отказа от культовой «свободы» C моли себя проявить. Вслед за Java возник и ее «близнец» С#. Однако, оба этих языка - это, прежде всего, инструменты конкурентной борьбы соответствующих корпораций за удержание разработчиков: именно поэтому эти языки постоянно усложняются - это делает почти невозможным перенос больших массивов программных текстов на другие языки, прочно привязывая разработчиков к соответствующей платформе. Разработчики же, исходя из мифических соображений «эффективности» и т.п. и не понимая долгосрочную цену своих решений, стремятся использовать все средства, предоставляемые языком, «увязая» в ловушке.

Выход zдесь
Блэкбокс (BlackBox) - весьма удачный и наиболее популярный вариант Оберона, реализующий язык программирования Компонентный Паскаль.
Авторы Блэкбокса - небольшая группа учеников Н.Вирта, объединившаяся в компанию Oberon Microsystems Inc.. Один из них - Клеменс Шиперский - является ведущим авторитетом актуальной методологии компонентно-ориентированного программирования, в настоящее время сотрудник стратегического исследовательского подразделения Майкрософт (!). Блэкбокс доступен бесплатно и с полными исходными текстами, защищен одной из стандартных лицензий «открытого кода», аналогично системе Linux (по настоянию пользователей, Блэкбокс использует одну из стандартных лицензий SleepyCat, в которых смягчен экстремистский характер лицензии GPL). Блэкбокс представляет собой полноценную операционную среду, «погруженную» в другие операционные системы и допускающую взаимодействие с ними. В настоящее время полная версия Блэкбокса работает под MS Windows, а полноценная серверная версия работает под Linux.

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

Благодаря сочетанию эффективности, автоматического управления памятью и легкости создания специальной интерактивной графики Блэкбокс оказался весьма привлекательным для сложных научных расчетов синтетического характера («умные» численные алгоритмы, символическая алгебра большого объема, системы обработки данных и моделирования). Например, на Блэкбоксе создано ПО для расчета бортовых фазированных решеток истребителя Eurofighter; полный объем ПО - около миллиона строк. На Блэкбоксе сделана система управления крупнейшего каскада ГЭС на Амазонке (корпорация Astom Power), a также целый ряд других приложений, в т.ч. для экспериментальной и теоретической ядерной физики.

Все Обероны отличаются замечательной переносимостью, но Блэкбокс еще обеспечивает средства хорошей интеграции с операционной системой, в которую он погружен. Блэкбокс может быть поставлен и на «голое железо», а также использоваться как основа системы кросс-разработки (например, компонент Denia).

Подчеркнем, что BlackBox, хотя и аналогичен виртуальным машинам Java и .NET, но работает с эффективным компилируемым кодом. Благодаря этому программы, написанные на Компонентном Паскале в Блэкбоксе, качественно более эффективны, чем программы на Java и С#. В то же время сохраняется возможность компилировать Компонентный Паскаль как в Java, так и в MSIL (известный компилятор GPCP - Gardens Point Component Pasca).

Автор: Деймос Стренталл
______________

Последний раз редактировалось Alter; 11.07.2008 в 19:25.
Alter вне форума Ответить с цитированием
Старый 11.07.2008, 16:34   #5
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Помню, давно читал этот бред паскалиста (точнее BlackBox’ера). Подчеркну – БРЕД и не знание вещей как таковых.

Цитата:
В дальнейшем на его основе был построен (как и «дельфийский» Паскаль, бездумным прямым добавлением множества новомодных, зачастую непроверенных средств) язык C++.
Не знаю, насколько был продуман Дельфи, но С++ один из самых продуманных языков.

Цитата:
Известны 10 преимуществ Паскаля перед Си Я приведу только одно, но самое важное
Если это «преимущество» (на самом деле это не преимущество) автор этих строк понимает как «самое важное», то мне искренне его жалко. Гибкость C/C++ можно использовать по-разному, но я НИРАЗУ не видел подобного кода. Более того, эту гибкость используют для упрощения выражения, вплоть до доведения его в интуитивно понятную форму, например c = a + b, где a, b, c произвольные объекты, пусть например, класса матрицы. Как УПРОЩАЮТ жизнь шаблоны можно говорить годами. И ничего подобного в Дельфи нет.

Си-программисты могут написать так, но они этого не делают. Если у дельфистов возникает желание так написать (или зачем они так радуются, что в Дельфи это запрещено?), то это только их проблемы, а не языка Си.

Цитата:
Было обнаружено, что плотность ошибок в больших программных текстах на языке C при прочих равных (квалификация разработчиков, объем и сложность ПО, время разработки и т.п.) в 16 раз превышает плотность ошибок в программах на наиболее совершенном потомке Паскаля BlackBox’е
Сказки.

Цитата:
Тем не менее, именно те свойства языка C, которые делают его использование источником дыр в больших программах, привели к его популярности среди незрелых киддисов от программирования, рассматривающих его как игру, соревнование, арену демонстрации собственного «интеллекта».
Да вы что? Правда что ли ? Надо будет сказать Линусу Торвальдсу и другим разработчикам ядра Линукса, ребята видимо и не знают. До сих пор пишут на Си .

Цитата:
о недостатках C++ написаны целые трактаты
Ага, и все такие же, как эта «статья», наполненные фантастическим бредом.

Цитата:
многие по наивности путают сложность и мощь языка
Ага, и это видно по автору этой «статьи»

Цитата:
переполнение буфера, утечки памяти и др.
С каких пор это присуще только C/C++ ? Я вот позавчера спросил у брата (он Дельфист ), как он борется с утечкой памяти. В ответ молчание. Как добиться того, что бы когда объект (запись) больше не нужен будет, он был уничтожен. В ответ: вызвать деструктор / Dispose. Потом я рассказал про умные указатели... для него это стало открытием.
Потом я попросил одну из его программ потестить, через 10 минут заметил утечку памяти (программа могла спокойно разбухнуть в 2-3 раза при нормальной работе, ресурсы не отдала до завершения).

Цитата:
серьезные специалисты употребляют такие сильные выражения как «развращение малолетних», «интеллектуальная зараза»
Ни от одного специалиста я такого не слышал, от таких как автор – да.

Цитата:
Именно поэтому возник язык Java
Ява появилась потому, что надо было получить независимость от платформы на уровне собранной программы, что позволили сделать байт-код и JVM. Автору нужно подучить матчасть.

Цитата:
При этом сильнейшее влияние оказал виртовский Оберон
Гораздо чаще я встречаю, что на Java повлияли C и C++, удивительно, правда?

Цитата:
строгая типизация, автоматическое управление памятью, отказ от множественного наследования - фактически, это отказ от главных культовых свойств C
Пиндец. В Си не строгая типизация? Чтобы избежать утечек памяти, для С++ уже все нужное есть. Откуда в Си множественное наследование? В Си вообще нет ООП, это привилегии С++. Опять матчасть хромает у автора.

Цитата:
Выход zдесь - Блэкбокс
И на скольких платформах этот блекбокс есть? А теперь посмотрите, где есть хотя бы gcc.
filosof_x86 вне форума Ответить с цитированием
Старый 11.07.2008, 19:57   #6
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Очередной бред очередного фанатика не заслуживает комментариев)) А вообще, какое это отношение имеет к литературе?
still_alive вне форума Ответить с цитированием
Старый 12.07.2008, 00:08   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Как многа букаф, и все ни о чём... Странно вообще, никогда не видел людей, пишущих на C и "C с классами", которые бы так витиевато доказывали, что C лучше, чем паскаль... Самое интересное, ни разу не видел схваток по поводу Ада лучше Си, Фортран лучше Си, Бейсик лучше Си (и наоборот, разумеется), зато как дело доходит до паскаля, модулы или оберона, так начинается. Плохой язык, хороший.... скучно всё это. Всё равно, что заявить, что узбекский язык никуда не годится, всем срочно учить японский...
B_N вне форума Ответить с цитированием
Старый 12.07.2008, 10:36   #8
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Я думаю рейтинг языков программирования сам за себя все скажет:

июнь июль
1______1_______Java
2______2_______C
3______3_______C++
4______4_______(Visual) Basic
5______5_______PHP
6______6_______Perl
7______8_______Python
8______7_______C#
9______9_______JavaScript
10_____10______Ruby

Более подробная статистика здесь
edgy вне форума Ответить с цитированием
Старый 12.07.2008, 10:56   #9
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

edgy, спасибо за рейтинг без Delphi на Delphi форуме.
По поводу статьи, чего только не пишут на хакере, про то что умер паскаль, тоже часто они пишут )

Тем и отличается журнал от частного блога или форума, что пишут все подряд, чтобы охватить наибольшую аудитории сочуствующих. - землю крестьянам, фабрики рабочим, банкирам - печатный станок каждому по волге к 3000 году и по акции майкрософт

Цитата:
5______5_______PHP
6______6_______Perl
У, а сколько веб серверов написали на этих языках, аська до сих пор живет и работает на PHP - оценили бред?

Отделите мух от котлет или напишите свою статью в хакер.
Alar вне форума Ответить с цитированием
Старый 12.07.2008, 11:24   #10
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Цитата:
Я думаю рейтинг языков программирования сам за себя все скажет:
Он говорит только о популярности, но никак не о качестве. Это раз. Ты можешь сравнивать императивные языки со скриптовыми и функциональными? Это два.
still_alive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мой сайт xakep.su execom О форуме и сайтах клуба 26 24.10.2008 02:09