Код как граф
От: Mamut Швеция http://dmitriid.com
Дата: 28.05.09 08:35
Оценка: 32 (5) :))) :)
http://habrahabr.ru/blogs/i_am_clever/39002/

Продолжение и, скорее всего, окончание моего исследования про графы из текстов.
Мне подсказали страницу, где есть реализация одного алгоритма (QuickSort) на разных языках программирования, а значит есть отличная возможность сравнить графы этих «одинаковых» программ.
Под катом полученные графы для языков: C, C++, Java, Visual Basic, Delphi, Python, Php, Prolog, Fortran, Ruby, Haskell, Algol, Mathematica, Asm.
Попробуйте не заглядывая под кат угадать, какой граф будет наиболее красивым и какой самым страшным


Самым страшным языком программированияграфом я провозглашаю Фортрановский (сама программа, надо признать, была еще страшнее графа):


скипнуто много графов, смотрите по ссылке


Как вы думаете, кто победитель?
avalon 1.0rc1 rev 239, zlib 1.2.3


dmitriid.comGitHubLinkedIn
Re: Код как граф
От: mkizub Литва http://symade.tigris.org
Дата: 28.05.09 08:59
Оценка: :)))
Здравствуйте, Mamut, Вы писали:

M>Как вы думаете, кто победитель?


Сон разума, разумеется.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re: Код как граф
От: alexeiz  
Дата: 28.05.09 09:08
Оценка: +2
Здравствуйте, Mamut, Вы писали:

M>Как вы думаете, кто победитель?


По производительности? Думаю, фортран. Для него приведена единственная приближенная к real world реализация сортировки. В реальной библиотеке C++, кстати тоже будет insertion sort для маленького количества элементов и даже может heap sort, если глубина рекурсии слишком большая.

Не в языке дело, а в том что на них реализованы разные алгоритмы.
Re: Код как граф
От: Tilir Россия http://tilir.livejournal.com
Дата: 28.05.09 09:39
Оценка: :)
Здравствуйте, Mamut, Вы писали:

M>Как вы думаете, кто победитель?


Ага. Круто. Это был для односвязных списков qsort, я верно понял? Ну тех которые в Haskell built-in и для которых там сахара насыпано мама-не-горюй. А теперь пожалуйста сортировку двусвязного списка. И очень хочется поглядеть на граф на Haskell. Ну вот очень-очень. Спасибо
Re[2]: Код как граф
От: thesz Россия http://thesz.livejournal.com
Дата: 28.05.09 09:51
Оценка:
M>>Как вы думаете, кто победитель?
T>Ага. Круто. Это был для односвязных списков qsort, я верно понял? Ну тех которые в Haskell built-in и для которых там сахара насыпано мама-не-горюй. А теперь пожалуйста сортировку двусвязного списка. И очень хочется поглядеть на граф на Haskell. Ну вот очень-очень. Спасибо

Вопрос с подвохом: можно ли преобразовать двусвязный список в односвязный, отсортировать и преобразовать обратно?
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[3]: Код как граф
От: Tilir Россия http://tilir.livejournal.com
Дата: 28.05.09 09:58
Оценка:
Здравствуйте, thesz, Вы писали:

T>Вопрос с подвохом: можно ли преобразовать двусвязный список в односвязный, отсортировать и преобразовать обратно?


Какая потеря времени. А если там большой список? Я понимаю асимптотика от этого не меняется, но константу при ней мы сильно ухудшаем. Но ведь быстродействие в таких случаях тоже играет свою роль, а оно у Haskell и так не особо при таком графе мягко скажем. Я не спорю на Haskell можно и быстро, я даже знаю как... Но тогда перестанет быть красиво и станет чуть более похоже на фортран по моему личному опыту. Так что уж давайте честную сортировку двусвязного списка без дополнительных двух преобразований. Граф на C от этого кстати даже не пошевелится особо.
Re[4]: Код как граф
От: thesz Россия http://thesz.livejournal.com
Дата: 28.05.09 10:28
Оценка:
T>>Вопрос с подвохом: можно ли преобразовать двусвязный список в односвязный, отсортировать и преобразовать обратно?
T>Какая потеря времени. А если там большой список? Я понимаю асимптотика от этого не меняется, но константу при ней мы сильно ухудшаем.

Это надо показать, как минимум. Доказывать не прошу, поскольку на RSDN принято ловко от этого уходить, загромождая дискуссию.

Показать обратное очень просто.

У нас получится сложность вида O(A*NlogN+B*N). B значительно меньше A, поскольку сравнение не используется. В результате мы придём к O(NlogN+(B/A)*N), где (B/A)<<1. Иными словами, мы получим O(NlogN).

Для вырожденного случая, где O(N^2) вообще не стоит учитывать B*N.

T>Так что уж давайте честную сортировку двусвязного списка без дополнительных двух преобразований. Граф на C от этого кстати даже не пошевелится особо.


Сперва я бы хотел увидеть сортировку на Си двусвязного списка.

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

Если же там будет нормальное решение сортировкой односвязного списка с последующим построением двусвязного, то я снова сниму шляпу и прекращу дискуссию. Но уже по другой причине.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re: Код как граф
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.05.09 11:06
Оценка: +6
Здравствуйте, Mamut, Вы писали:

M>скипнуто много графов, смотрите по ссылке

M>[/q]

M>Как вы думаете, кто победитель?


Чушь какая-то.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Код как граф
От: Кэр  
Дата: 28.05.09 14:55
Оценка: :))
Здравствуйте, Mamut, Вы писали:

M>Как вы думаете, кто победитель?


Лично мне кажется, что картинки еще не совершены. Мы же тут инжинеры, мы можем лучше! Нужно это все представить в более живых формах и в цвете. Тогда получившаяся картинка будет намного яркой и индивидуальной. Тогда и выбор языка станет намного более осознаным и волевым действием. Почти как тест Роршаха.
Re[2]: Код как граф
От: FR  
Дата: 28.05.09 16:03
Оценка:
Здравствуйте, Tilir, Вы писали:

T>Ага. Круто. Это был для односвязных списков qsort, я верно понял? Ну тех которые в Haskell built-in и для которых там сахара насыпано мама-не-горюй. А теперь пожалуйста сортировку двусвязного списка. И очень хочется поглядеть на

граф на Haskell. Ну вот очень-очень. Спасибо

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

qsort = lambda l :  qsort([y for y in l[1:] if y< l[0]])+[l[0]]+qsort([y for y in l[1:] if y>= l[0]]) if  l else []


Re[3]: Код как граф
От: Mr.Cat  
Дата: 28.05.09 17:32
Оценка: :)
Здравствуйте, FR, Вы писали:
FR>Тут в выигрыше или язык или стиль написания при котором как можно меньше используются ключевые слова и как можно больше закорючек
Ага. вот J:
quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[4]: Код как граф
От: mkizub Литва http://symade.tigris.org
Дата: 28.05.09 17:58
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Ага. вот J:

MC>
MC>quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
MC>


Интересно, хоть один нод в графе появится?
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[5]: Код как граф
От: FR  
Дата: 28.05.09 18:16
Оценка:
Здравствуйте, mkizub, Вы писали:

M>Интересно, хоть один нод в графе появится?


Пустая картинка 11*11 пикселей
При желании можно настроить чтобы односимвольные слова понимала, тогда похоже на хаскель.
Вообще программка тут http://narod.ru/disk/2391169000/CodeGraphMFC.rar.html
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.