[image]

[Конкурс] Транслятор языка

 
1 7 8 9 10 11 12 13
US Сергей-4030 #20.08.2008 02:37  @tarasv#20.08.2008 02:33
+
-
edit
 

Сергей-4030

исключающий третье
★★
tarasv> С -server надо поострожней ЕМНИП он доступен только в JDK а паблик JRE обматюкает и не запустится

Эээ... вроде, нет, вроде должно быть доступно. Впрочем, это только значит, что устанавливать нужно JDK, а не JRE. Мне кажется, это непринципиально, но на усмотрение комиссии. И прочитателей, конечно. :)
   
US Сергей-4030 #20.08.2008 02:39
+
-
edit
 

Сергей-4030

исключающий третье
★★
Кстати, я пытаюсь закачать testland.zip и мне говорят "испорченный архив". Ты чего, Реконструктор, мухлюешь там чего-то, что ли?
   
US Сергей-4030 #20.08.2008 02:46  @Реконструктор#20.08.2008 02:28
+
-
edit
 

Сергей-4030

исключающий третье
★★
Реконструктор> (что только стоит комментарий в начале Execution.java)

Гы, зато у тебя тут все хорошо - ни одного комментария. Видно закваску программиста-любителя, компьютерщика широкого профиля. ;) И вообще, Реконструктор, у тебя типа есть эта, как его... совесть там, самоуважение? Ты продул по времени реализации раз в десять - вернее больше, потому что твое нынешнее спагетти безнадежно. Ты продул по функциональности. Ты продул даже по скорости - мой работающий вариант исполняется практически так же, как твой неработающий. Ты, кто разводил хрень всякую про свое умение разрабатывать алгоритмы, просрал все, что можно, показал всем, чего ты стоишь - и ты теперь еще будешь прикапываться к деталям реализации, деталям попросту ничтожным? Твои -твои!- поучения мне выглядят смешно в лучшем случае.

ЗЫ Хочешь, я насчет твоего кодирования пройдусь? :lol:
   
US Сергей-4030 #20.08.2008 03:12  @Реконструктор#20.08.2008 02:28
+
-
edit
 

Сергей-4030

исключающий третье
★★
Реконструктор> В коде Сергея немало веселых вещей. :) Однако, разглядывая проект, видно присуствие развития мышления, что обнадеживает (что только стоит комментарий в начале Execution.java). Кстати, пища для размышлений - Найдите разницы:
Реконструктор> Разумеется, у Сергея с временем будут еще прозрения и его код будет очищен и оптимизирован (будет выглядить как мой). Будем надеятся.

Впрочем, поскольку я добрый, я тебе объясню, почему мой вариант лучше.

Step step = steps.get(PC);
if(step.operator()!=null)
step.operator().run();

vs

m_pOperators[pc]->Execute();


С виду (крутых сиплюсплюсников) у Реконструктора круче, потому, что короче. Типа, красивее.
А по факту у меня вызов step.operator().run() выполнится только если step.operator()!=null. При этом step.operator() будет развернут компилятором в inline метод, соответственно все достаточно дорогие действия по вызову функции будут выполнены только когда это действительно надо - а у Реконструктора они будут выполняться всегда. Если учесть, что это самый что ни на есть внутренний цикл - это имеет очень немалое значение.

Не так важно, но такая форма позволяет при отладке (коли понадобится) установить точку останова на операторе и легко проверить, что у нас в текущем "step". В случае же Реконструктором нужно будет инспектировать m_pOperators[pc] и если оператор [] переопределен - могут быть совсем плохие проблемы.
   
US Сергей-4030 #20.08.2008 03:32
+
-
edit
 

Сергей-4030

исключающий третье
★★
И еще раз, Реконструктор, вариант "сравнимый" с твоим - есть. Работает, кстати, в отличие от твоего. Когда ждать твоего чуда? :lol:
   
CA tarasv #20.08.2008 07:21  @Реконструктор#20.08.2008 02:28
+
-
edit
 

tarasv

аксакал

Реконструктор> В коде Сергея немало веселых вещей. :) Однако, разглядывая проект, видно присуствие развития мышления, что обнадеживает (что только стоит комментарий в начале Execution.java). Кстати, пища для размышлений - Найдите разницы:
Реконструктор> Разумеется, у Сергея с временем будут еще прозрения и его код будет очищен и оптимизирован (будет выглядить как мой). Будем надеятся.

А не хотите строчечку где определен m_pOperators общественности показать, очень познавательно выглядит и прекрасно характеризует вас как профессионала.
   
IL sxam #20.08.2008 10:02  @Сергей-4030#20.08.2008 01:31
+
-
edit
 

sxam

старожил

Сергей-4030> Собственно, можно открыть голосование - кто считает, что пари выиграл Реконструктор (или я) - отпишитесь, pls.

В Репутации отписался :)
   
BG Реконструктор #20.08.2008 10:14  @tarasv#20.08.2008 07:21
+
-
edit
 
tarasv> А не хотите строчечку где определен m_pOperators общественности показать, очень познавательно выглядит и прекрасно характеризует вас как профессионала.

Тоесть?
   
BG Реконструктор #20.08.2008 10:24  @Сергей-4030#20.08.2008 03:12
+
-
edit
 
Реконструктор>> В коде Сергея немало веселых вещей. :) Однако, разглядывая проект, видно присуствие развития мышления, что обнадеживает (что только стоит комментарий в начале Execution.java). Кстати, пища для размышлений - Найдите разницы:
Реконструктор>> Разумеется, у Сергея с временем будут еще прозрения и его код будет очищен и оптимизирован (будет выглядить как мой). Будем надеятся.
Сергей-4030> Впрочем, поскольку я добрый, я тебе объясню, почему мой вариант лучше.
Сергей-4030> Step step = steps.get(PC);
Сергей-4030> if(step.operator()!=null)
Сергей-4030> step.operator().run();
Сергей-4030> vs
m_pOperators[pc]->>Execute();
Сергей-4030> С виду (крутых сиплюсплюсников) у Реконструктора круче, потому, что короче. Типа, красивее.
Сергей-4030> А по факту у меня вызов step.operator().run() выполнится только если step.operator()!=null. При этом step.operator() будет развернут компилятором в inline метод, соответственно все достаточно дорогие действия по вызову функции будут выполнены только когда это действительно надо - а у Реконструктора они будут выполняться всегда. Если учесть, что это самый что ни на есть внутренний цикл - это имеет очень немалое значение.

У меня таких сложных абстракций нет - каждый step у меня operator.

Тебе на домашнее задание: подумать как оптимизировать
code text
  1. int next = step.marker();
  2. if(next==-1)
  3. PC++;
  4. else
  5. PC=next;
   
EE Татарин #20.08.2008 10:26  @Сергей-4030#19.08.2008 22:00
+
-
edit
 

Татарин

координатор
★★★★★
Татарин>> Может быть, это нечестно по отношению к спору, но лучше пофикси. Текущее - нефункционально, и спор обессмысливается полностью.
Сергей-4030> Кстати, формально - обессмысливается, а по сути, может, как раз очень даже осмысливается. ;)
По-моему, такая баговая программа - это то же самое, что программы не было бы вовсе. Нельзя сравнивать что-то с ничем.
   
EE Татарин #20.08.2008 10:32  @Реконструктор#20.08.2008 10:24
+
-
edit
 

Татарин

координатор
★★★★★
Реконструктор> У меня таких сложных абстракций нет - каждый step у меня operator.
Реконструктор> Тебе на домашнее задание: подумать как оптимизировать
Григорий... я, конечно, не разделяю глумления Сергея... но у него есть повод.
Он написал что-то, что в абсолютном большинстве тестов как-то работает и соответсвует спецификации. Быстро или не быстро - нужно иметь что-то, с чем сравнивать.

И если смотреть код...

Твой тон становится ещё более неуместен, чем наезды Сергея.
   
BG Реконструктор #20.08.2008 10:35  @Сергей-4030#20.08.2008 02:46
+
-
edit
 
Сергей-4030>потому что твое нынешнее спагетти безнадежно.

То, что ты ничего не понимаеш, не делает код спагетти. В целом, мой вариант аналогичен твоему (после получения прозрения), с той разницой, что он обдуман предварительно и соответствено - более чист.
   
US Сергей-4030 #20.08.2008 10:40  @Реконструктор#20.08.2008 10:24
+
-
edit
 

Сергей-4030

исключающий третье
★★
Реконструктор> Тебе на домашнее задание: подумать как оптимизировать

Не в той позиции ты сейчас, чтоб мне давать домашние задания. А я вот тебе - дам. Тебе на домашнее задание - подумать над тем, как сделать дизайн понятным и простым. Подумать, почему твои спагетти обернулись тем, что есть - бесконечной отладкой при совершенной нефункциональности.
   
US Сергей-4030 #20.08.2008 10:44  @Реконструктор#20.08.2008 10:35
+
-
edit
 

Сергей-4030

исключающий третье
★★
Сергей-4030>>потому что твое нынешнее спагетти безнадежно.
Реконструктор> То, что ты ничего не понимаеш, не делает код спагетти. В целом, мой вариант аналогичен твоему (после получения прозрения), с той разницой, что он обдуман предварительно и соответствено - более чист.

Почему же тогда твой код не работает? Почему мой - работает, а твой - во первых не работает, а во-вторых - медленно не работает, учитывая, что имеет априори фору в виде нативной компиляции? Почему ты продул, имея все форы, которые только возможно?

PS По тому, что ты делал свой вариант две недели, очень похоже, что ты в своем коде тоже ничего не понимаешь, уж извини.
   
US Сергей-4030 #20.08.2008 10:51  @Татарин#20.08.2008 10:26
+
-
edit
 

Сергей-4030

исключающий третье
★★
Татарин>>> Может быть, это нечестно по отношению к спору, но лучше пофикси. Текущее - нефункционально, и спор обессмысливается полностью.
Сергей-4030>> Кстати, формально - обессмысливается, а по сути, может, как раз очень даже осмысливается. ;)
Татарин> По-моему, такая баговая программа - это то же самое, что программы не было бы вовсе. Нельзя сравнивать что-то с ничем.

Мы сравнивали и платформы и программистов - и получили, что получили. Сравнивать полученные программы - нет, нельзя. Сравнивать платформы и программистов - можно.

