информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetЗа кого нас держат?Все любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft обещает радикально усилить... 
 Ядро Linux избавляется от российских... 
 20 лет Ubuntu 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / site updates
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Процесс разработки ПО и ЯП 13.10.03 12:45  Число просмотров: 3121
Автор: читатель Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Процесс разработки ПО и ЯП ?
Совершенно непонятно почему автор выбрал такое название статьи.
На мой взгляд статья должна была бы называться как-то вроде "N-цать неубедительных аргументов, доказывающих, что С и С++ суть отстой".
<site updates>
Процесс разработки ПО и ЯП 11.10.03 19:59  
Publisher: dl <Dmitry Leonov>
<"чистая" ссылка>
Процесс разработки ПО и ЯП
Костин Г.В.

Все в этой книге может оказаться ошибкой.
Р. Бах. Иллюзии
Здесь привожу некоторые фрагменты из проведенного мной анализа ЯП (несколько сот страниц; с охватом от Assembler до Zhell, от архитектуры процессоров до языков сценариев и от Fortran до C#). Обратная связь приветствуется. Будут интересны мнения, ссылки на литературу, конструктивная критика... Я с удовольствием рассмотрю предложения об обучении в вашем ВУЗе /участие в конференции/ работе связанной с анализом ЯП/Информации о заинтересованных лицах. E - mail автора: georgii"Nospam"@pisem.net. Естественно, перед отправкой писем строчку "Nospam" необходимо убрать.
С полным оглавлением данного исследования можно ознакомиться здесь. [ .keep/languages.content.html ] Что есть язык?
Для начала ответим на вопрос: Что есть язык ?
Язык - это интерфейс между двумя субъектами
Примеры: Человеческий язык - совокупность (слова, жесты, телодвижения, интонаций и мимики). Интерфейсы (мышка, пользователя, API) ...

Полный текст
По-моему, у автора просто немного не сложилось с С и С++... 06.05.04 20:19  
Автор: lzd Статус: Незарегистрированный пользователь
<"чистая" ссылка>
По-моему, у автора просто немного не сложилось с С и С++. ^_^
Во-первых, он их слабо различает. Во-вторых, явно нет серьезного опыта работы с этими языками.
А в-третьих, хотелось бы видеть больше запятых и меньше грамматических ошибок. Раз уж взялись серьезные статьи писать.
>Процесс разработки ПО и ЯП 04.05.04 12:44  
Автор: null666 Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Процесс разработки ПО и ЯП
> Костин Г.В.

> Все в этой книге может оказаться ошибкой.
> Р. Бах. Иллюзии
"Каждый имеет право написать книгу и каждый имеет право её не читать!" (с)кто-то неглупый

Господи, очередной "критик" с претензиями к "плюсам". Вы случаем на http://www.delphikingdom.ru не ошиваетесь? Слишком уж пропахший стиль. Попытки тщательно замаскировать дифирамбы Виртовским языкам не удались - заметили, имхо, все.

Применю грязный приём (оттуда же): если он Вам так не нравится, то какого чёрта Вы про него пишите? Не можете бросить? Ну бывает... Процесс разработки ПО говорите? Ну что же, я согласен, написано у Вас немножко (судя по скроллу - 30% статьи - не больше). За исключением прямоугольника - давно известные факты. Может быть следовало как-то расширить этот раздел?

>Лёгкость понимания программы человеком. Компьютер программу компилирует, а читает и
>модифицирует её человек. Успешность этого процесса в значительной степени зависит от легкости
>понимания программы. В частности, синтаксиса языка. "
Полностью согласен. И вот тут-то как раз языки Вирта сливают. Они разработаны не для человека - они разработаны для компилятора. От и до. Я не знаю каким нужно быть извращенцем, чтобы заменить наиболее часто используемый оператор присваивания на крайне трудную в наборе последовательность. Зато с точки зрения компилятора - абсолютно всё равно и крайне удобно. Крайняя линейность и рубленность конструкций (чаще всего не более двух-трёх операций в строке), безусловно выравнивает ситуацию с чтением программ, но ощущение, что ты вынужден размеренно шагать по коридору выбранному компилятором - не покидает. Modula и Oberon (знаком только по спецификациям и публикациям на пресловутом http://www.delphikingdom.ru) вызывают абсолютно те же чувства.

>ЯП языки - явление прежде всего социальное, а научное. Умозрительные критерии и оценки
>достоинств и недостатков языков, по меньшей мере, неубедительны - основной критерий: практика
> массового использования.
Перед словом "научное" видимо пропущено "не".
Вы идёте по скользкой дорожке перманентной критики а-ля Windows из разряда "ёжики плакали, кололись, но продолжали есть кактус". Массовость использования отнюдь не показатель.

>Единственное требование к использованию языка - это адекватность применения.
А вот это уже на 5 баллов! ^_^ b

>Наиболее верный путь к успеху - использование чистого объектно - ориентированного языка
Использование чистых объектно-ориентированных языков также не приводит ни к чему хорошему. Автор (Ян Джойнер) либо апологет чистого объектно-ориентированного подхода, либо ни разу не программировал на чистых объектно-ориентированных языках. Использование бесконечных классов, интерфейсов и пр. перегружает программу как лексически, так и логически. Банальное описание точки входа в программу занимает половину экрана. Спор из разряда goto и рекурсии. Да, без этого вполне можно обойтись, но порой решение с применением данных парадигм является самым простым и понятным.

>На x86, к примеру, это ничего не дает. И A=B++ и A:=B; inc(b); приведут к командам ассемблера
>MOV a,b; inc b
Неправда Ваша. Во-первых в Виртовских языках идеологически верным является написание A:=B; B:=B+1; Во-вторых то что Вы привели в качестве примера ассемблерного аналога - не более, чем дань моде и необходимости. Причём хочется заметить, что Паскалевская конструкция inc(b); вовсе необязательно будет интерпретирована как ассемблерная инструкция inc b - дело в том, что inc является библиотечной функцией, а посему её поведение никоим образом не зависит от Ваших (да и Вирта тоже) желаний.

>Вирт писал что : "...язык должен определяться в терминах математических, абстрактных концепций
>И только, если язык удовлетворяет этому критерию, он может считаться высокоуровневым."
Встречалось. Только вот в математических абстрактных концепциях нет места такой банальщине, как inc, оптимизация челочисленного умножения путем замены сдвигом битового представления числа... Да что там говорить - в математике понятием класса и то не пооперируешь. Видимо поэтому-то Вирт в своём развитии и остановился на уровне процедур - они вполне вписываются в стройные математические модели.

>Изменяющиеся от платформы к платформе размеры типов данных.
А что Delphi уже научился обеспечивать Integer одинаковым на всех платформах? Не смешите!

>int i=0,ar[2]={10,11};
>i=ar[i++];// А кто сразу скажет чему равно значение i
10. Столь любимая Виртом строгая математическая концепция приоритета операторов срабатывает безукоризненно. В отличие от следующей конструкции: IF a>4 AND a<6 THEN ...;

>Если заменить short int на longt int, то придется менять и printf("%d\n",x) на printf("%D\n",x)
Чуть выше был cout, а тут вдруг printf. Либо Вы грязно передёргиваете, либо сам себе злобный буратино. Оба случая полностью на Вашей совести.

>Отсутствует логический тип данных.
RTFM. Уже давным-давно существует.

>А что может значить, по Вашему мнению, команда a=24[ar]; ?
>При условии, что int ar[50]; int a; она полностью эквивалентна a:=ar[24];
Опять же с точки зрения математической логики - абсолютно верная конструкция. Ибо сложение, как водится, коммутативно - если Вы этого не знали - нужно было меньше в школе уроки прогуливать.

>Есть ли читатели, которые по - прежнему считают, что краткость - это всегда очень хорошо. А
>читабельность конструкций языка факт второстепенный ?
В качестве банальной тренировки можете также слепить строки в программке на Паскале, да ещё и на каком-нибудь архаичном диалекте времен приведённого Вами синтаксиса Кернигана и Ритчи. Получится не сильно читабельнее.

>Что вполне логично, т.к. проверка у процессоров 80x86 реализуются на аппаратном уровне.
Вы багтрак-то читаете? Если всё так шоколадно с аппаратной проверкой выхода за границы массива, то откуда все эти buffer overflow?

>Да и вынести низкоуровневый код, в отдельный модуль написанный, допустим, на ассемблере не
>составляет проблем
Вы пробовали это отлаживать??? Уж не говоря о том, что в этом случае нужен программист со знанием двух языков, ну или два программиста...

>Но ведь и заметного проигрыша тоже нет ?
Для некоторых задач и разница в 5% является крайне значимой.

В общем как уже сказал кто-то до меня - можно привести кучу подобных аргументов против Вирта. И правда напоминаете студента почему-то обидевшегося на С++.
Процесс разработки ПО и ЯП 31.10.03 13:15  
Автор: читатель Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Абсолютно неясно, при чём здесь "Процесс разработки ПО и ЯП". Такое ощущение (извините за резкость), что автор - студент N-го курса, получивший "неуд" за знание С/С++, и теперь пытающийся убедить окружающих в том, что С/С++ сложный, малоупотребительный язык. А как,интересно , будет выглядеть статья по ассемблеру?
Процесс разработки ПО и ЯП 12.11.03 15:26  
Автор: Георгий Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Абсолютно неясно, при чём здесь "Процесс разработки ПО и
> ЯП".
А начало статьи ты не читал ?
Такое ощущение (извините за резкость), что автор -
> студент N-го курса, получивший "неуд" за знание С/С++, и
Вообще-то автомат у меня был по C++
> теперь пытающийся убедить окружающих в том, что С/С++
> сложный, малоупотребительный язык.
И приводящий при этом цитаты в его пользу.
А как,интересно , будет
> выглядеть статья по ассемблеру?
Ну вообщето есть такая глава. И критики в ней нет абсолютно.
Процесс разработки ПО и ЯП 16.10.03 12:04  
Автор: Serge Sereda Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Процесс разработки ПО и ЯП
> Костин Г.В.


Начало статьи не соответствует её завершению. "Начали за здравие, а кончили за упокой".
Название: "Процесс разработки ПО и ЯП", а статья сведена к анализу плюсов и минусов "плюсов" (пардон за каламбур ;-)
Не учтены требования Законов Развития Технических систем (напр. http://cie.ase.md/~sereda/os_devel.htm или http://consumer.nm.ru/os_devel.htm).

Кроме того, крайне спорны утверждения об умении отдельных представителей Homo Sapiens Sapiens ходить по воде и превращать воду в вино ;-)

>Интересен сравнительный анализ ЯП и компиляторов и вообще всё
>что с этим связанно.

Вот описание полностью отечественной системы компиляции, интерпретации и анализа программ на С/С++, там частично приведён сравнительный анализ С++ и Ада95.
http://www.interstron.ru/txt/PaperEAZ_Autoref_Ru.htm

>В частности связь с психологией. Очень
>интересно отличие "у нас" и " за бугром".

С психологией технические системы не должны быть связаны никак.
Так же как и процесс их развития (http://www.bugtraq.ru/library/misc/invent.html).

>Интересуют также координаты людей и организаций, в чьи
>профессиональные и научные интересы входят ЯП.

Пока могу указать только http://www.interstron.ru/


С уважением,

Сергей Середа
serge_sereda 'at' hotmail.com
Процесс разработки ПО и ЯП 13.10.03 12:45  
Автор: читатель Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Процесс разработки ПО и ЯП ?
Совершенно непонятно почему автор выбрал такое название статьи.
На мой взгляд статья должна была бы называться как-то вроде "N-цать неубедительных аргументов, доказывающих, что С и С++ суть отстой".
Очень многое "притянуто за уши" 12.10.03 16:54  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Все в этой книге может оказаться ошибкой.

Например, мне было очевидно, что анализ не слишком непредвзятый. Автору не нравятся C/C++, но аргументы выбраны не самые лучшие.

Сначала возникло желание поквотить чуть ли не весь текст и прокомментировать с другой позиции (мне C/C++ нравятся). Потом сдержался :-), потому как потом бы самого себя оштрафовал бы за оверквотинг :-)
интересно, сам автор пробовал скомпилировать программку-Basic? :))) 10.11.03 13:33  
Автор: serg2 Статус: Незарегистрированный пользователь
<"чистая" ссылка>
нормальные компиляторы не пропускают switch (...) { break; ... }
и вполне справедливо сообщают что дальнейшие команды unreachable :)
это, увы, сильно подрывает доверие к уровню компетентности автора и его рассуждениям.
интересно ?-пробовал 12.11.03 15:23  
Автор: Георгий Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> нормальные компиляторы не пропускают switch (...) { break;
А я на ненормпльном GNU C по Linux ;)
И работает
увы 29.12.03 12:45  
Автор: serg2 Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> А я на ненормпльном GNU C по Linux ;)
> И работает

