Зачем нужен язык программирования
От: INTP_mihoshi Россия  
Дата: 22.03.04 12:28
Оценка:
В продолжение тем других топиков.
IMHO.


Основное назначение языка – донести информацию с минимальными искажением и потерями.

Смысл использования языка (назовем это общением) обусловлен субъектами общения, т.е. теми, кто “говорит” и “слушает”. Нет смысла передавать информацию, которую не способен понять говорящий или слушающий. Традиционные языки программирования ограничивают языковые средства до уровня понимания слушателя (компилятора) и говорящего (программиста). И это неплохо работает пока слушатель и говорящий неизменны.

Но если мы хотим использовать код каким-то другим образом, например, передать для доработки другому программисту или использовать совместно с другим кодом, то начинаются “проблемы перевода”. Всем “неожиданным” читателям и писателям была бы очень полезна та информация, которая отсечена при урезании до уровня понимания компилятора. Все то, что оказалось непонятым и ненужным компилятору “выдавливается” на бумагу в виде документации. И обрабатывается эта документация исключительно “вручную”.

Одним из проявлений этого является пресловутый закон Брукса, по которому добавление разработчика в команду замедляет процесс разработки. Это происходит в основном потому, что все то, что “отрезано” компилятором и осталось в документации и головах разработчиков, нужно “загрузить” в голову нового члена команды.

В идеале Программа – это не способ управления машиной. Это формализация знаний программиста о задаче и способах ее решения. Основное назначение современного языка программирования – позволить ему и _провоцировать_ его сделать это с минимальными искажениями и потерями. И язык должен позволять работать с собой на произвольном уровне понимания программиста. Поэтому он должен по крайней мере в основе своей быть независимым от “говорящего» и “слушающего”. Только тогда он сможет адаптироваться под каждого конкретного “пользователя”. Я сейчас пытаюсь изобразить что-то подобное на основе логики предикатов...

Кстати, предлагаю тест на “годность” языка. Дается задача. Берется некоторое кол-во программистов примерно одного уровня. Они пишут ее по очереди каждый один день, причем до “своего” дня он не знает о программе ничего. Параллельно один программист решает ту же задачу. Отношение времени решения вторым и первым способом потраченного в обоих вариантов и будет коэффициентом эффективности языка
Re: Зачем нужен язык программирования
От: _Obelisk_ Россия http://www.ibm.com
Дата: 22.03.04 12:56
Оценка: +1 :)
Здравствуйте, INTP_mihoshi, Вы писали:


INT>В идеале Программа – это не способ управления машиной.


В идеале — проблема более общая и уже затронутая классиками

Как сердцу высказать себя?
Другому как понять тебя?
Поймет ли он, чем ты живешь?
Мысль изреченная есть ложь.

(c) Ф.Тютчев.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re: Зачем нужен язык программирования
От: thebeard Россия  
Дата: 22.03.04 13:04
Оценка: 4 (1)
Вспоминается Literate Programming
(http://www-cs-faculty.stanford.edu/~knuth/lp.html) Кнута
Posted via RSDN NNTP Server 1.8 beta
Re[2]: Зачем нужен язык программирования
От: INTP_mihoshi Россия  
Дата: 22.03.04 13:30
Оценка:
Здравствуйте, thebeard, Вы писали:

T>Вспоминается Literate Programming

T>(http://www-cs-faculty.stanford.edu/~knuth/lp.html) Кнута

О, спасибо Literate Programming — хорошая идеология, вот только изменение одного словав Literature части может соответствовать перелопачиванию половины Programming. И что-то при этом обязательно забывают перелопатить. И чем больше изменений, тем больше различия между тем, что программа делает и тем, что она делает на самом деле Классика...
Re: Зачем нужен язык программирования
От: King Oleg Украина http://kingoleg.livejournal.com
Дата: 22.03.04 13:59
Оценка:
Здравствуйте, INTP_mihoshi, Вы писали:

INT>Кстати, предлагаю тест на “годность” языка. Дается задача. Берется некоторое кол-во программистов примерно одного уровня. Они пишут ее по очереди каждый один день, причем до “своего” дня он не знает о программе ничего. Параллельно один программист решает ту же задачу. Отношение времени решения вторым и первым способом потраченного в обоих вариантов и будет коэффициентом эффективности языка

Интересная идея. Я бы поучаствовал.
King Oleg
*Читайте DOC'и, они rules*
Re[3]: Зачем нужен язык программирования
От: thebeard Россия  
Дата: 22.03.04 14:02
Оценка:
Нашёлся аж целый сайт об этом: http://www.literateprogramming.com/

Всё-таки LP ужасно нетехнологично. Требует практически религиозного
отношения к исходному коду. Поэтому, думаю, и не прижилось в широких
масштабах.
Posted via RSDN NNTP Server 1.8 beta
Re: Зачем нужен язык программирования
От: _Obelisk_ Россия http://www.ibm.com
Дата: 22.03.04 14:46
Оценка: 4 (1)
Прежде чем придумывать новый язык программирования подумайте над тем

— как писать парсер для него
— как писать run-time и кодогенератор для него
— как интегрировать программы на этом языке с библиотеками написанными на других языках
— какова будет поддержка компонентной разработки на этом языке
— можно ли импортировать код написанный на других языках в данный язык.
— будет ли язык иметь возможности для параллельного программирования.
— какова сложность создания IDE и библиотек для этого языка.
— насколько язык будет способен уживаться с системами контроля версий (Diff/Merge текстов и т.п)
— кто будет писать стандартные библиотеки



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[2]: Зачем нужен язык программирования
От: INTP_mihoshi Россия  
Дата: 22.03.04 15:42
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>Прежде чем придумывать новый язык программирования подумайте над тем


О, спасибо за списочек... Щас подумаем...

_O_>- как писать парсер для него

Текстовый язык хорошим быть не может Стандарт надо описывать без оглядки на текстовое представление.
Вообще у меня получается что-то похожее на MDA, но с исчислением предикатов вместо UML как базовой знаковой системой. И с понятиями вместо имен.

_O_>- как писать run-time и кодогенератор для него

Ну, сначала паразитировать на готовых рантаймах, а там-как получиться...

_O_>- как интегрировать программы на этом языке с библиотеками написанными на других языках

Примерно так же, как ассемблерные вставки с C или C с C++ или C++ с макросаим или шаблонами
Т.е. не навязывать свои правила, а приходить на помощь, когда исчерпаны средства основного языка программиста.

_O_>- можно ли импортировать код написанный на других языках в данный язык.

Нужно. И импортировать, и агрегировать. И вообще, каждый язык представляет какой-то образ мыслей и способы их представления.

_O_>- какова будет поддержка компонентной разработки на этом языке

Как основной модели разработки Т.е. любой кусок кода будет всеми силами пытать стать компонентом

_O_>- будет ли язык иметь возможности для параллельного программирования.

А как без этого?

_O_>- какова сложность создания IDE и библиотек для этого языка.

Порядка const*(сложность формулировки того, что они должны делать)

_O_>- насколько язык будет способен уживаться с системами контроля версий (Diff/Merge текстов и т.п)

Я как раз хочу избавиться от артефактов текстового представления... Соответственно, "родное" представление не должно быть текстовым...

Кстати, как с этим обстоит дело в MDA?

_O_>- кто будет писать стандартные библиотеки

Ну, разумеется, нужно уметь использовать библиотеки, написанные на других языках...


Раз какой-то интерес есть попытаюсь завтра более внятно описать что же у меня собственно получается...
Re[3]: Зачем нужен язык программирования
От: _Obelisk_ Россия http://www.ibm.com
Дата: 22.03.04 16:10
Оценка:
Здравствуйте, INTP_mihoshi, Вы писали:

INT>Текстовый язык хорошим быть не может Стандарт надо описывать без оглядки на текстовое представление.

INT>Вообще у меня получается что-то похожее на MDA, но с исчислением предикатов вместо UML как базовой знаковой системой. И с понятиями вместо имен.

Как раз ошибаетесь. UML-ю недоставало текстового представления, мы (Telelogic) его придумали. Customer-ам нравится.
Скажем гораздо проще написать
Integer Sum (Integer A, Integer B) { return A+B; }
чем рисовать диаграмму.
Текстовое представление тут же парсится во внутреннее представление, являющееся обычной UML 2.0 моделью.


_O_>>- как писать run-time и кодогенератор для него

INT>Ну, сначала паразитировать на готовых рантаймах, а там-как получиться...

Для того что вы хотите это не совсем хороший путь. Могут быть проблемы с трансформациями. Скажем станет их сложность порядка O(N^2) где N — число конструкций в программе на вашем языке.

_O_>>- как интегрировать программы на этом языке с библиотеками написанными на других языках

INT>Примерно так же, как ассемблерные вставки с C или C с C++ или C++ с макросаим или шаблонами
INT>Т.е. не навязывать свои правила, а приходить на помощь, когда исчерпаны средства основного языка программиста.

Не, не как С с С++, а скорее как Java с С++ или С# с ассемблером БЭСМ-6 . А интеграция жизненно необходима потому как у customer-ов будут куча библиотек с сотнями тысяч функций которые они захотят зареюзить.

_O_>>- можно ли импортировать код написанный на других языках в данный язык.

INT>Нужно. И импортировать, и агрегировать. И вообще, каждый язык представляет какой-то образ мыслей и способы их представления.

Тоже множество проблем. Скажем попытайтесь создать модель одинаково подходящею для С++ и Java.

_O_>>- будет ли язык иметь возможности для параллельного программирования.

INT>А как без этого?

А как с ними ? Вариантов ведь множество.


_O_>>- насколько язык будет способен уживаться с системами контроля версий (Diff/Merge текстов и т.п)

INT>Я как раз хочу избавиться от артефактов текстового представления... Соответственно, "родное" представление не должно быть текстовым...
INT>Кстати, как с этим обстоит дело в MDA?

Проблематично, пытаемся найти приемлимое решение. В общем случае Diff/Merge деревьев имеет сложность O(N^2).



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[4]: Зачем нужен язык программирования
От: Воронков Василий Россия  
Дата: 22.03.04 19:13
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>Как раз ошибаетесь. UML-ю недоставало текстового представления, мы (Telelogic) его придумали. Customer-ам нравится.


А можно ссылочку? Не нашел на сайте
... << RSDN@Home 1.1.3 stable >>
Re[4]: Зачем нужен язык программирования
От: BUran Россия http://www.buriy.com/
Дата: 23.03.04 05:41
Оценка:
_O_>Не, не как С с С++, а скорее как Java с С++ или С# с ассемблером БЭСМ-6 . А интеграция жизненно необходима потому как у customer-ов будут куча библиотек с сотнями тысяч функций которые они захотят зареюзить.
У тебя только богатые американские клиенты? Или ты пессимист по жизни?
Одно дело, язык с научной стороны, а другое дело — с коммерческой.
/bur
Re[5]: Зачем нужен язык программирования
От: _Obelisk_ Россия http://www.ibm.com
Дата: 23.03.04 06:40
Оценка: 16 (1)
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Здравствуйте, _Obelisk_, Вы писали:


_O_>>Как раз ошибаетесь. UML-ю недоставало текстового представления, мы (Telelogic) его придумали. Customer-ам нравится.


ВВ>А можно ссылочку? Не нашел на сайте


http://www.telelogic.com/products/tau/tg2.cfm



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[5]: Зачем нужен язык программирования
От: _Obelisk_ Россия http://www.ibm.com
Дата: 23.03.04 06:54
Оценка: +1
Здравствуйте, BUran, Вы писали:

_O_>>Не, не как С с С++, а скорее как Java с С++ или С# с ассемблером БЭСМ-6 . А интеграция жизненно необходима потому как у customer-ов будут куча библиотек с сотнями тысяч функций которые они захотят зареюзить.

BU>У тебя только богатые американские клиенты? Или ты пессимист по жизни?

1. Богатые клиенты не у меня, а у компании, на которую мы работаем.

2. Да, я пессемист и иногда (очень редко) реалист . Данные о куче библиотек с сотнями тысяч функций и типов взяты из опыта. Более того, переучить гигантские корпорации на использование нового языка или методологии черезвычайно трудно. Обычно на все попытки приучения к хорошему стилю моделирования/программирования они заявляют, что они делают так как делали и будут так делать впредь.

BU>Одно дело, язык с научной стороны, а другое дело — с коммерческой.


Язык программирования призван все же решать практические задачи бизнеса и производства.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[6]: Зачем нужен язык программирования
От: Miem Россия  
Дата: 23.03.04 06:58
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>>>Как раз ошибаетесь. UML-ю недоставало текстового представления, мы (Telelogic) его придумали. Customer-ам нравится.


Когда .NET поддерживать будете?
... << RSDN@Home 1.1.3 beta 1 >>
ICQ: 446240
Re[7]: Зачем нужен язык программирования
От: _Obelisk_ Россия http://www.ibm.com
Дата: 23.03.04 07:05
Оценка: :)
Здравствуйте, Miem, Вы писали:

M>Здравствуйте, _Obelisk_, Вы писали:


_O_>>>>Как раз ошибаетесь. UML-ю недоставало текстового представления, мы (Telelogic) его придумали. Customer-ам нравится.


M>Когда .NET поддерживать будете?


Тогда, когда .Net станет работать под Linux-ом и Solaris-ом.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[2]: Зачем нужен язык программирования
От: INTP_mihoshi Россия  
Дата: 23.03.04 09:32
Оценка:
Здравствуйте, King Oleg, Вы писали:

INT>>Кстати, предлагаю тест на “годность” языка. Дается задача. Берется некоторое кол-во программистов примерно одного уровня. Они пишут ее по очереди каждый один день, причем до “своего” дня он не знает о программе ничего. Параллельно один программист решает ту же задачу. Отношение времени решения вторым и первым способом потраченного в обоих вариантов и будет коэффициентом эффективности языка

KO>Интересная идея. Я бы поучаствовал.

Это надо еще придумать как организовать Например, как обеспечить честность "играющих".

Можно попробовать "блиц" — одна задача, пять часов, пять програмистов по очереди. Плюс добавление требований функционалу при каждой смене программистов IMHO было бы тренировкой Tean Work покруче стандартных правил ACM
Re[3]: Зачем нужен язык программирования
От: _Jane_ Украина  
Дата: 23.03.04 11:55
Оценка:
Здравствуйте, INTP_mihoshi, Вы писали:

INT>Можно попробовать "блиц" — одна задача, пять часов, пять програмистов по очереди. Плюс добавление требований функционалу при каждой смене программистов


при таких условиях каждый будет заново начинать переписывать
Jane
Re[2]: Зачем нужен язык программирования
От: mihailik Украина  
Дата: 23.03.04 17:14
Оценка:
INT>>Кстати, предлагаю тест на “годность” языка. Дается задача. Берется некоторое кол-во программистов примерно одного уровня. Они пишут ее по очереди каждый один день

KO>Интересная идея. Я бы поучаствовал.


Ага. Пишем объявление "Требуется программист" и высылаем это дело как тестовое задание. Дёшево и сердито — социологическое исследование
... << RSDN@Home 1.1.3 stable >>
Re: Зачем нужен язык программирования
От: mihailik Украина  
Дата: 23.03.04 17:14
Оценка:
INT>Основное назначение языка – донести информацию с минимальными искажением и потерями.

Во первых не вообще информацию, а алгоритм.

Во вторых не с минимальными, а с допустимыми. Рекорды не нужны никому.
... << RSDN@Home 1.1.3 stable >>
Re[2]: Зачем нужен язык программирования
От: BUran Россия http://www.buriy.com/
Дата: 24.03.04 04:17
Оценка:
Здравствуйте, mihailik, Вы писали:

INT>>Основное назначение языка – донести информацию с минимальными искажением и потерями.

M>Во первых не вообще информацию, а алгоритм.
А вот нетушки, иногда не только алгоритм, а иногда не столько алгоритм.
/bur
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.