Re[9]: [OFF]О закономерностях
От: rameel https://github.com/rsdn/CodeJam
Дата: 10.02.07 13:26
Оценка: -1
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>Если Вы и дальше не будете принимать в расчет мою просьбу о вежливом обращении, я оставляю за собой право обратиться к администрации сайта.


Блин, так требовать изменить под себя правила форума, с которыми большинство соглашается, и которые уже не раз обсуждались можно рассматривать как пример неуважительного отношения к другим участникам форума с ВАШЕЙ стороны.

Не нравится конкретно человек, так что мешает просто не отвечать ему или найти портал наследников благородных кровей , где обращение не унижает ВАШИ моральные устои, или мы действуем согласно принципу:

Ёжики плакали, но продолжали есть кактус

... << RSDN@Home 1.2.0 alpha rev. 669>>
Re[7]: О закономерностях
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 10.02.07 17:19
Оценка: 25 (1) +3
Здравствуйте, Кирилл Лебедев, Вы писали:

AVK>>Конкретные примеры чего? На абстрактные мысли о нарастании абстракции сложновато привести конкретные примеры, не находишь?


КЛ>Вот статья. В ней разобраны три примера: пример 1, пример 2 и пример 3. Если Вам непонятно, как закономерность, описанная в конце статьи, соотносится с примерами, Вы можете обратиться к разделу "Чем "исторические примеры" похожи на три предыдущих" или спросить.


Уж поверьте на слово: и прочитал, и разобрался. Продемонстрированная закономерность представляется мне, мягко говоря, упрощённой оценкой практики программирования. Ну, если опять-таки прибегнуть к грубоватой аналогии, то нельзя выводить подобие грузовика и, например, кирпича, только потому, что и там и там имеется образующий параллелепипед. Или ещё проще — Холмогоры не восходят этимологически к Гомгардии ((c) к/ф "Ломоносов"). Один (всего лишь один, зато какой!) упущенный аспект в мотивации я уже показал. А чтобы написать полный разбор полётов потребуется слишком много времени.

КЛ>Но для этого должно быть желание разобраться .


В чём разбираться? В закономерности, выделенной на основании поверхностного анализа, когда эта поверхностность видна невооружённым глазом? Вам знаком тезис, что любая проблема программирования может быть решена введеним дополнительного уровня абстракции, за исключением проблемы слишком большого количества уровней абстракции? Заметьте, сказано это остаточно давно, чтобы уже стать притчей во языцех. А вы тут пытаетесь нам "продать" этот же рецепт, но под лозунгом ТРИЗ. И кто тут кого обманывает?

AndrewVK совершенно прав, когда говорит, что такие мысли приходят почти каждому программисту в первые три года работы. И здесь я его дополню, что почти каждый же начинает их подавать с не меньшим апломбом и претензией на открытие закона "всех явлений видимых, яко же и глазу неподвластных". Одобрение коллег, правда, такие персонажи зачастую заслуживают только благодаря тому, что демонстрируют самостоятельное мышление (это довольно-таки редкое явление, представляющее самостоятельную ценность), а отнюдь не в силу "глубины" изысканий. Понимаете разницу, да?

Отдельный момент — это обсуждение применимости ТРИЗ к программированию вообще. Понимаете ли, в чём дело, вводить в рассуждения и в модели новые сущности (то есть, по сути, заниматься изобретательством в чистом виде) — это наша работа. Вопрос только в количестве и достаточности оснований для появления этих сущностей.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[10]: О закономерностях
От:  
Дата: 12.02.07 09:26
Оценка:
Hello, VladD2!
You wrote on Wed, 07 Feb 2007 19:06:11 GMT:

YK>> Работала. Ухудшаться ситуация начала версии с пятой, в шестой

YK>> тормоза порою начинают доставать.

V> В ГУИ? Не поверю.


Во-первых, ГУИ сам по себе в IDEA далеко не летает (Swing), но с этим можно жить.
Во-вторых, там помимо ГУИ есть чему тормозить и часто эти тормоза наблюдаются посредством ГУИ.
Posted via RSDN NNTP Server 2.1 beta
Re[26]: О закономерностях
От: . Великобритания  
Дата: 12.02.07 09:38
Оценка:
Turtle.BAZON.Group wrote:

>> > Ага. Только тоже имеет те же проблемы с семантикой.

> .>О какой ты семантике говоришь при обсуждении *Abstract* Syntax Tree?..
> А если Abstract, то почему нет обобщения?

an abstract syntax tree (AST) is a finite, labeled, directed tree, where the internal nodes are labeled by operators,
and the leaf nodes represent the operands of the operators.

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

> ПС: ладно, тема зашла в тупик. Было приятно пообщаться.

Похоже не сошлись в терминологии.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[8]: О закономерностях
От: BulatZiganshin  
Дата: 12.02.07 10:15
Оценка:
ГВ>В чём разбираться? В закономерности, выделенной на основании поверхностного анализа, когда эта поверхностность видна невооружённым глазом? Вам знаком тезис, что любая проблема программирования может быть решена введеним дополнительного уровня абстракции, за исключением проблемы слишком большого количества уровней абстракции? Заметьте, сказано это остаточно давно, чтобы уже стать притчей во языцех. А вы тут пытаетесь нам "продать" этот же рецепт, но под лозунгом ТРИЗ. И кто тут кого обманывает?

есть такой интересный момент — когда какая-то идея переходиьт из чисто практической сферы под сень некоей научной методологии, к ней оказывается прилоджим весь тот спектр методов, который уже наработан в этой науке. в данном случае ТРИЗ известнет своими наработками в сфере решения сложных творческих задач и его методы вполне возможно удастся перенести в сферу разраьботки ПО, открыв программистам новые подходы к решению их задач, которые они не смогли изобрести сами
Люди, я люблю вас! Будьте бдительны!!!
Re[9]: О закономерностях
От: FR  
Дата: 12.02.07 12:57
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>есть такой интересный момент — когда какая-то идея переходиьт из чисто практической сферы под сень некоей научной методологии, к ней оказывается прилоджим весь тот спектр методов, который уже наработан в этой науке. в данном случае ТРИЗ известнет своими наработками в сфере решения сложных творческих задач и его методы вполне возможно удастся перенести в сферу разраьботки ПО, открыв программистам новые подходы к решению их задач, которые они не смогли изобрести сами


Угу только ТРИЗ пытаются приложить к программированию с конца 80 — начала 90 и никаких результатов не видно. Мне кажется ТРИЗ очень эффективная методика для решения очень узкого круга проблем.
Re[27]: О закономерностях
От: Turtle.BAZON.Group  
Дата: 12.02.07 15:50
Оценка:
Здравствуйте, ., Вы писали:

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

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

Собственно, об этом и говорил.

>> ПС: ладно, тема зашла в тупик. Было приятно пообщаться.

.>Похоже не сошлись в терминологии.

Да, видать...
... << RSDN@Home 1.2.0 alpha rev. 669>>
Re[11]: О виртуальных машинах и процессорах
От: x-code  
Дата: 14.02.07 07:38
Оценка: -1
Здравствуйте, YК, Вы писали:

YК>Hello, VladD2!

YК>You wrote on Wed, 07 Feb 2007 19:06:11 GMT:

YK>>> Работала. Ухудшаться ситуация начала версии с пятой, в шестой

YK>>> тормоза порою начинают доставать.

V>> В ГУИ? Не поверю.


YК>Во-первых, ГУИ сам по себе в IDEA далеко не летает (Swing), но с этим можно жить.

YК>Во-вторых, там помимо ГУИ есть чему тормозить и часто эти тормоза наблюдаются посредством ГУИ.

Возможно, стоило начать новую тему (или найти старую, наверняка была ) но все же...
Из всех новых веяний я вполне понимаю почему на смену C++ предложили сначала Java а потом C#
Я прекрасно понимаю преимущества таких вещей как reflection, сборки мусора и т.п., которых очень не хватает в C++ (равно как и многих вещей из функционального программирования, да и много чего еще)

Но вот почему вместо процессора, который просто создан для того чтобы выполнять команды ввели виртуальные машины, которые делают ровно то же самое но медленнее...
Объясните плиз... (заранее извините за то что тема поднимается наверняка не в первый раз)
Re[12]: О виртуальных машинах и процессорах
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.02.07 07:53
Оценка: +1
Здравствуйте, x-code, Вы писали:

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

У тебя неправильное понимание того, что такое виртуальная машина. Виртуальная машина — это всего лишь идеализированный образ. Она позволяет компилятору сгенерировать такое представление программы, в котором нет излишних деталей вроде того, какие регистры для чего использовать и каким образом передавать аргументы вызовов. При этом этот образ достаточно детален (пока), чтобы отображение на реальную архитектуру не было чрезмерно сложным. В итоге компилятор отдает не "сырые" инструкции, а недокомпилированный код. Этот код, конечно, можно интерпретировать (как можно интерпретировать и код x86), а можно компилировать сразу в целевую архитектуру (как сейчас в основном и делается).
Поэтому реально все команды выполняет процессор. И очень быстро. А насчет медленнее, напомню, что собственно x86 — виртуальная машина. Реально внутри стоит RISC процессор, а то, что ты видишь как x86 код, интерпретируется на нем перед выполнением. Ну и как, достаточно быстро он выполняет CMPXCHG?

XC>Объясните плиз... (заранее извините за то что тема поднимается наверняка не в первый раз)
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[13]: О виртуальных машинах и процессорах
От: x-code  
Дата: 14.02.07 08:52
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>У тебя неправильное понимание того, что такое виртуальная машина. Виртуальная машина — это всего лишь идеализированный образ. Она позволяет компилятору сгенерировать такое представление программы, в котором нет излишних деталей вроде того, какие регистры для чего использовать и каким образом передавать аргументы вызовов.