ну дак и я на ненормальном:) конечно оно все поправимо и потом запускаемо, но в исходном виде (copy-paste из текста статьи) дает такой результат:
GNU C version 2.95.4 20011002 (Debian prerelease) (i386-linux) compiled by GNU C version 2.95.4 20011002 (Debian prerelease).
test.c: In function `main':
test.c:12: parse error before `;'
test.c:13: warning: unreachable code at beginning of switch statement
test.c:15: parse error before `;'

---
Не знаю, с некоторыми тезисами я вынужден согласиться. 12.10.03 17:01  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
Но анализ говорит о том, что автор занимался C/C++ весьма поверхностно. Фраза "Элементарные операции со строками требуют знакомства с STL и шаблонами." меня порядком развлекла :)
C *некотороми* и я согласен. 12.10.03 18:01  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Но анализ говорит о том, что автор занимался C/C++ весьма
> поверхностно. Фраза "Элементарные операции со строками
> требуют знакомства с STL и шаблонами." меня порядком
> развлекла :)
Но сейчас просто что вспомню:

1) Два простейших цикла до 4-х миллиардов и рандом внутри. Скорость зависит от реализации самого rand, а не от того как язык компилит циклы (уж
это умеет делать компилятор любого языка). Если бы там был "правильный" рандом на MD5 к примеру, разница в скорости была бы еще больше.

2) Мутная прога. Непонятную программу можно написать на любом языке (и на виртовской линейке тоже), а вот эффективную - не всегда. То что это МОЖНО сделать не значит, что это следует делать.

3) for, который на самом деле можно сделать while-ом: покажите такой язык программирования, где нельзя.

4) Избыточность. То бишь наличие в C++ сходных и по функциям и (самое интересное) по получаемым результатам механизмов. Спорно. Чаще всего те или иные механизмы позиционируются на разных участках шкалы скорость-используемая память. Практически любую задачу, реализованную с помощью виртуальных функций можно переписать на шаблонах и наоборот, но шаблоны совсем не то же самое, что виртуальные функции.

5) Множственное наследование. Как аргумент против него: возможна ситуация, которую придется обходить. Ага. А если жить на улице, то квартиру не ограбят. Кроме того, вилкой можно выколоть себе глаз, так что давайте есть руками. Множественное наследование не исключает одиночное, а дополняет его. Никто не заставляет пользоваться множестенным наследованием, если не умеешь.

6) Критика printf-а. Следует различать сам язык и его библиотеку (хотя она тоже входит в стандарт языка). printf является обычной функцией, реализованной на языке. Иначе реализовать было просто нельзя. В паскале же ввод/вывод вообще введен в сам язык (в этом месте можно перечитать аргументы против страуструповского желания ввести в C++, причем не в язык, а в библиотеку, инстременты для создания GUI и работы с DB - автор непоследователен, вирту можно, страуструпу нельзя)

7) Для меня END LOOP ничуть не более понятен, чем } (если циклов, скажем штуки 4), но при этом набирать его гораздо дольше. Для обеспечения понятности во первых принято за закрывающей скобкой писать комментарий, к чему она относилась, во вторых все современные IDE позволяют быстро перейти к парной скобке - посмотреть чего там такое и вернуться обратно. Причем делается это горячими клавишами за пару секунд.

И т.д.. Сейчас больше не вспомню. Кое какие аргументы действительно имеют резон, но БОЛЬШИНСТВО не выдерживают критики. Скажем так, я встречал и более качественную критику C++, к которой я подкопаться не мог. Точно так же как встречал критику паскаля и других виртовских языков.
C *некотороми* и я согласен. 12.10.03 21:32  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> 3) for, который на самом деле можно сделать while-ом:
> покажите такой язык программирования, где нельзя.
Не. Речь о том, чтобы использовать for для обхода некоего набора величин. А там товарищ привел классическую для C бяку, когда начинающие в приращение цикла начинают пихать что ни попадя. Действительно не слишком хорошая вещь, хотя в ряде случаев как раз эта возможность может быть весьма полезной. В общем, как обычно - любым мощным инструментом надо уметь пользоваться...

> 4) Избыточность. То бишь наличие в C++ сходных и по
> функциям и (самое интересное) по получаемым результатам
> механизмов. Спорно. Чаще всего те или иные механизмы
> позиционируются на разных участках шкалы
> скорость-используемая память. Практически любую задачу,
> реализованную с помощью виртуальных функций можно
> переписать на шаблонах и наоборот, но шаблоны совсем не то
> же самое, что виртуальные функции.
Ну нет, про виртуальные функции и шаблоны я категорически не согласен, но об этом в аську либо в приват, потому что это долго :)

> 5) Множственное наследование. Как аргумент против него:
> возможна ситуация, которую придется обходить. Ага. А если
> жить на улице, то квартиру не ограбят. Кроме того, вилкой
> можно выколоть себе глаз, так что давайте есть руками.
> Множественное наследование не исключает одиночное, а
> дополняет его. Никто не заставляет пользоваться
> множестенным наследованием, если не умеешь.
Ну здесь я опять-таки не могу однозначно сказать что-то. В целом я вынужден согласиться с автором статьи, что множественное наследование - да, спорно. Причем и идея, и реализация в случае C++. По сравнению, например, с CLOS, в C++ множнаследование выглядит убого.

> 6) Критика printf-а. Следует различать сам язык и его
> библиотеку (хотя она тоже входит в стандарт языка). printf
> является обычной функцией, реализованной на языке. Иначе
> реализовать было просто нельзя. В паскале же ввод/вывод
> вообще введен в сам язык (в этом месте можно перечитать
> аргументы против страуструповского желания ввести в C++,
> причем не в язык, а в библиотеку, инстременты для создания
> GUI и работы с DB - автор непоследователен, вирту можно,
> страуструпу нельзя)
Ну там автор вообще плохо провел черту между языком и библиотекой :)

> 7) Для меня END LOOP ничуть не более понятен, чем } (если
> циклов, скажем штуки 4), но при этом набирать его гораздо
> дольше. Для обеспечения понятности во первых принято за
> закрывающей скобкой писать комментарий, к чему она
> относилась, во вторых все современные IDE позволяют быстро
> перейти к парной скобке - посмотреть чего там такое и
> вернуться обратно. Причем делается это горячими клавишами
> за пару секунд.
Правильно, точно так же как все современные IDE от END LOOP позволяют перескочить на начало цикла и обратно. Короче, дело вкуса.

> И т.д.. Сейчас больше не вспомню. Кое какие аргументы
> действительно имеют резон, но БОЛЬШИНСТВО не выдерживают
> критики. Скажем так, я встречал и более качественную
> критику C++, к которой я подкопаться не мог. Точно так же
> как встречал критику паскаля и других виртовских языков.
Это да.
Нет, почему же, мне, например, это тоже интересно. Давайте... 16.05.04 15:17  
Автор: feldgendler Статус: Незарегистрированный пользователь
<"чистая" ссылка>

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

> Ну нет, про виртуальные функции и шаблоны я категорически
> не согласен, но об этом в аську либо в приват, потому что
> это долго :)

Нет, почему же, мне, например, это тоже интересно. Давайте обсудим виртуальные функции и шаблоны?

> > 7) Для меня END LOOP ничуть не более понятен, чем }
> > (если циклов, скажем штуки 4), но при этом набирать его
> > гораздо дольше. Для обеспечения понятности во первых
> > принято за закрывающей скобкой писать комментарий,
> > к чему она относилась, во вторых все современные IDE
> > позволяют быстро перейти к парной скобке - посмотреть
> > чего там такое и вернуться обратно. Причем делается это
> > горячими клавишами за пару секунд.

> Правильно, точно так же как все современные IDE от END LOOP
> позволяют перескочить на начало цикла и обратно. Короче,
> дело вкуса.

Господа, я всё понимаю, но какое отношение имеют эти, чисто косметические, различия к сравнительному анализу языков? Аргументы наподобие "а ещё в паскале оператор присваивания := дурацкий" или "а в C идиотские фигурные скобки вместо нормальных begin ... end" идут в ход на предпоследней стадии holy wars, непосредственно перед переходом на личности и собственно мордобоем.
Если кратко: виртуальные функции обеспечивают полиморфизм времени выполнения, а шаблоны - полиморфизм времени компиляции. 16.05.04 21:51  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
>
> > > Практически любую задачу,
> > > реализованную с помощью виртуальных функций можно
> > > переписать на шаблонах и наоборот, но шаблоны
> совсем
> > > не то же самое, что виртуальные функции.
>
> > Ну нет, про виртуальные функции и шаблоны я
> категорически
> > не согласен, но об этом в аську либо в приват, потому
> что
> > это долго :)
>
> Нет, почему же, мне, например, это тоже интересно. Давайте
> обсудим виртуальные функции и шаблоны?
Есть подозрение, что это уже интересно только вам :) Так что опять же можно воспользоваться приватом либо аськой либо почтой :) Краткое выражение моей позиции - в сабже.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach