Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Офтопик > Некоммерческие проекты
Перезагрузить страницу Разработка языка программирования
Ответ
 
Опции темы Опции просмотра
  (#31 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 29.09.2004, 19:52

2 Garik

>Авторы?

М.Зелковиц и Т.Пратт, по-моему, ранее я их указал

>Тоесть чем меньше в языке программирования конструкций, тем он проще, так?

Да, если это не в ущерб остальному

Для примера посчитайте кол-во видов циклов в VB и решите, добавляет это простоты или нет

>Чтобы получить какой результат? Решение задачи?
На одном языке решение определенной задачи может умещаться в строку, а на другом - на 2х страницах. А для другой задачи - наоборот. Так что это сомнительный критерий.

Нечеткий

>Но с другой стороны, будет ли удобным язык с абсолютным минимумом конструкций?

Здесь нужен разумный компромисс. Пример - достаточно иметь один вид циклов, но Pascal и C их три.

>Кстати, что скажете об удобстве языка? Важное это свойство?

Думаю, что да, но как его определить?

>По-вашему, Java удовлетворяет всем 3м пунктам? Проста, мощна и неизбыточна?

Не факт и однозначного отношения к ней у меня нет

>Паскаль и C (именно C, а не C++) вообще очень близкие языки, я не совсем понимаю, как их можно отнести к разным классам?

Если речь об оригинальном C, то не могу согласиться. Pascal - язык со строгим контролем типов и большим контролем за обращением к памяти.
По-моему это большие отличия.

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

Давайте, может что получится.

Пока названо, но не определено четко следующее

-Простота
-Удобство
-Отсутствие избыточности
-Мощность

Можно добавить простоту компилятора или интерпретатора, правда не знаю, какова связь этого с простотой чтения текста - ассемблер, например просто переводится

И хорошо бы уточнить насчет любых классов языков. Естественные языки тоже? Так случитось, что наиболее распространены языки императивные...
Ответить с цитированием
  (#32 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 29.09.2004, 20:03

И вот еще что. Стоит вспомнить основные идеи, лежащие в основе языков. Применительно к императивным языкам это:
-Использование формульных выражений (т.е. выражений, похожих на математические формулы)
-Представление о типах данных
-Теорема о структурном преобразовании
-Разделение программы на функции
-ООП
Наверное, это не все...
Ответить с цитированием
  (#33 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 30.09.2004, 13:57

За книгу спасибо. Непременно постараюсь приобрести и прочитать.
Дискуссию по сравнению Паскаля и Си предлагаю прекратить как бесполезную.

Итак, по сути.
Сформулировано 4 требования к хорошему ЯП:
- Простота
- Удобство
- Отсутствие избыточности
- Мощность

Пока еще я не видел ни одного абсолютно четкого формального описания этих требований. Реккурсивные отношения типа "простое, но не мешающее удобному" и "удобное, но не мешающее простому" не катят.

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

Удобство достигается хорошим препроцессором, который позволяет определять удобные конструкции (различные циклы и прочее).

Вот с мощность языка возникают некоторые проблемы.
Что же это такое все-таки?
Ответить с цитированием
  (#34 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 30.09.2004, 14:49

Вчера посмотрел, что написано в упомянутой книге о свойствах хорошего языка (сокр.)
1. Ясность, простота и единообразие понятий. Минимальное кол-во понятий+простые правила их комбинирования. Удобочитаемость, в т.ч. требование обозначения разных понятий по-разному.
2. Ортогональность, т.е. допустимость любых комбинаций конструкций языка (?).
3. Естественность для приложений (в качестве хорошего примера упомянут Prolog).
4. Поддержка абстракций, т.е. возможность определения новых типов данных и операций. Утверждается, что Pascal и C не удовлетворяют этому требованию (?).
5. Удобство верификации, достигаемое в т.ч. просторой синтаксиса и семантики.
6. Наличие и удобство среды программирования (?).
7. Переносимость.
8. Стоимость использования, в т.ч. стоимость исполнения программы, компиляции, разработки и сопровождения (вторая и, может быть, первая составляющая сегодня большой роли не играют).

Цитата:
Мой вариант: ограничить язык абсолютным минимумом конструкций, необходимых для реализации его парадигм. Т.е. из множества конструкций языка нельзя выбросить ни одну конструкцию так, чтобы язык оставался полностью функционирующим в рамках своих парадигм.
ИМХО это достаточно формальное определение.
Согласен, но и здесь есть варианты
1. Написание новой спецификации языка
2. Использование какого-либо из существующих языков (и доступного в виде исходного текста транслятора). Тогда надо решить, какого - вариантов не так уж мало, но искать стоит лишь среди маленьких трансляторов. Использование уже написанного транслятора упростит дальнейшее ИМХО.

Не хочу ничего навязывать, поэтому для начала предлагаю посмотреть www.exmortis.narod.ru (возможно, ссылка вам известна)
Ответить с цитированием
  (#35 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 30.09.2004, 15:08

Цитата:
Вчера посмотрел, что написано в упомянутой книге о свойствах хорошего языка (сокр.)
Вообще-то список не производит особого впечатления.
Итак, по порядку.

Цитата:
1. Ясность, простота и единообразие понятий. Минимальное кол-во понятий+простые правила их комбинирования. Удобочитаемость, в т.ч. требование обозначения разных понятий по-разному.
Два противоречивых требования. Авторы сами-то поняли?

Цитата:
2. Ортогональность, т.е. допустимость любых комбинаций конструкций языка (?).
Я бы попросил авторов привести пример такого языка.
На самом деле, идею я понял, но изложена она исключительно коряво.

Цитата:
3. Естественность для приложений (в качестве хорошего примера упомянут Prolog).
Для каких приложений? Что значит "естественность"?

Цитата:
4. Поддержка абстракций, т.е. возможность определения новых типов данных и операций. Утверждается, что Pascal и C не удовлетворяют этому требованию (?).
А вот тут согласен на все 100.
Вот только все равно это должно быть сформулировано более четко.

Цитата:
5. Удобство верификации, достигаемое в т.ч. просторой синтаксиса и семантики.
Масло масляное.

Цитата:
6. Наличие и удобство среды программирования (?).
Это к языку вообще отношения не имеет.

Цитата:
7. Переносимость.
Аналогично.

Цитата:
8. Стоимость использования, в т.ч. стоимость исполнения программы, компиляции, разработки и сопровождения (вторая и, может быть, первая составляющая сегодня большой роли не играют).
А это втройне не имеет никакого отношения к языку.

[quote]
Цитата:
Не хочу ничего навязывать, поэтому для начала предлагаю посмотреть www.exmortis.narod.ru (возможно, ссылка вам известна)
Ссылка мне неизвестна.
Но увы - посмотреть мне ее не удалось:
Цитата:
The page cannot be displayed
Ответить с цитированием
Ads.
  (#36 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 30.09.2004, 16:23

Похоже, неработоспособность ссылки была временной (а отсутствие первой страницы во фрейме постоянно)

Цитата:
Я не совсем понял, при чем тут трансляторы и спецификации языка?
Мы сейчас обсуждаем требования к гипотетическому хорошему языку.
Речь была о наборе конструкций, а это уже нечно конкретное. Ладно другой вопрос - для чего предназначен гипотетический язык? Ответ "для всего" скорее всего не подойдет потому, что высказано желание рассотреть нечто минималистское (интересно, C++ может рассматриваться как язык для вcего, но это так, отступление?). Другой вариант ответа на этот вопрос - в основном для разработки системного ПО.

И по п.1-8:

1. Где противоречие?
3. Не могу дать пояснений.
4. Непонятно, почему структура данных и набор функций обрабатывающих эту сткутуру не может быть признан средством поддержки абстракций (пусть и не лучшим)?
6. Может имелся ввиду успех VB (но он не упомянут)? Мой пример - есть текст программы на Java, нужно посмотреть только спецификацию класса. Простой текстовый редактор не слишком удобен, т.к. спецификация и реализация не разделены.
7. Переносимость не нужна только если кругом IBM PC и ничего другого нет
Ответить с цитированием
Ads
  (#37 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 30.09.2004, 17:27

Цитата:
Похоже, неработоспособность ссылки была временной (а отсутствие первой страницы во фрейме постоянно)
Уже смотрю сайт. Хотя не вполне понимаю, к чему эта ссылка... Статей по тематике я там не вижу... Может плохо ищу?

[quote]
Цитата:
1. Где противоречие?
Минимальное количество конструкций и возможность записать одно и то же несколькими способами - разве в этом нет некоторого противоречия?

Цитата:
4. Непонятно, почему структура данных и набор функций обрабатывающих эту сткутуру не может быть признан средством поддержки абстракций (пусть и не лучшим)?
Речь видимо шла о том, что абстракции должны быть таковыми на семантическом уровне, т.е. быть максимально похожими на базовые типы и процедуры языка.

Цитата:
6. Может имелся ввиду успех VB (но он не упомянут)? Мой пример - есть текст программы на Java, нужно посмотреть только спецификацию класса. Простой текстовый редактор не слишком удобен, т.к. спецификация и реализация не разделены.
Это не имеет никакого отношения к самому языку. Среда разработки - это уже другая песня.

Цитата:
7. Переносимость не нужна только если кругом IBM PC и ничего другого нет
Переносимость относится к реализации компилятора или транслятора, но ни в кое случае не к самому языку.
Ответить с цитированием
  (#38 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 30.09.2004, 18:08

Цитата:
Хотя не вполне понимаю, к чему эта ссылка... Статей по тематике я там не вижу... Может плохо ищу?
Найти там можно только ряд реализаций языков...

Цитата:
Минимальное количество конструкций и возможность записать одно и то же несколькими способами - разве в этом нет некоторого противоречия?
Разве где-то сказано по запись одного и того-же несколькими способами?

Цитата:
Переносимость относится к реализации компилятора или транслятора, но ни в кое случае не к самому языку.
Не совсем. Пример - в стандарте C ничего не говорится о диапазонах представления чисел, в разных реализациях они различны и это может быть источником проблем
Ответить с цитированием
  (#39 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 30.09.2004, 18:14

[quote]
Цитата:
Цитата:
Переносимость относится к реализации компилятора или транслятора, но ни в кое случае не к самому языку.
Не совсем. Пример - в стандарте C ничего не говорится о диапазонах представления чисел, в разных реализациях они различны и это может быть источником проблем
Пример хороший.
Но это относится скорее не к переносимости, а к качеству самого стандарта. Насколько я помню, в стандарте C99 этот недостаток уже исправлен.
Ответить с цитированием
  (#40 (permalink)) Старый
yureckor yureckor вне форума
Member
 
Сообщений: 462
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.03.2004
По умолчанию 01.10.2004, 09:53

1. "Язык программирования"- предназначен для написания алгоритмов/программ. На данный момент нужен "Язык написания готовых продуктов". Согласитесь, что программа и готовый продукт- отличаются.
IMHO- должно быть разделение уровней написания программы- уровень собственно обычного "низкоуровнего языка", уровень "высокоуровнего языка" и уровень "Visual/GDI/Взаимодействие с системой/Документация/Упаковщик/Инсталятор".
Ну это в перспективе.

2. Отличительная хреновая особенность языков- заставляют думать о типах переменных.
Т.е. нужно следить char или byte, хотя разницы никакой, а в Паскале чтобы узнать адрес,
приходится накладывать переменную типа WORD на PTR! Короче, лишний геморой. На ассемблере
легче, хотя тоже иногда засунешь вместо указателя на текст его первые 4 байта.
Ну а отсутствие меток в языках- ### слов нет!

Короче- язык должен Давать возможности для программирования, а не ограничивать их.

Сейчас я соображаю над идеей "универсальной переменной" (типа буфера в Win) которая
даст возможность создавать программы управляемые данными и на "высоком уровне языка"
графически лепить скелет проги из готовых компонент.
Ответить с цитированием
  (#41 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 01.10.2004, 13:33

Цитата:
Originally posted by yureckor
[b]1. "Язык программирования"- предназначен для написания алгоритмов/программ. На данный момент нужен "Язык написания готовых продуктов". Согласитесь, что программа и готовый продукт- отличаются.
IMHO- должно быть разделение уровней написания программы- уровень собственно обычного "низкоуровнего языка", уровень "высокоуровнего языка" и уровень "Visual/GDI/Взаимодействие с системой/Документация/Упаковщик/Инсталятор".
Ну это в перспективе.
ИМХО хороший язык должен позволять программеру чувствовать себя комфортно на любом из уровней.

Цитата:
Originally posted by yureckor
[b]2. Отличительная хреновая особенность языков- заставляют думать о типах переменных.
Т.е. нужно следить char или byte, хотя разницы никакой, а в Паскале чтобы узнать адрес,
приходится накладывать переменную типа WORD на PTR! Короче, лишний геморой. На ассемблере
легче, хотя тоже иногда засунешь вместо указателя на текст его первые 4 байта.
Ну а отсутствие меток в языках- ### слов нет!
Что касается типизации переменных - это давний теоретический спор.
Так что тут мнения в основном субъективные.
Что касается меток - в языках ООП применение меток - это очень плохой стиль программирования.
Кстати, языков, где отсутствуют метки, не так уж и много.
Ответить с цитированием
  (#42 (permalink)) Старый
nop nop вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.03.2004
По умолчанию 01.10.2004, 14:59

Цитата:
... Большинство алгоритмов были придуманы до 1970 года, современные языки сложились в 70-х, отчасти в 80-х годах (С++, если не ошибаюсь, в начале 80-х). Далее (речь об императивных языках) следуют попытки исправления дефектов С++ (как раньше - дефектов Fortran). Избытка идей не наблюлается...
Касательно С++:
Исправление дефектов это мелочи по сравнению со сложностями, которые возникают при добавлении новых возможностей с учетом поддержки старых программ. Идей огромное кол-во (я о С++) - но если их все реализовать(в стандарте) то все написанное ранее станет не поддерживаемым(27 окрября, кстати, начнется конференция по согласованию списка новых возможностей С++). Можно провести аналогию с поддержкой MS-DOS для свежих ОС от MS - полность убирать бояться, посколку написано огромное кол-во программ.

Цитата:
...
Существенный недостаток С/С++ - в нем есть много способов написания синтаксически верного, но бессмысленного текста.
Это можно сделать на любом языке(подходящеми для этого контекста обсуждения)

Цитата:
>Что такое неизбыточность?
Отсутствие двух или большего числа способов сделать нечто одно, например
p->N=1; и (*p).N=1;
Это разные вещи. В том смысле что и умножение можно заменить сложением. Во втором случае можно перегрузить оператор '*()', чтобы он возвращал другое значение. Из того что две некоторые сущности пересекаются в одной точке, не следует что одна из них избыточна.
Ответить с цитированием
  (#43 (permalink)) Старый
Mnior Mnior вне форума
Member
 
Сообщений: 487
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.12.2002
По умолчанию 04.10.2004, 17:33

Цитата:
Originally posted by yureckor+-->
Цитата:
Кстати, можно-ли в каком нибудь языке сделать массив функций?
<!--QuoteBegin-А. Хохлов

[b]... о свойствах хорошего языка (сокр.)
1. Ясность, простота и единообразие понятий. Минимальное кол-во понятий + простые правила их комбинирования. ...
Ответить с цитированием
  (#44 (permalink)) Старый
Mnior Mnior вне форума
Member
 
Сообщений: 487
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.12.2002
По умолчанию 04.10.2004, 17:40

Цитата:
Originally posted by SiMM
[b]... (даже не удосужившись указать, зачем и чем не устраивают существующие - да и не думаю, что вы перед этим ознакомились со всеми существующими диалектами всех существующих языков хотя бы в кратце - это невозможно) вы не сказали. Тогда к чему этот пустой трёп?
А есть ли где-нидь обзр языков только по их парадигмам и языковым особенностям?
1. Тяжело лопатить всю инфу по языку.
2. Этот форум и есть то место где будет данный обзор.
Ответить с цитированием
  (#45 (permalink)) Старый
Mnior Mnior вне форума
Member
 
Сообщений: 487
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.12.2002
По умолчанию 04.10.2004, 18:23

Цитата:
Originally posted by Garik+-->
Цитата:
<!--QuoteBegin-А. Хохлов
Цитата:
[b]... Простой текстовый редактор не слишком удобен, т.к. спецификация и реализация не разделены.
Это не имеет никакого отношения к самому языку. Среда разработки - это уже другая песня.
А может создатель форума каким-то образом подразумевает не сколь язык программирования, сколь систему разработки включающую и язык и среду? А может текстовый режим это лишь потдерживаемый вид отображения и редактирования этой системы и языков, как токовых, там несколько, как несколько view form? Короче, дело не в языке, а его парадигмах?
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с выбором языка программирования. Bernasloni Любые вопросы от новичков 0 07.11.2011 04:30
Разработка приложений на любом языке программирования! XTen Работа 0 08.04.2011 21:08
Подскажите с выбором языка программирования antoxa-ua Вопросы начинающих программистов 10 22.03.2011 22:24
Выбор языка программирования Rivers Вопросы начинающих программистов 5 28.10.2008 15:51
Как в BDS 2006 скомпилировать независящее от языка программирования приложение Fiminka C++ Builder 0 19.01.2007 20:48
Разработка компонентов в среде программирования asv C++ Builder 3 13.06.2006 13:41
Советы по выбору языка программирования imported_TIK Вопросы начинающих программистов 10 27.09.2005 13:16
Выбор языка программирования для сравнения целочисленных переменных tvy Вопросы начинающих программистов 2 26.09.2005 20:34
Интересует разработка языка программирования Andrey1 Некоммерческие проекты 2 01.08.2005 01:25
Аналих языка программирования IRENsuper С/С++ 0 23.06.2005 19:56
Выбор языка программирования для новичка Anonymous Вопросы начинающих программистов 2 18.08.2003 20:15



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов