А вот тут персонаж без квоты на общение
Jul. 10th, 2015 02:08 pmМучительно пытается поймать меня на том, что первый ассемблер написали люди, и потому все компьютеры им по гроб жизни должны:
http://pargentum.livejournal.com/1777396.html?thread=9760500#t9760500
А слона-то и не примечает, бедолага.
ЗЫ я вполне серьезно считаю, что исходник - это не программа, а инструкция компилятору, какую программу тому следует написать. И называние тех, кто пишет исходники, программистами - более дань традиции, чем верное описание сути дела.
http://pargentum.livejournal.com/1777396.html?thread=9760500#t9760500
А слона-то и не примечает, бедолага.
ЗЫ я вполне серьезно считаю, что исходник - это не программа, а инструкция компилятору, какую программу тому следует написать. И называние тех, кто пишет исходники, программистами - более дань традиции, чем верное описание сути дела.
no subject
Date: 2015-07-10 08:27 am (UTC)no subject
Date: 2015-07-10 09:29 am (UTC)Тут пациент демонстрирует, что он идиот, а я его мягко стимулирую и направляю с целью сделать эту демонстрацию более яркой и художественной.
no subject
Date: 2015-07-11 05:35 am (UTC)no subject
Date: 2015-07-10 08:40 am (UTC)Это предполагает, что существует "суть дела", описание которой интересует кого-либо из называющих. Что совсем не очевидно.
no subject
Date: 2015-07-10 08:42 am (UTC)Ну никак!
Подскажите путь решения в соответствии с вашей идеологией.
no subject
Date: 2015-07-10 08:56 am (UTC)А если серьезно, то в том и состоит главная задача программиста - понять, что надо заказчику. Все остальные задачи рано или поздно будут делегированы инструментам, всяким там компиляторам.
no subject
Date: 2015-07-10 11:53 am (UTC)Работа с IT изрядно искажает перспективу.
Все остальные задачи рано или поздно будут делегированы инструментам, всяким там компиляторам.
Жаль только жить в эту пору прекрасную уж не придется ни мне ни тебе.
А по сути - пока все известные компиляторы генерируют код, эквивалентный источнику, их, ИМХО, нельзя назвать (со)авторами сгенерированного кода.
no subject
Date: 2015-07-10 01:19 pm (UTC)no subject
Date: 2015-07-10 01:48 pm (UTC)no subject
Date: 2015-07-10 04:25 pm (UTC)Думается на белом свете существуют немалое кол-во инженеров, которые пилят код и смутно представляют себе для чего и как оно работает. А вот люди, которые представляют для чего и как обычно код не пилят. Типичный пример -- Билл Гейтс.
no subject
Date: 2015-07-10 10:35 am (UTC)no subject
Date: 2015-07-10 11:39 am (UTC)Я бы сказал, что компилятор не пишет, а тавтологично трансформирует текст из одного формального языка в другой.
Пишет именно человек, переводящий неформальные спецификации в текст на формальном языке.
no subject
Date: 2015-07-10 11:45 am (UTC)Я уж не говорю про ошибки в компиляторах.
no subject
Date: 2015-07-10 12:15 pm (UTC)no subject
Date: 2015-07-10 01:09 pm (UTC)no subject
Date: 2015-07-10 07:56 pm (UTC)no subject
Date: 2015-07-11 04:30 am (UTC)no subject
Date: 2015-07-11 04:44 am (UTC)no subject
Date: 2015-07-11 05:28 am (UTC)no subject
Date: 2015-07-11 05:37 am (UTC)Компилятор осуществляет тавтологическую трансформацию потому что трансформирует текст на языке, относительно легко читаемом человеком, на язык машинных команд, так что бы сгенерированная программа была тавтологична исходной.
no subject
Date: 2015-07-11 05:01 am (UTC)a*a + 2*a*b + b*b и (a+b)^2 по производительности неэквивалентны. В первом выражении четыре операции умножения и две сложения, а во втором - одно умножение и одно сложение. Но тем не менее перевод одного в другое - тавтологическая трансформация.
no subject
Date: 2015-07-11 05:30 am (UTC)no subject
Date: 2015-07-11 02:40 pm (UTC)Менее эффектный пример замена x/2 на x>>1 для двоичной целочисленной арифметики. Работает как на настоящих целых числах, так и на кольце вычетов, которое используется вместо целых чисел C программистами.
Ну, или ближе к тому чем реально занимаются оптимизаторы: если у нас есть последовательность операций:
r2=r1*5
r3=r1*5
то тавтология
r2=r1*5
r3=r2
Экономит нам одну операцию умножения.
Собственно, при наличии желания и времени можно взять ульмановский "dragon book" пройтись по всем базовым техникам оптимизации и продемонстрировать, что каждая есть тавтология.
Но зачем, если это следует из самого принципа?
no subject
Date: 2015-07-11 03:14 pm (UTC)Но теперь смотрите: одну и ту же программу можно "тавтологически" преобразовать в практически бесконечное множество других программ: с заменой умножений на сдвиги, с заменой сдвигов на умножения, с разными раскладками по регистрам, etc. Фактически, задача оптимизирующего компилятора - это выбор одной программы из этого множества. КМК, это уже никак нельзя назвать "просто тавтологической трансформацией".
no subject
Date: 2015-07-13 02:27 am (UTC)У оптимизатора есть, если можно так выразится, "книга [эвристических] рецептов" оптимизации кода по скорости или памяти. Что он делает, так это проходится по тексту и применяет эти "рецепты" там, где они применимы. Каждый рецепт при этом суть тавтологическое преобразование. Набором применяемых "рецептов" можно управлять задавая ключи.
no subject
Date: 2015-07-13 03:11 am (UTC)собственно, как можно был бы без сравнения стоимости реализовать такие оптимизации, как инлайнинг и развертывание циклов?
no subject
Date: 2015-07-12 06:43 am (UTC)Дракончик кстати очень плохая в этом смысле и крайне поверхностная книжка (ценима именно за это).
В реальности надо брать Мучника (который, в отличие от дракончика, действительно расисывает все базовые техники). Но именно поэтому его никто и не читает - а большая часть нороту даже не знает о его существовании
no subject
Date: 2015-07-23 01:40 pm (UTC)на С-шных целых числах не точно тавтологична ?
no subject
Date: 2015-07-12 06:39 am (UTC)Ну или точнее - понятие "эквивалентности" там довольно своеобразное - программа должна "работать также" вовсе не в том смысле, что "выдавать тот же результат"
no subject
Date: 2015-07-23 01:31 pm (UTC)> Оптимизатор компилятора тоже не содержит в себе элементов ИИ и является частью механизма тавтологической трансформации
Оптимизатор компилятора содержит элементы ИИ, хотя и относительно простые.