ЗЫ По поводу глумления - обидно же. Я даже не про изначальные наезды Реконструктора про дебильных Java программистов. Это было не личное оскорбление, это было такое снобское ворчание. ;) Но что действительно разочаровало - так это уровень работы в "спорной" программе. Я ж на самом деле старался и на самом деле уважал соперника, а тут... приехали. Черт те что. %(
   
EE Татарин #20.08.2008 10:51  @Реконструктор#20.08.2008 00:59
+
-
edit
 

Татарин

координатор
★★★★★
Татарин>> Григорий, я могу ошибаться, но программа в первую очередь должна работать (лишь затем - работать без багов, и лишь затем по приоритету - работать быстро без багов). То, что ты тут выложил, может прокатить как пререлиз бета-версии отмазки, но не как продукт. :\ Это никто не купит, как бы оно быстро ни работало. :\
Реконструктор> Не спорю. Оно даже не бета, единственный код, который я тестировал, это то что в файле.
Реконструктор> Но все-таки следует смотреть на топик: я-то могу все исправить, но джава быстрее не пойдет. Если программа шла только вдвое быстрее чем та на джаве, я бы задумался о преспективах современного программирования. А так не стоит вообще больше заниматся этим. Иначе как в анекдоте "а почему у вас негров бьют?".
Не совсем верно. Сравнивать имеет смысл скорость кода, который делает сравнимые вещи.
Вот Сергей говорил про реализацию goto - и он прав, его введение может замедлить прогу на несколько процентов как минимум. Ну и так далеее.

Кроме того, вы сравнивали не только языки, но и себя как программистов. Задача программиста - выполннить ТЗ. Я понимаю, почему нет goto. Непонятно, почему формально реализованые фичи не работают. ИМХО, первая проблема современного программирования - баги.
И, кстати, Ява как язык во многом с ними борется - та же сборка мусора, виртуальная машина с избавлением от реальных указателей. Да, это тормозит явские проги, но это же избавляет от многих проблем... и судя по краху твоей программы на том же операторе перехода - проблем вовсе не придуманых, а вполне даже реальных. Это ведь не было твоей задумкой - крах программы вместо вывода сообщения об ошибке?

При этом, хорошая Ява-машина сводит преимущество С(++) в скорости к минимуму - разница становится не в разы, а на десятки процентов. Где такое преимущество в скорости актуальна? В кодеках? В системе? В прикладных программах эта разница легко отбивается.
   
US Сергей-4030 #20.08.2008 10:54  @Реконструктор#20.08.2008 10:35
+
-
edit
 

Сергей-4030

исключающий третье
★★
Сергей-4030>>потому что твое нынешнее спагетти безнадежно.
Реконструктор> То, что ты ничего не понимаеш, не делает код спагетти. В целом, мой вариант аналогичен твоему (после получения прозрения), с той разницой, что он обдуман предварительно и соответствено - более чист.

Ага. Реконструктор, между прочим - пока ты свой чистый код безуспешно отлаживал, я написал вариант с функциями и базовыми типами отличными от double. Я не понимаю, как можно так выпендриваться после того, как упал всей... лицом в грязь.
   
BG Реконструктор #20.08.2008 10:56  @Татарин#20.08.2008 10:32
+
-
edit
 
Татарин> Григорий... я, конечно, не разделяю глумления Сергея... но у него есть повод.
Татарин> Он написал что-то, что в абсолютном большинстве тестов как-то работает и соответсвует спецификации. Быстро или не быстро - нужно иметь что-то, с чем сравнивать.

Ну, как тебе сказать... Я делал это в паузах между пляжами.

Татарин> И если смотреть код...
Татарин> Твой тон становится ещё более неуместен, чем наезды Сергея.

Короче, вся эта грязь мне надоела. Код Сергея в 10 раз больше чем мой (а по логике надо наоборот, я ведь пишу на C++). И причина этому не какие-то волшебные свойства программы (его принцип работы полностью аналогичен моему), а то, что он делал выводы по ходу, все время внося изменения и патчи. Его программа медленее (джаве привет).
Но он - победитель. Поздравления ему. У меня были какие-то свои цели, я их достиг и больше этой глупостью заниматся не буду - мне платят деньги за мое время.
Пока.
   
EE Татарин #20.08.2008 11:00  @Сергей-4030#20.08.2008 10:51
+
-
edit
 

Татарин

координатор
★★★★★
Татарин>>>> Может быть, это нечестно по отношению к спору, но лучше пофикси. Текущее - нефункционально, и спор обессмысливается полностью.
Сергей-4030> Сергей-4030>> Кстати, формально - обессмысливается, а по сути, может, как раз очень даже осмысливается. ;)
Татарин>> По-моему, такая баговая программа - это то же самое, что программы не было бы вовсе. Нельзя сравнивать что-то с ничем.
Сергей-4030> Мы сравнивали и платформы и программистов - и получили, что получили. Сравнивать полученные программы - нет, нельзя. Сравнивать платформы и программистов - можно.
Платформы - вряд ли. Выборка, мягко говоря, маловата.
До сих пор большинство продуктов, которыми мы пользуемся, пишутся на С(++).
И эти продукты - работают. И к большинству из них сложно предъявить какие-то уж очень крутые претензии. Правда ли, что ОпенОфис лучше МСОфиса? ИМХО, совсем нет, совсем наоборот.
А вот МСОфис, при всей его невероятной наворочености, работает заметно быстрее.
И о чём это нам говорит?

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

