Показать сообщение отдельно
Старый 19.06.2013, 17:40
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 23  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
О как, все просто!
Нет, я сказал именно то, что хотел. Я не имел в виду неопределенное поведение, хотя в каком-то смысле оно может иметь отношение к вышесказанному, я говорил о плохо оперделенной операционной семантике. Это хорошо определенное понятие, которое не нужно интуитивно угадывать. Можно просто взять книжку (например, того же Бенжамина Пирса) / открыть Вики и прочитать, что это такое.

По поводу практики: а какие именно примеры? Я старался говорить обобщенно. "Нету стек трейсов" - это не пример, это явление которому подвержен весь язык в любом его проявлении. Знание этого факта не сделает меня лучшим программистом на С++. Хотя, может сделать печальным программистом на С++

Семантика языка описывает то, как мы его понимаем, и особенно то, как его понимает компилятор / интерпретатор. Может ли это быть препядствием? - если семантика состоит из множества противоречивых правил, непоследовательная, и т.д. то, конечно она будет препядствием.

В целом я бы охарактеризовал ситуацию следующим образом. Пока на С++ решаются тривиальные вещи, им пользоваться относительно удобно. Компилятор не встречает сложных случаев в разборе программы, код получается быстрый и компактный - все довольны. Но чем сложнее становится программа, тем хуже ситуация, и тем хуже по отношению к другим языкам, где семантика лучше определена.
Есть несколько языков, с компиляторами способными сгенерировать программы сравнимые по скорости с С++. Хаскелл - один такой язык, но я плохо его знаю, ОКамл я теперь знаю немножко лучше. Так вот, Благодаря более однозначной семантике и более скупому и последовательному набору правил, чем больше программа на ОКамле, тем больше вероятность того, что она будет быстрее / компактнее программы на С++ делающей такую же работу. Это достигается за счет того, что компилятору легче делать более глобальные предположения о намерении программиста.
Что интересно, в С++ неопределенное поведение как раз таки является тем фактором, который позволяет делать такие предположения компилятору!
__________________
Hell is the possibility of sanity