OSDev
http://osdev.su/

язык программирования для ОС
http://osdev.su/viewtopic.php?f=18&t=851
Страница 2 из 4

Автор:  Himik [ 29 мар 2015, 22:19 ]
Заголовок сообщения:  Re: язык программирования для ОС

pavia писал(а):
Из википедии. Может и не достоверно зато суть верная.

В том же Паскале сплошные мутации, и чем это им ООП не понравился. Фишка ООП в том, что каждый объект надо отлаживать как отдельное приложение. Таким образом, одно сложное приложение разбивается на несколько маленьких, что имеет определённый плюс.
Как в электронике - сначала была элементарная логика (рассыпуха), это типа функций и процедур. Потом стали делать БИС и даже микроконтроллеры - это сложнее, но зато и задачи решаются поинтересней.

Автор:  Freeman [ 30 мар 2015, 08:45 ]
Заголовок сообщения:  Re: язык программирования для ОС

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

Не добился. Он нигде об этом не писал.

pavia писал(а):
Проблема ООП в том что трудно проверить или доказать исправность в виду наличия мутаций во время работы. Значит такие мутации надо свести к мнимому.

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

Himik писал(а):
Как в электронике - сначала была элементарная логика (рассыпуха), это типа функций и процедур. Потом стали делать БИС и даже микроконтроллеры - это сложнее, но зато и задачи решаются поинтересней.

Отличная аналогия!

Автор:  Himik [ 30 мар 2015, 19:31 ]
Заголовок сообщения:  Re: язык программирования для ОС

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

Ещё мне кажется, что если делать абстрагирование, инкапсуляцию и полиморфизм правильно, "по книжному", то внутренняя мутабельность объекта будет скрыта, практически нивелирована для пользователя.

Автор:  Freeman [ 12 май 2015, 10:58 ]
Заголовок сообщения:  Re: язык программирования для ОС

Прочитал про Rust на Хабре. Обратил внимание на вступление переводчика, обращающего внимание на специфические для Rust термины. Подумал об отдельной странице с такими терминами для Кантора.

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

Однако. В мире, похоже, начинается реннесанс компилируемых языков.

Автор:  pavia [ 12 май 2015, 13:37 ]
Заголовок сообщения:  Re: язык программирования для ОС

Вы видимо смайлик забыли. php версии с 3 компилируемый. Javascript тоже, давно компилируется. Их проблема это ООП. Собственно почему мне не хватает механизма абстрактных записей. Когда к примеру один тип может трактоваться как byte, а в другом как real. В одном случае 1 байт, а в другом 4. В принципе это решается на ООП, правда с копанием во внутренней организации объекта.

Да и термины (ownership, borrowing, lifetime parameter) широко известные. Просто автор не владеет ими.
Цитата:
Подумал об отдельной странице с такими терминами для Кантора.
Проблема в поддержании актуальности такой терминологии. Поэтому не даром немцы при свечах в 19 веке делали список терминов в конце книги, а не в начале.

Автор:  pavia [ 12 май 2015, 13:57 ]
Заголовок сообщения:  Re: язык программирования для ОС

Проблема ООП в сокрытие информации. Вернее инкапсулирование. Которое добивается наличием проверок данных по входу и модификации по выходу.
И динамическое связывание так же требует от объекта наличия проверок или даже лишних действий.
Из-за всего этого ветвления попадают в цикл и портят оптимизатор. Так как во время работы оптимизатор практически не способен предсказать по каким веткам пойдет программа.
А в Си мы сами прописываем кратчайшие пути.

Автор:  Freeman [ 12 май 2015, 14:13 ]
Заголовок сообщения:  Re: язык программирования для ОС

pavia писал(а):
Вы видимо смайлик забыли. php версии с 3 компилируемый. Javascript тоже, давно компилируется.

Они (и вы) можете сколько угодно вешать лапшу на уши, но я человек старой школы, и для меня компилируемый язык -- это из которого можно получать exe-файлы, содержащие машинный код, поэтому даже .NET пока не считается

Автор:  Bargest [ 12 май 2015, 18:55 ]
Заголовок сообщения:  Re: язык программирования для ОС

Цитата:
php версии с 3 компилируемый. Javascript тоже, давно компилируется.

Jit - это хорошо, но это не совсем компиляция в "традиционном" виде. Все Jit-компилируемые языки получают популярность за счет своей управляемости. При выполнении происходит просто невообразимое количество проверок по каждому чиху, поиска чего-либо при каждом вызове (да, результат кешируется, но все же), повсюду куча этой вашей абстрактности и виртуальности (половина кода вызывается через vftable) и прочих чудес инженерной мысли. А потому даже после докомпилирования из внутреннего представления в асму приложение уйму времени проводит в недрах виртуальной машины, что не лучшим образом сказывается на производительности.
Jit-средам не надо генерировать быстрый код, нужно только убедить всех, что код быстрый, с помощью синтетических тестов. Где-то были статьи, что тот же C# крайне фигово умеет делать инлайны, не особо любит разворачивать циклы - короче не умеет базовые вещи оптимизатора. Хотя ссылку уже не найду.
Конечно, jit во много раз быстрее, чем прямая интерпретация, но до скорости обычного компилируемого кода с нормальным оптимизатором на реальных приложениях ему далеко. В первую очередь из-за чрезмерно активной работы с памятью, когда это не шибко нужно, и из-за постоянных проверок на все случаи жизни, чтобы ничего никогда не могло упасть. А если работу с памятью, все проверки и поиск выпилить, то все эти php с javascript'ами и прочими C#-ами превратятся в тот же пресловутый Си. Да, они действительно станут полностью компилируемыми в "традиционном" смысле, но что толку-то.

Потому я полностью согласен с Freeman'ом по поводу определения компилируемости. Наличия кусочков асмы где-то во время выполнения не достаточно.

Автор:  Freeman [ 12 май 2015, 19:49 ]
Заголовок сообщения:  Re: язык программирования для ОС

Раз такое дело, скачал я этот Rust, чтобы хоть краем глаза посмотреть, насколько он честен в компиляции. При попытке запустить получил ошибку:
Цитата:
Точка входа в процедуру AcquireSRWLockExclusive не найдена в библиотеке DLL KERNEL32.dll

Windows 7 хочет, по всей видимости. В самом PE в поле версии ОС стоит 4.0, даже не 5.0... Раз пока бета, простим.

Попробовать всё равно не получится, вначале нужно комп проапргейдить. :cry:

Автор:  Himik [ 12 май 2015, 21:01 ]
Заголовок сообщения:  Re: язык программирования для ОС

Freeman писал(а):
pavia писал(а):
Вы видимо смайлик забыли. php версии с 3 компилируемый. Javascript тоже, давно компилируется.

Они (и вы) можете сколько угодно вешать лапшу на уши, но я человек старой школы, и для меня компилируемый язык -- это из которого можно получать exe-файлы, содержащие машинный код, поэтому даже .NET пока не считается

Попробуй в VS скомпилирвать в конфигурации Release, получишь машинный код. Просто он такой, как сказал Bargest - мягко говоря, не очень оптимальный. Интересно ещё на Mono посмотреть, не должны же они всю гадость копировать.

Страница 2 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/