Сергей-4030> ЗЫ По поводу глумления - обидно же. Я даже не про изначальные наезды Реконструктора про дебильных Java программистов. Это было не личное оскорбление, это было такое снобское ворчание. ;) Но что действительно разочаровало - так это уровень работы в "спорной" программе. Я ж на самом деле старался и на самом деле уважал соперника, а тут... приехали. Черт те что. %(
Нет, не думаю.
Честно глядя (на содержимое топика), наезды начались ещё до получения результатов.
   
BG Реконструктор #20.08.2008 11:03  @Татарин#20.08.2008 10:51
+
-
edit
 
Татарин> И, кстати, Ява как язык во многом с ними борется - та же сборка мусора, виртуальная машина с избавлением от реальных указателей. Да, это тормозит явские проги, но это же избавляет от многих проблем...

Не только она.

Татарин> и судя по краху твоей программы на том же операторе перехода - проблем вовсе не придуманых, а вполне даже реальных. Это ведь не было твоей задумкой - крах программы вместо вывода сообщения об ошибке?

Ты читал все темы топика?

Татарин> При этом, хорошая Ява-машина сводит преимущество С(++) в скорости к минимуму - разница становится не в разы, а на десятки процентов. Где такое преимущество в скорости актуальна? В кодеках? В системе? В прикладных программах эта разница легко отбивается.

Нет. В джаве даже самое простое присвоение - это runtime check.
   
US Сергей-4030 #20.08.2008 11:03  @Татарин#20.08.2008 10:51
+
-
edit
 

Сергей-4030

исключающий третье
★★
Татарин> И, кстати, Ява как язык во многом с ними борется - та же сборка мусора, виртуальная машина с избавлением от реальных указателей.

Честно говоря, в данном случае преимущества Java использованы очень мало, ибо задача такая - хорошо поставленная (в смысле - нет сложной и меняющейся предметной области). И объем смешной. И нет multitier никакого. И поэтому, ИМХО, главная проблема Реконструктора - просто банальное неумение сделать дизайн. Может, это звучит жестоко и оскорбительно, но это тем не менее так и есть. OK, я могу сделать оговорку - "конкретно в этом проекте" он не смог сделать грамотный дизайн. Но по-моему, это его жизненное кредо, он же не "интерфейсы" программирует, как глупые джавские разработчики, а "алгоритмы". Он просто на самом деле не понимает, зачем нужен дизайн и "интерфейсы". Не рисуется, а так-таки не понимает. Сорри. :(
   
US Сергей-4030 #20.08.2008 11:04  @Реконструктор#20.08.2008 10:56
+
-
edit
 

Сергей-4030

исключающий третье
★★
Реконструктор> Ну, как тебе сказать... Я делал это в паузах между пляжами.

А я типа не работаю, ага?
   
EE Татарин #20.08.2008 11:08  @Реконструктор#20.08.2008 10:56
+
-
edit
 

Татарин

координатор
★★★★★
Реконструктор> Короче, вся эта грязь мне надоела. Код Сергея в 10 раз больше чем мой (а по логике надо наоборот, я ведь пишу на C++). И причина этому не какие-то волшебные свойства программы (его принцип работы полностью аналогичен моему), а то, что он делал выводы по ходу, все время внося изменения и патчи. Его программа медленее (джаве привет).
Медленнее - на десятки процентов. Не в разы. И ещё неизвестно, что будет быстрее, если ты реализуешь то же самое.

Реконструктор> Но он - победитель. Поздравления ему. У меня были какие-то свои цели, я их достиг и больше этой глупостью заниматся не буду - мне платят деньги за мое время.
Реконструктор> Пока.
Как хочешь.
Но тут ты не прав. И на отношение "сверху вниз" к тому же Сергею или "явским программистам вообще", ИМХО, никакого морального права не имеешь.
   
US Сергей-4030 #20.08.2008 11:08  @Татарин#20.08.2008 11:00
+
-
edit
 

Сергей-4030

исключающий третье
★★
Татарин> Платформы - вряд ли. Выборка, мягко говоря, маловата.

Да. По этому поводу - был неправ и неправильно выразился.

Татарин> Честно глядя (на содержимое топика), наезды начались ещё до получения результатов.

Может быть. Сорри, гайзы, увлекся.
   
EE Татарин #20.08.2008 11:12  @Реконструктор#20.08.2008 11:03
+
-
edit
 

Татарин

координатор
★★★★★
Татарин>> И, кстати, Ява как язык во многом с ними борется - та же сборка мусора, виртуальная машина с избавлением от реальных указателей. Да, это тормозит явские проги, но это же избавляет от многих проблем...
Реконструктор> Не только она.
А что ещё?

Татарин>> и судя по краху твоей программы на том же операторе перехода - проблем вовсе не придуманых, а вполне даже реальных. Это ведь не было твоей задумкой - крах программы вместо вывода сообщения об ошибке?
Реконструктор> Ты читал все темы топика?
Тоипк - это и есть тема... или я чего-то не понял?

Татарин>> При этом, хорошая Ява-машина сводит преимущество С(++) в скорости к минимуму - разница становится не в разы, а на десятки процентов. Где такое преимущество в скорости актуальна? В кодеках? В системе? В прикладных программах эта разница легко отбивается.
Реконструктор> Нет. В джаве даже самое простое присвоение - это runtime check.
Всё это учтено в итоговой разнице. Есть результаты тестов.
   
1 7 8 9 10 11 12 13

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru