Джон Кармак о науке и искусстве разработки ПО
От: LaptevVV Россия  
Дата: 28.08.12 16:02
Оценка: 19 (4) +6 -4
http://habrahabr.ru/post/150260/
Очень созвучные мне мысли:

До меня особенно долго доходило, что программисты обязательно, с некоторой периодичностью, делают ошибки. Я в прошлом году много говорил о том, что мы познакомились со статическим анализом и прогнали через него весь наш код, в результате получив сотни и тысячи выявленных проблем. И это очень круто — ведь теперь можно поднять историю, сказать «Смотри, вот тут я допустил ошибку» и показать всем место, где была допущена ошибка. Все посмотрят и для себя отметят: «О, как оно может быть! Хм, постараюсь такого не допускать». Это хорошо, но проблема-то не в следствии, а в причине. Если синтаксис позволяет что-то реализовать некорректно, то это «что-то» будет некорректно реализовано. Именно поэтому, кроме ввода статического анализа я бы хотел сильнее ограничить выразительность языковых средств и тем самым оградить программистов от совершения ошибок.

Никлаус Вирт это непосредственно реализует в своих языках — минимизация понятий.
Я тоже уже давно пришел к выводу, что:
1. Язык должен быть минимален насколько возможно.
2. Среда программирования должна мгновенно бить по рукам, если что не так. Уже при создании кода.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Джон Кармак о науке и искусстве разработки ПО
От: Abyx Россия  
Дата: 28.08.12 16:08
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>http://habrahabr.ru/post/150260/


боян.
http://rsdn.ru/forum/philosophy/4843475.aspx
Автор: Abyx
Дата: 05.08.12
In Zen We Trust
Re: Джон Кармак о науке и искусстве разработки ПО
От: Hobot Bobot США  
Дата: 28.08.12 16:16
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Я тоже уже давно пришел к выводу, что:

LVV>1. Язык должен быть минимален насколько возможно.
LVV>2. Среда программирования должна мгновенно бить по рукам, если что не так. Уже при создании кода.

Правильно! Я тоже думаю, что Вижуал Васик — наше всё, а среда (VB 6.0), которая выбрасывала модальный message box при попытке покинуть синтаксически некорректную строку — это непревзойдённый идеал.

Ну ещё можно Спектрумы вспомнить, опять же, с Васиком. Полная лафа — никакой выразительности языковых средств и физическая невозможность написать что-то неправильно.
What a piece of work is a man! how noble in reason! how infinite in faculty! in form and moving how express and admirable! in action how like an angel! in apprehension how like a god! the beauty of the world! the paragon of animals!
Re: Джон Кармак о науке и искусстве разработки ПО
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 28.08.12 16:21
Оценка: +13 -1
> я бы хотел сильнее ограничить выразительность языковых средств

Чем менее выразителен язык, тем больше кода требуется и тем больше ошибок.

ps
Имхо, будущее за усилением статического анализа (что и отражено в исходном тексте).
Ограничение выразительности языков — это, конечно, бред.
Re[2]: Джон Кармак о науке и искусстве разработки ПО
От: LaptevVV Россия  
Дата: 28.08.12 16:32
Оценка:
Здравствуйте, Abyx, Вы писали:

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


LVV>>http://habrahabr.ru/post/150260/


A>боян.

A>http://rsdn.ru/forum/philosophy/4843475.aspx
Автор: Abyx
Дата: 05.08.12

Ну, по ссылке — краткий конспект этого баяна...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Джон Кармак о науке и искусстве разработки ПО
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 28.08.12 16:35
Оценка:
Здравствуйте, DarkGray, Вы писали:

>> я бы хотел сильнее ограничить выразительность языковых средств

DG>Чем менее выразителен язык, тем больше кода требуется и тем больше ошибок.

Больше кода — это для получения функционала, который не факт, что нужен.
Вселенная бесконечна как вширь, так и вглубь.
Re: Джон Кармак о науке и искусстве разработки ПО
От: Abyx Россия  
Дата: 28.08.12 16:36
Оценка: +3
Здравствуйте, LaptevVV, Вы писали:

LVV>http://habrahabr.ru/post/150260/

LVV>Очень созвучные мне мысли:
LVV>

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


перевод неточный
в оригинале это звучало как "I would like to be able to enable even more restrictive subsets of languages and restrict programmers even more, because we make mistakes constantly"
про "ограничение выразительности" — ни слова.
зато есть "я хотел бы включить больше запретов в языках и ограничить программистов еще больше."

что означает, что надо не выкинуть из С++ такие выразительные языковые средства как ссылки, move-only объекты и const, и оставить только подмножество Си с raw pointers,
а наоборот, надо добавить в язык больше языковых средств ограничивающих программиста, как например иммутабельность по умолчанию, мутабельные но не nullable указатели и т.п.,
и выкинуть из языка опасные невыразительные языковые средства, такие как raw pointers
In Zen We Trust
Re[2]: Джон Кармак о науке и искусстве разработки ПО
От: LaptevVV Россия  
Дата: 28.08.12 16:42
Оценка: -1 :)
Здравствуйте, Abyx, Вы писали:

A>перевод неточный

A>в оригинале это звучало как "I would like to be able to enable even more restrictive subsets of languages and restrict programmers even more, because we make mistakes constantly"
A>про "ограничение выразительности" — ни слова.
A>зато есть "я хотел бы включить больше запретов в языках и ограничить программистов еще больше."
A>что означает, что надо не выкинуть из С++ такие выразительные языковые средства как ссылки, move-only объекты и const, и оставить только подмножество Си с raw pointers,
A>а наоборот, надо добавить в язык больше языковых средств ограничивающих программиста, как например иммутабельность по умолчанию, мутабельные но не nullable указатели и т.п.,
A>и выкинуть из языка опасные невыразительные языковые средства, такие как raw pointers
Да. Именно это я и имел ввиду: ограничение свободы программистов. И языком и средой.
Например, в качестве ограничений можно предложить запрет наследования по умолчанию, и требование явного указания, что класс-структура-запись является базовой и будут наследники.
Или запрет множественного оператора return...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Джон Кармак о науке и искусстве разработки ПО
От: Шахтер Интернет  
Дата: 28.08.12 16:47
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>http://habrahabr.ru/post/150260/

LVV>Очень созвучные мне мысли:
LVV>

LVV>До меня особенно долго доходило, что программисты обязательно, с некоторой периодичностью, делают ошибки. Я в прошлом году много говорил о том, что мы познакомились со статическим анализом и прогнали через него весь наш код, в результате получив сотни и тысячи выявленных проблем. И это очень круто — ведь теперь можно поднять историю, сказать «Смотри, вот тут я допустил ошибку» и показать всем место, где была допущена ошибка. Все посмотрят и для себя отметят: «О, как оно может быть! Хм, постараюсь такого не допускать». Это хорошо, но проблема-то не в следствии, а в причине. Если синтаксис позволяет что-то реализовать некорректно, то это «что-то» будет некорректно реализовано. Именно поэтому, кроме ввода статического анализа я бы хотел сильнее ограничить выразительность языковых средств и тем самым оградить программистов от совершения ошибок.

Лучше просто не писать код. Нету кода -- нету ошибок. Американский совок.

LVV>Никлаус Вирт это непосредственно реализует в своих языках — минимизация понятий.
LVV>Я тоже уже давно пришел к выводу, что:
LVV>1. Язык должен быть минимален насколько возможно.

Язык должен быть не минимален, а оптимален.

LVV>2. Среда программирования должна мгновенно бить по рукам, если что не так. Уже при создании кода.


Не дай бог поставить человека в зависимость от тупой железки.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[3]: Джон Кармак о науке и искусстве разработки ПО
От: Abyx Россия  
Дата: 28.08.12 16:53
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>требование явного указания, что класс-структура-запись является базовой и будут наследники.


именно.
я поставил -1 Вашему первому посту за фразу "Язык должен быть минимален насколько возможно."
теперь +1.

как Вы наверное знаете, в С++11 добавили ключевые слова final, override и т.п., именно для указания таких ограничений.
это те самые выразительные языковые средства, и с ними язык стал больше, зато на нем можно писать более надежный код

если бы была цель сделать *минимальный* язык — никаких override не добавляли бы
In Zen We Trust
Re: Джон Кармак о науке и искусстве разработки ПО
От: AlexRK  
Дата: 28.08.12 16:57
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Никлаус Вирт это непосредственно реализует в своих языках — минимизация понятий.

LVV>Я тоже уже давно пришел к выводу, что:
LVV>1. Язык должен быть минимален насколько возможно.
LVV>2. Среда программирования должна мгновенно бить по рукам, если что не так. Уже при создании кода.

Я бы сказал, что минимизация языка — это один из вариантов реализации (причем не самый лучший) подмножества более общей задачи: полной верификации программы на этапе компиляции.
Re[4]: Джон Кармак о науке и искусстве разработки ПО
От: LaptevVV Россия  
Дата: 28.08.12 17:17
Оценка:
Здравствуйте, Abyx, Вы писали:

LVV>>требование явного указания, что класс-структура-запись является базовой и будут наследники.

A>именно.

A>как Вы наверное знаете, в С++11 добавили ключевые слова final, override и т.п., именно для указания таких ограничений.

A>это те самые выразительные языковые средства, и с ними язык стал больше, зато на нем можно писать более надежный код

A>если бы была цель сделать *минимальный* язык — никаких override не добавляли бы

Кстати, в Компонентном паскале все это сделано с самого начала...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Джон Кармак о науке и искусстве разработки ПО
От: LaptevVV Россия  
Дата: 28.08.12 17:19
Оценка: :))
Здравствуйте, AlexRK, Вы писали:

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


LVV>>Никлаус Вирт это непосредственно реализует в своих языках — минимизация понятий.

LVV>>Я тоже уже давно пришел к выводу, что:
LVV>>1. Язык должен быть минимален насколько возможно.
LVV>>2. Среда программирования должна мгновенно бить по рукам, если что не так. Уже при создании кода.

ARK>Я бы сказал, что минимизация языка — это один из вариантов реализации (причем не самый лучший) подмножества более общей задачи: полной верификации программы на этапе компиляции.

ИМХО этапа компиляции вообще не должно быть. При наборе программы СРАЗУ должно строится внутреннее семантическое представление программы.
Из которого впоследствии можно получить любые формы представления. В том числе и текстовые
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Джон Кармак о науке и искусстве разработки ПО
От: AlexRK  
Дата: 28.08.12 17:28
Оценка:
Здравствуйте, LaptevVV, Вы писали:

ARK>>Я бы сказал, что минимизация языка — это один из вариантов реализации (причем не самый лучший) подмножества более общей задачи: полной верификации программы на этапе компиляции.

LVV>ИМХО этапа компиляции вообще не должно быть. При наборе программы СРАЗУ должно строится внутреннее семантическое представление программы.
LVV>Из которого впоследствии можно получить любые формы представления. В том числе и текстовые

Ну, я акцент сделал на другом моменте, но если говорить о компиляции, то она у вас все равно будет — вы же будете не байты AST добавлять к своей программе? Все равно будет преобразование к внутренней структуре, этакая компиляция "шажками", причем некоторые из таких шажков могут быть очень длительными и ресурсоемкими...
Re[3]: Джон Кармак о науке и искусстве разработки ПО
От: novitk США  
Дата: 28.08.12 18:07
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Да. Именно это я и имел ввиду: ограничение свободы программистов. И языком и средой.

LVV>Например, в качестве ограничений можно предложить запрет наследования по умолчанию, и требование явного указания, что класс-структура-запись является базовой и будут наследники.
LVV>Или запрет множественного оператора return...

A при чем здесь Вирт? Система типов компонентного паскаля не имеет даже квантификаторa const, то есть по факту "ограничений свободы" там не сильно больше чем в C.
Re: Джон Кармак о науке и искусстве разработки ПО
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.08.12 21:30
Оценка: +5
Здравствуйте, LaptevVV, Вы писали:

LVV>1. Язык должен быть минимален насколько возможно.

LVV>2. Среда программирования должна мгновенно бить по рукам, если что не так. Уже при создании кода.

Ты неверно понял то, что говорит Кармак. Он говорит о том, что язык должен своей структурой запрещать потенциально опасные вещи, а не то что он минимальным должен быть. Виртовские языки очень опасны, хоть и с примитивнейшим синтаксисом.
... << RSDN@Home 1.2.0 alpha 5 rev. 65 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[3]: Джон Кармак о науке и искусстве разработки ПО
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.08.12 21:30
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>ИМХО этапа компиляции вообще не должно быть. При наборе программы СРАЗУ должно строится внутреннее семантическое представление программы.

LVV>Из которого впоследствии можно получить любые формы представления. В том числе и текстовые

Зачем это все?
... << RSDN@Home 1.2.0 alpha 5 rev. 65 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[3]: Джон Кармак о науке и искусстве разработки ПО
От: a_g_99 США http://www.hooli.xyz/
Дата: 29.08.12 04:58
Оценка:
Здравствуйте, LaptevVV, Вы писали:

ARK>>Я бы сказал, что минимизация языка — это один из вариантов реализации (причем не самый лучший) подмножества более общей задачи: полной верификации программы на этапе компиляции.

LVV>ИМХО этапа компиляции вообще не должно быть. При наборе программы СРАЗУ должно строится внутреннее семантическое представление программы.
LVV>Из которого впоследствии можно получить любые формы представления. В том числе и текстовые
Это по мужски . Вы вообще иногда думаете прежде чем что-то писать ?
Re: Джон Кармак о науке и искусстве разработки ПО
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 29.08.12 08:40
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>http://habrahabr.ru/post/150260/

LVV>Очень созвучные мне мысли:

Нормальные мысли профессионала, который (очень) хорошо осознает то, чем он занимается.

По мне — ничего нового в них нет

Но все равно, спасибо за эту ссылку на перевод.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[4]: Джон Кармак о науке и искусстве разработки ПО
От: LaptevVV Россия  
Дата: 29.08.12 11:44
Оценка:
Здравствуйте, a_g_99, Вы писали:

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


ARK>>>Я бы сказал, что минимизация языка — это один из вариантов реализации (причем не самый лучший) подмножества более общей задачи: полной верификации программы на этапе компиляции.

LVV>>ИМХО этапа компиляции вообще не должно быть. При наборе программы СРАЗУ должно строится внутреннее семантическое представление программы.
LVV>>Из которого впоследствии можно получить любые формы представления. В том числе и текстовые
__>Это по мужски . Вы вообще иногда думаете прежде чем что-то писать ?
Мы УЖЕ реализовали.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.