как раз это я понимаю. и знаю что реально методы компилируются в реальный код x86 при первом вызове. Непонятно — зачем? Какие преимущества дает операция "докомпилировать при первом вызове, запомнить в кэше и выполнить" по сравнению с просто "выполнить"?
Я не против собственно VM, у них есть масса достоинств, но почему не сделать опцию в компиляторе "генерировать код для VM" и "генерировать код для x86" (а заодно "генерировать код для процессора/VM "X", где X — некоторая архитектура, а для компилятора — просто некоторый плагин)?

При этом этот образ достаточно детален (пока), чтобы отображение на реальную архитектуру не было чрезмерно сложным. В итоге компилятор отдает не "сырые" инструкции, а недокомпилированный код. Этот код, конечно, можно интерпретировать (как можно интерпретировать и код x86), а можно компилировать сразу в целевую архитектуру (как сейчас в основном и делается).
S>Поэтому реально все команды выполняет процессор. И очень быстро. А насчет медленнее, напомню, что собственно x86 — виртуальная машина. Реально внутри стоит RISC процессор, а то, что ты видишь как x86 код, интерпретируется на нем перед выполнением. Ну и как, достаточно быстро он выполняет CMPXCHG?

Я полностью согласен с тем что архитектура x86 кривая, устаревшая и тянущая за собой ошибки 20-летней давности. Мне непонятна сама идеология. Вот например переход с 32 на 64 бита можно было совместить с переходом на новую (например RISC) архитектуру, ввести в процессор поддержку безопасности и вообще ввести все что нужно для поддержки современных парадигм программирования. Пусть 32-битные приложения выполнялись бы как раньше на микропрограммной VM, а 64-битные — на RISC. Но нет — архитектура осталась той же, а вместо этого нам предлагают по сути двойную VM. Страшно подумать что будет, когда окажется что C# слишком низкоуровневый и придумают какой-нибудь скриптовый язык, который будет интерпретироваться, а интерпретатор будет написан на C#
Re[14]: О виртуальных машинах и процессорах
От: Cyberax Марс  
Дата: 14.02.07 09:46
Оценка:
x-code wrote:
> как раз это я понимаю. и знаю что реально методы компилируются в
> реальный код x86 при первом вызове. Непонятно — *зачем*? Какие
> преимущества дает операция "докомпилировать при первом вызове, запомнить
> в кэше и выполнить" по сравнению с просто "выполнить"?
Во-первых, кроссплатформенность. Во-вторых, в теории Java-код может
работать быстрее аналогичного С-шного кода из-за механизма HotSpot.

> Я полностью согласен с тем что архитектура x86 кривая, устаревшая и

> тянущая за собой ошибки 20-летней давности. Мне непонятна сама
> идеология. Вот например переход с 32 на 64 бита можно было совместить с
> переходом на новую (например RISC) архитектуру, ввести в процессор
> поддержку безопасности и вообще ввести все что нужно для поддержки
> современных парадигм программирования. Пусть 32-битные приложения
> выполнялись бы как раньше на микропрограммной VM, а 64-битные — на RISC.
Рассказать что случилось с Intel Itanic, проститие, Intel Itanium? Линус
об этом хорошо сказал:
http://www.ussg.iu.edu/hypermail/linux/kernel/0302.2/1909.html
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[15]: О виртуальных машинах и процессорах
От: x-code  
Дата: 14.02.07 10:10
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>x-code wrote:

>> как раз это я понимаю. и знаю что реально методы компилируются в
>> реальный код x86 при первом вызове. Непонятно — *зачем*? Какие
>> преимущества дает операция "докомпилировать при первом вызове, запомнить
>> в кэше и выполнить" по сравнению с просто "выполнить"?
C>Во-первых, кроссплатформенность. Во-вторых, в теории Java-код может
C>работать быстрее аналогичного С-шного кода из-за механизма HotSpot.
если кроссплатформенность, то "докомпиляцию" можно было бы выполнить один раз на этапе инсталляции программы, а не делать это каждый раз при запуске. Это же элементарная оптимизация — вынести независящее от цикла вычисление за пределы цикла...

Насчет HotSpot — почитал статью, он может выполняться быстрее в 2 раза чем обычный Java-код. Большая часть этой оптимизации доступна на этапе компиляции для того же си. А вся "статистическая" real-time оптимизация, основанная на сборе статистики о наиболее часто вызываемых методах и т.п. — да, ее конечно проще всего реализовать на VM, но совсем не обязательно только на VM.

C>Рассказать что случилось с Intel Itanic, проститие, Intel Itanium? Линус

C>об этом хорошо сказал:
C>http://www.ussg.iu.edu/hypermail/linux/kernel/0302.2/1909.html
Я думаю, основная причина — несовместимость с огромным количеством существующего ПО.
Re[16]: О виртуальных машинах и процессорах
От: Cyberax Марс  
Дата: 14.02.07 11:10
Оценка: +1
x-code wrote:
> C>Во-первых, кроссплатформенность. Во-вторых, в теории Java-код может
> C>работать быстрее аналогичного С-шного кода из-за механизма HotSpot.
> если кроссплатформенность, то "докомпиляцию" можно было бы выполнить
> *один раз* на этапе инсталляции программы, а не делать это *каждый раз*
> при запуске. Это же элементарная оптимизация — вынести независящее от
> цикла вычисление за пределы цикла...
.NET так умеет делать. В Sun JVM это затруднительно из-за организации
самой виртуальной машины. Хотя прекомпилировать классы стандартной
библиотеки оно умеет.

> Насчет HotSpot — почитал статью, он может выполняться быстрее в 2 раза

> чем обычный Java-код.
Бред. Что за статья?

HotSpot — это именно технология runtime-оптимизации, которую в принципе
невозможна сделать статически.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[17]: О виртуальных машинах и процессорах
От: FR  
Дата: 14.02.07 11:25
Оценка:
Здравствуйте, Cyberax, Вы писали:


C>HotSpot — это именно технология runtime-оптимизации, которую в принципе

C>невозможна сделать статически.

Статически нет а без виртуальной машины вполне.
Re[18]: О виртуальных машинах и процессорах
От: Cyberax Марс  
Дата: 14.02.07 11:28
Оценка:
FR wrote:
> C>HotSpot — это именно технология runtime-оптимизации, которую в принципе
> C>невозможна сделать статически.
> Статически нет а без виртуальной машины вполне.
Как? Нам надо уметь как-то в runtime перекомпилировать код.

В принципе, если есть доступ к исходникам — можно перекомпилировать из
исходников. Но это все равно будет слегка извращенная VM.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[16]: О виртуальных машинах и процессорах
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.02.07 11:43
Оценка: 2 (1)
Здравствуйте, x-code, Вы писали:
XC>если кроссплатформенность, то "докомпиляцию" можно было бы выполнить один раз на этапе инсталляции программы, а не делать это каждый раз при запуске. Это же элементарная оптимизация — вынести независящее от цикла вычисление за пределы цикла...
Это уже сделано, по крайней мере для .Net. RTFM "ngen tool".

XC>Насчет HotSpot — почитал статью, он может выполняться быстрее в 2 раза чем обычный Java-код. Большая часть этой оптимизации доступна на этапе компиляции для того же си.

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

XC>А вся "статистическая" real-time оптимизация, основанная на сборе статистики о наиболее часто вызываемых методах и т.п. — да, ее конечно проще всего реализовать на VM, но совсем не обязательно только на VM.

Не обязательно. Но VM — это удобная абстракция.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[16]: О виртуальных машинах и процессорах
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 14.02.07 12:06
Оценка:
Здравствуйте, x-code, Вы писали:

XC>Я думаю, основная причина — несовместимость с огромным количеством существующего ПО.


Либо несовместимость с огромным колличеством существующих программистов.
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[19]: О виртуальных машинах и процессорах
От: FR  
Дата: 14.02.07 12:08
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>FR wrote:

>> C>HotSpot — это именно технология runtime-оптимизации, которую в принципе
>> C>невозможна сделать статически.
>> Статически нет а без виртуальной машины вполне.
C>Как? Нам надо уметь как-то в runtime перекомпилировать код.

Ну Profile Guided Optimization уже давно есть. Он вполне может обходится не перекомпиляцией исходников, а переоптимизацией объектников

C>В принципе, если есть доступ к исходникам — можно перекомпилировать из

C>исходников. Но это все равно будет слегка извращенная VM.

Если оптимизировать прямо у клиента то исходники не нужны, достаточно объектников и правильного линкера.
Re[17]: О виртуальных машинах и процессорах
От: FR  
Дата: 14.02.07 12:10
Оценка:
Здравствуйте, Sinclair, Вы писали:

XC>>Насчет HotSpot — почитал статью, он может выполняться быстрее в 2 раза чем обычный Java-код. Большая часть этой оптимизации доступна на этапе компиляции для того же си.

S>Плохо читал. Не в 2, а в любое количество раз. И эти оптимизации совершенно недоступны для си, т.к. у него нет информации о статистике реального выполнения. К примеру, си не может инлайнить косвенный вызов.

Доступны и делаются, VC 8 и Intel умеют.
Re[20]: О виртуальных машинах и процессорах
От: Cyberax Марс  
Дата: 14.02.07 12:51
Оценка:
FR wrote:
> C>Как? Нам надо уметь как-то в runtime перекомпилировать код.
> Ну Profile Guided Optimization уже давно есть. Он вполне может обходится
> не перекомпиляцией исходников, а переоптимизацией объектников
PGO может оптимизировать только для некоторых случаев. Горячие точки
ведь могут мигирировать во время работы программы.

> C>В принципе, если есть доступ к исходникам — можно перекомпилировать из

> C>исходников. Но это все равно будет слегка извращенная VM.
> Если оптимизировать прямо у клиента то исходники не нужны, достаточно
> объектников и правильного линкера.
А как ты будешь оптимизировать виртуальные вызовы, например?
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.