pargentum: (Morda)
[personal profile] pargentum
Мучительно пытается поймать меня на том, что первый ассемблер написали люди, и потому все компьютеры им по гроб жизни должны:
http://pargentum.livejournal.com/1777396.html?thread=9760500#t9760500

А слона-то и не примечает, бедолага.

ЗЫ я вполне серьезно считаю, что исходник - это не программа, а инструкция компилятору, какую программу тому следует написать. И называние тех, кто пишет исходники, программистами - более дань традиции, чем верное описание сути дела.

Date: 2015-07-10 08:27 am (UTC)
From: [identity profile] kouzdra.livejournal.com
... грамматики брались за труднейшие вопросы. Ты слышал, что в те времена однажды риторы Габунд и Теренций пятнадцать дней и пятнадцать ночей дискутировали о звательном падеже к “я” и в конце концов подрались.

Date: 2015-07-10 09:29 am (UTC)
From: [identity profile] pargentum.livejournal.com
Ну, тут все-таки не совсем дискуссия.
Тут пациент демонстрирует, что он идиот, а я его мягко стимулирую и направляю с целью сделать эту демонстрацию более яркой и художественной.

Date: 2015-07-11 05:35 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Я в данном случае о многодлинности треда - "спорили 15 дней и ночей". При полной пустоте вопроса.

Date: 2015-07-10 08:40 am (UTC)
stas: (Default)
From: [personal profile] stas
И называние тех, кто пишет исходники, программистами - более дань традиции, чем верное описание сути дела.

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

Date: 2015-07-10 08:42 am (UTC)
From: [identity profile] retiredwizard.livejournal.com
мне тут нужна программа - но почему-то без человека другая программа ее не пишет.
Ну никак!

Подскажите путь решения в соответствии с вашей идеологией.

Date: 2015-07-10 08:56 am (UTC)
From: [identity profile] pargentum.livejournal.com
Очевидно, потому что вы ей даете неправильные инструкции.
А если серьезно, то в том и состоит главная задача программиста - понять, что надо заказчику. Все остальные задачи рано или поздно будут делегированы инструментам, всяким там компиляторам.

Date: 2015-07-10 11:53 am (UTC)
From: [identity profile] trurle.livejournal.com
А если серьезно, то в том и состоит главная задача программиста - понять, что надо заказчику.

Работа с IT изрядно искажает перспективу.

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

Жаль только жить в эту пору прекрасную уж не придется ни мне ни тебе.

А по сути - пока все известные компиляторы генерируют код, эквивалентный источнику, их, ИМХО, нельзя назвать (со)авторами сгенерированного кода.

Date: 2015-07-10 01:19 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Точно так же можно заявить, что поскольку программист реализует чужие требования, то и его нельзя назвать соавтором.

Date: 2015-07-10 01:48 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Называть (со)автором машинного кода человека, который в этот код обычно даже не заглядывает, тоже как-то странно, вы не находите?

Date: 2015-07-10 04:25 pm (UTC)
From: [identity profile] 18cc.livejournal.com
"Изобрести" программу, увидеть ее в будущем и для пользователей не то же самое, что написать ее.
Думается на белом свете существуют немалое кол-во инженеров, которые пилят код и смутно представляют себе для чего и как оно работает. А вот люди, которые представляют для чего и как обычно код не пилят. Типичный пример -- Билл Гейтс.

Date: 2015-07-10 10:35 am (UTC)
From: [identity profile] 18cc.livejournal.com
Перекуем программистов в инструкторы!

Date: 2015-07-10 11:39 am (UTC)
From: [identity profile] fat-yankey.livejournal.com
Неплохо бы сперва определиться со значением глагола "писать".

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

Пишет именно человек, переводящий неформальные спецификации в текст на формальном языке.

Date: 2015-07-10 11:45 am (UTC)
From: [identity profile] pargentum.livejournal.com
Если тавтологично, как вы объясните существование такого понятия, как оптимизация?
Я уж не говорю про ошибки в компиляторах.

Date: 2015-07-10 12:15 pm (UTC)
From: [identity profile] fat-yankey.livejournal.com
Оптимизация тоже тавтологична.

Date: 2015-07-10 01:09 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Мне это суждение представляется весьма каунтеринтуитивным.

Date: 2015-07-10 07:56 pm (UTC)
From: [identity profile] trurle.livejournal.com
Оптимизированная программа ( должна быть ) эквивалентна источнику, поэтому оптимизация тавтологична.

Date: 2015-07-11 04:30 am (UTC)
From: [identity profile] pargentum.livejournal.com
В реальной жизни, людей интересует не только эквивалентность в подразумеваемом вами смысле, но и всякие там непонятные слова вроде производительности. А по ним оптимизированная и неоптимизированная программы вовсе не эквивалентны.

Date: 2015-07-11 04:44 am (UTC)
From: [identity profile] trurle.livejournal.com
Оптимизатор компилятора тоже не содержит в себе элементов ИИ и является частью механизма тавтологической трансформации.

Date: 2015-07-11 05:28 am (UTC)
From: [identity profile] pargentum.livejournal.com
Чтобы делать нетавтологическую трансформацию, не надо быть ИИ. Но выбор оптимальной программы из практически бесконечного множества "эквивалентных" я бы никак не назвал тавтологической трансформацией.

Date: 2015-07-11 05:37 am (UTC)
From: [identity profile] trurle.livejournal.com
я бы никак не назвал тавтологической трансформацией.

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

Date: 2015-07-11 05:01 am (UTC)
From: [identity profile] fat-yankey.livejournal.com
Ну дык!

a*a + 2*a*b + b*b и (a+b)^2 по производительности неэквивалентны. В первом выражении четыре операции умножения и две сложения, а во втором - одно умножение и одно сложение. Но тем не менее перевод одного в другое - тавтологическая трансформация.

Date: 2015-07-11 05:30 am (UTC)
From: [identity profile] pargentum.livejournal.com
Эта трансформация тавтологична только если у вас арифметика бесконечной точности. Даже на С-шных целых числах она не точно тавтологична, а на IEEE вас за такое любой спец по численным алгоритмам на месте пришибет.

Date: 2015-07-11 02:40 pm (UTC)
From: [identity profile] fat-yankey.livejournal.com
Ну это ж просто аналогия. Демонстрация на примере всем знакомом с уроков алгебры за шестой класс, что нет ничего удивительного в том, что при тавтологическом преобразовании производительность может меняться.

Менее эффектный пример замена x/2 на x>>1 для двоичной целочисленной арифметики. Работает как на настоящих целых числах, так и на кольце вычетов, которое используется вместо целых чисел C программистами.

Ну, или ближе к тому чем реально занимаются оптимизаторы: если у нас есть последовательность операций:

r2=r1*5
r3=r1*5

то тавтология

r2=r1*5
r3=r2

Экономит нам одну операцию умножения.

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

Но зачем, если это следует из самого принципа?

Date: 2015-07-11 03:14 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Ну, пример с заменой умножения сдвигами более удачен.
Но теперь смотрите: одну и ту же программу можно "тавтологически" преобразовать в практически бесконечное множество других программ: с заменой умножений на сдвиги, с заменой сдвигов на умножения, с разными раскладками по регистрам, etc. Фактически, задача оптимизирующего компилятора - это выбор одной программы из этого множества. КМК, это уже никак нельзя назвать "просто тавтологической трансформацией".

Date: 2015-07-13 02:27 am (UTC)
From: [identity profile] fat-yankey.livejournal.com
Оптимизатор (по крайней мере статический оптимизатор для процедурных языков) не решает задачу выбора.

У оптимизатора есть, если можно так выразится, "книга [эвристических] рецептов" оптимизации кода по скорости или памяти. Что он делает, так это проходится по тексту и применяет эти "рецепты" там, где они применимы. Каждый рецепт при этом суть тавтологическое преобразование. Набором применяемых "рецептов" можно управлять задавая ключи.

Date: 2015-07-13 03:11 am (UTC)
From: [identity profile] pargentum.livejournal.com
То, что вы говорите, совершенно не согласуется с тем, что я читал про современные оптимизирующие компиляторы. К сожалению, в коде современных оптимизаторов я не ковырялся, но в генерированном коде неоднократно видел конструкции, которые сложно объяснить иначе как просмотром и сравнением стоимости альтернатив.

собственно, как можно был бы без сравнения стоимости реализовать такие оптимизации, как инлайнинг и развертывание циклов?

Date: 2015-07-12 06:43 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Собственно, при наличии желания и времени можно взять ульмановский "dragon book" пройтись по всем базовым техникам оптимизации и продемонстрировать, что каждая есть тавтология.

Дракончик кстати очень плохая в этом смысле и крайне поверхностная книжка (ценима именно за это).

В реальности надо брать Мучника (который, в отличие от дракончика, действительно расисывает все базовые техники). Но именно поэтому его никто и не читает - а большая часть нороту даже не знает о его существовании

Date: 2015-07-23 01:40 pm (UTC)
From: [identity profile] e2pii1.livejournal.com
> a*a + 2*a*b + b*b и (a+b)^2

на С-шных целых числах не точно тавтологична ?

Date: 2015-07-12 06:39 am (UTC)
From: [identity profile] kouzdra.livejournal.com
На сам деле кстати нет - что обычно забывают.

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

Date: 2015-07-23 01:31 pm (UTC)
From: [identity profile] e2pii1.livejournal.com
Эдак, если израильское политическое руководство приказало Моссаду найти и выкрасть Эйхмана, и Моссад нашел и выкрал, то по Вашему "деятельность Моссада тавтологична и неинтеллектуальна"


> Оптимизатор компилятора тоже не содержит в себе элементов ИИ и является частью механизма тавтологической трансформации


Оптимизатор компилятора содержит элементы ИИ, хотя и относительно простые.

Profile

pargentum: (Default)
pargentum

January 2026

S M T W T F S
     1 2 3
4 5 6 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 7th, 2026 05:15 pm
Powered by Dreamwidth Studios