Balancer: Все сообщения за 4 Декабря 2002 года

 
ПнВтСрЧтПтСбВс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

=KRoN=
Balancer

администратор
★★★★★
avmich>Что-то слишком много. Откуда такая разница? Не верю.

Пример - рекурсивное вычисление 4-го числа Фибоначчи. "Обычные" ЯВУ - 2..3сек. Perl - 8 минут.

Конечно, если основная работа будет во встроенных функциях, то всё будет быстрее. Скажем, сортировка и реверсирование массива могут оказаться сопоставимыми с тем же C++, т.к. писаны на том же C++.

Крон>> XML - это хороший переносимый контейнер. Но работать с ним вручную, в текстовом редакторе - увольте!

avmich>XML именно для этого создавался читаемым, чтобы можно было работать вручную и напрямую. Принципиально ценное свойство. И почему текстовый редактор не подходит?

avmich>Вот-вот, XML как раз удобен, именно удобен для ручной работы с исходным текстом.

Ты с ним работал вручную? Я - да :D Это тихий ужас. Да, подправить пару параметров - всё отлично, хотя, порой, нелегко разобраться даже при наличии синтаксической подсветки в том же FAR'е. Но самому писать... Мне одного Fiction Book 2 по уши хватило :)

avmich>Собственно, Перл в этом проигрывает - более компактная запись, меньшая избыточность - следовательно, меньшая понятность, меньшее удобство.

Вообще-то, более высокая понятность у более информативно насыщенного языка. Это психофизиологический факт :) Другое дело, что более сложный язык и требует большего времени на освоение. Но и тут Perl - это вам не APL :) На самом деле он совсем не намного сложнее того же Си, а во много даже проще, чем Си++. Да уже одно только видимое отсутствие типов очень упрощает жизнь :)

avmich>А чем сановские библиотеки плохи?

Ну, не знаю... Может, там и есть что-то :) Но, просто к слову. Чтобы установить новый модуль на Perl'е обычно достаточно одной команды с консоли. Модуль и скачается и пропишется куда надо. На Sun'е так? И хелп по модулю, кстати, тут же станет доступен в общем хелпе Perl'а.

avmich>Не понял. Компилируемая программа по определению однозначна - как бы иначе компилятор сработал бы? В этом смысле Перл и Си одинаково однозначны.

Дык, вообще-то, сейчас, ИМХО, 99% всех языков и диалектов компилирующие :) Я не вспомню последний интерпретирующий язык... qbasic (DOS'овский, не QB!), .bat-файлы... shell-скрипты на Linux... Всё? :)

avmich>Ну, тут пока рано говорить о принципиально других результатах...

Ну, с другой стороны, ещё всего лет 7 назад ООП было жуткой экзотикой...

avmich>Может, это как малость жалоб на Линукс: те, кто пользуется - профи, у которых и проблемы специфичны, и не так просты?.. Конечно, утрирую.

Утрируешь :D На Linux жалоб, ИМХО, не меньше, чем на Винды, а может и больше. Только в соответствующих тусовках :D

На самом деле, скорее дело в том, что Perl-скрипты редко работают долго. На той же Авиабазе сейчас - не успел за 20 секунд сработать - извини, kill процессу и все дела :)

Но, с другой стороны, в Linux-системах, как раз, Perl, как раз, нередко крутится постоянно, даже в виде демонов. Но тут, как раз, возможно ты прав - пишутся они уже более продвинутыми программерами, которые и память хапать не любят, и отдавать стараются по возможности вручную, и от зацикливаний программу берегут :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Lerm>Ровно это я и сказал

А, ну, я с точностью до наоборот тебя понял. Бывает, с недосыпу :D
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
ab>А сколько виси программеров работают без визардов?

Я даже не умею толком этим визардом пользоваться :D Со времён VC4 очень много изменилось, а 7-ю версию недавно поставил. Обычно всё с командной строки.

ab>Дык на фига ж. Даже если пишешь консоль, но все равно зачем же без подсветки синтаксиса

FAR+Colorer дают куда более приятную подсветку. Вплоть до обозначения некоторых синтаксических ошибок :)

ab>контекстной справки

Тут - да. Надо бы подумать, к FAR'у её прикрутить :) А так - MSDN Help отдельно у меня запускается, туда и заглядываю, если что. Всё одно ресурсов меньше жрёт, чем IDE :)

ab>встроенного в ide отладчика оставаться то?

Ну, разве что отладчик. Хотя я с теми же Perl/PHP/Forth совсем отладчиком пользоваться отвык. Мне обычно результатов контрольных точек по уши хватает.

ab>Ну а вот windows commander на чем писан? Кстати он после переименования в total commander descript.ion/files.bbs вроде поддерживать стал.

Не после, а одновременно :) Но всё равно он опоздал. Если б это появилось пару лет назад... Теперь я уже на 100% подсел на FAR :) Точнее - на его плагины, конечно.

А писан WC - на Дельфи. Ну и что? Вот другой пример - есть такой Jabber-клиент - JAJC. Всем прекрасная программа и мне ужасно нравится. Но! Писана на Дельфях. В смысле - на стандартных компонентах. А у меня контакт лист сейчас - 446 человек. И всё. Любая операция над списком юзверей - двухсекундный подвис системы. Раньше было вообще секунд на 20... Автору жаловался - он соптимизировал. Стало в 10 раз быстрее... В общем, с сожалением, но отставил. А вот любая C/C++ альтернатива - Psi, Exodus, Gabber - эти просто летают... Понятно, что руки такие, но пример такой нередок :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Жень, проснись! :D
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Пока - только "вручную", в соответствующих топиках.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Nilli>А какая разница, Ром, какое стихотворение красивое:::::::

Стихотворение - красивое. Драконов - не люблю. Может, оттого, что у самого внутри, кажется, многое похоже на них. Но мне это не нравится. Не люблю драконов. В иной реальности я б истреблял их, если б они попадались мне на пути. Хотя специально за ними б не гонялся, конечно :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
metalius>Как жаль, что драконы не существуют в действительности... :)

Существуют. Их мало - но они есть. Оглянись вокруг, присмотрись, задумайся.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★

Интересно, кумулятивный заряд шкуру дракона пробъёт? :D
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
avmich>Во что же Перл это дело компилирует?..

Понятно, что не в машкод :)

avmich>Ага. Как и в хорошем ЯВУ, важны хорошие ключевые слова, то есть таги.

Так вот, в XML кроме собственно тагов и параметров куча вского мусора - раз. И сами таги обычно весьма избыточны - два.

Я, конечно, понимаю, что по-иному для транслятора сложно, но мы же, вроде, стараемся от машины к человеку идти, а в XML - наоборот, шаг назад, ИМХО, в этом смысле. Очень много сделано для упрощения жизни транслятору:
code text
  1.   <type descr="assembler" name="asm" exts="/.(asm)|(inc)|(i32)$/i">
  2.     <load name="base/asm.hrc"/>
  3.     <switch type="pascal" match='/^{|(//)|(resourcestring)/i'/>
  4.     <switch type="asp"  match='/<%/i'/>
  5.     <switch type="makefile" match='/^!if/i'/>
  6.     <scheme name="asm"/>
  7.   </type>


Это ли не кошмар? Тут реальная информация занимает не более 50% исходного кода. Ужасное расточительство. А все эти ограничения, типа обязательных кавычек даже для непробельных параметров? Флаги вообще невозможны, записываются как обычная пара параметров, типа border="border" и т.п. Для меня это - шаг назад, повторюсь. Транслятору такие вещи было бы не слишком сложно обработать, если не всё равно вообще, а вот человеку - куча оишней возни. Нет, ну объясните мне, ну нафига закавычивать непробельные параметры и отменять флаги?

avmich>Директория с классами Явы, или зип-файл, кладёшь в нужное место в файловой системе, и программа запустится.

Ну, ладно, хорошо, согласен :) Только всё равно синтаксис у Java громоздкий. Сколько там лишних символов будет у банальной регексповой замены?

avmich>А насчёт одной команды с консоли - знаю я шеллы, на них такую одну команду можно сделать...

:) На самом деле, к Perl'у просто прикладывается соответствующий же Perl-скрипт, который и занимается этим. И вообще забавно, в Perl'е, например, даже инсталлятор под Win32 на нём же написан - копируешь куда надо, запускаешь install.bat, он и пропишет всё :)

>>Ну, с другой стороны, ещё всего лет 7 назад ООП было жуткой экзотикой...
avmich>Да ну, 15 лет назад - согласен, а 10 - на нём уже вовсю программировали...

Ну, да... На счёт 7 лет - это время летит... 7 лет назад - это уже Win95. Но 10 лет назад ООП была экзотикой, тут даже не спорь! :D Ещё в ~1993 сколько споров было, нужно ли ООП, оправдано ли и т.д. и т.п. :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Fakas>"беда" дельфей в том, что Вася Пупкин может нарисовать красивую но глючную прогу.

На эту тему было много споров и у великих мира сего и у простых флеймеров. Наиболее общее мнение, что язык, на котором можно написать плохую программу - плохой. Между прочим, наиболее сильно это утверждение проталкивали Паскалисты :D А теперь - вон как... :D

Fakas>Но это не говорит о том что профи не может написать столь же красивую (за то же или даже меньшее время) но гораздо более надежную и быструю аппликуху.

Да-да... Помню-помню кучу споров на эту тему и в литературе и в FIDO... Особенно, когда противостояние C++ и Pascal'я всплывало. :D "Верной дорогой идёте, товарищи!" :D

Fakas>А вот в С есть родовой недостаток, кот-й аукается всем до сих пор — отсутсвие нормального типа строка и использование вместо нее указателя.

Гы. Зато это быстро :) И - точно. Поскольку строка в памяти это именно массив символов.

Fakas>Заметили какие самые распостраненные дырки в инотовсокм софте ? Переполнение буфера. Начиная с первого сетевого червя Морриса и до последних сообщений о дырах. И все приложения пишут профи...

Вообще-то, лично я уже не помню когда последний раз с таким сталкивался в практическом программировании :) fgets в явном виде требует указать длину строки, а больше я таких дыр и не припомню. Кроме того, нормлаьные программеры давно используют динамические строки. Хотя тут и возможны уже утечки памяти.

А "нормальные" строки в Паскале - зачем тогда было в Дельфи вводить аж три типа строк? Ну, один - понятно, ASCIIZ, для совместимости с сишным WinAPI, а ещё два? :D Кроме того, "настоящие" строки - это обязательная сборка мусора. Но в Паскале нет полноценного сборщика. Поэтому неизбежно или ограничение функциональности строк, или периодические глюки типа утечек памяти. Я не прав?
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Зубы и когти - это не главный отличительный признак Дракона, ИМХО. А вот вышеприведённый стих - он очень хорошо суть драконью отражает...
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

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

=KRoN=
Balancer

администратор
★★★★★
А "Атомный Сон" Лукьяненко читали? Тоже Драконы... И меж тем невероятно положительный для произведений Лукьяненко, буквально кристалльный герой!
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Ну, разве что в Шреке :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
TEvg>s2:=s1; ;)

Я же про идеологию :)

TEvg>А сейчас-то их гораздо больше. Только в реале я обычно применяю один тип string, редко shortstring (старый паскаль)и PChar (C++). И все.. Остальные... ну запас карман не тянет. :)

Понятно... В общем, Паскаль понемногу забирает у Си всё то, за что когда-то Си ругал :D И даже в этом стремлении переплёвывает его :)

TEvg>Что меня убило в С - printf - сон разума,

Ну-ну. :D Зато это совершенно равноправная функция. И язык не имеет привязки к устройствам вывода. Кроме того, это Си. В Си++ по стандарту - cout <<

TEvg>строки - маразм,

Единственный минус :) Мне тоже долго не хватало динамических строк в Си. Ну а в Си++ я их класс слепил едва ли не первый, как объектное программирование освоил :)

TEvg>время компиляции - бред сумашедшего. :p

Время компиляции - копеечное. Не путай с линковкой.

TEvg>Скажи Крон почему BC который создает худший код чем Дельфия компилит одну и ту же хрень в 20-50 раз дольше?

Компилирует Си++ очень быстро. Долго - линкует. Ну что делать, если стандарт .obj и .lib родился задолго до Си/Си++ и требовалась их поддержка. Зато и 100%-я совместимость в линковке с любым другим таким же языком. Поэтому я могу слепить модуль работы со списками на Лиспе или Хаскелле, математику на Фортране и всё это склеить через Си++.

Умиреть это может только сейчас, с введением .NET. Там всё ещё круче - все языки дотнета компилят в один виртуальный код и поэтому спокойно взаимодействуют между собой. Хоть ML + C#, хоть VB + C++. Если у MS хватит упорства это и на другие платформы взгромоздить, может стать революцией в межплатформенности :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Не... В лыжах хорошо стоя на асфальте приобщаться к японской поэзии :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
TEvg>40 число - не более 1 сек

Рекурсивно?

TEvg>Кстати рекурсия - сон разума, без нее все считается на пару порядков быстрее.

Естественно. Но дело-то не в алгоритме, а в компиляторе :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
TEvg>Щас! Чтоб МС на другие платформы.. :lol: Кто ж тогда под виндами сидеть будет? :lol:

Насколько я знаю (или ошибаюсь?) инфа по виртуальной машине дотнета открытая. Так что перенос её на другие платформы - дело времени и желания. Вроде, всякие Open* зашевелились на тему реализаций дотнета.

TEvg>Рекурсивно. Мож просто комп быстрый.

Возможно. Т.к. у меня на асме вышло чуть медленнее, чем на C++ на VC7 :) А там - около 2 секунд.

TEvg>Нерекурсивно - 40000-ое менее чем за 0.1 сек. :) Правда переполнение происходит. :)

Вот-вот. А на Хаскелле - красота!

fibz = 1 : 1 : [ x+y | (x,y) <- zip fibz (tail fibz)]
main = do print (fibz !! 40000)

И через 3 секунды на PIII-866 получаем все 8362 цифры 40000-го числа Фибоначчи :) - 231799...7495359577501. Целиком уж тут его приводить не буду :D
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Задолбали тормоза JAJC'а с контакт-листом в 446 человек и я снова на Psi :D


… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Fakas>обходимся простым Move :). Наамного быстрее :)

Здрасьте! И как, позвольте узнать, ты будешь MOVE делать на асме? :D Чтобы быстрее? Вопрос с издёвкой :)

Fakas>А откуда стек затирается ? Из входного как правило стокового буффера.

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

=KRoN=
Balancer

администратор
★★★★★
TEvg>Мой комп раза в 2 быстрее. То на то и выходит.

Вот только тонкость в том, что у тебя считаются, как я полагаю, только младшие 4 байта 40000-го числа. А Хаскелл, не смотря на свою в целом тормознутость, умудряется не слишком отставая считать число в 8000 знаков :) Ужасно приятсивенный язык! И абсолютно необъектный. :)

[ 07-12-2002: Message edited by: =KRoN= ]
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Супер!

The Evolution of a Haskell Programmer
(на примере вычисления факториала :))



Iterative Haskell programmer
(former Pascal programmer)
code text
  1. fac n = result (for init next done)
  2.         where init = (0,1)
  3.               next   (i,m) = (i+1, m * (i+1))
  4.               done   (i,_) = i==n
  5.               result (_,m) = m
  6.  
  7. for i n d = until d n i
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
Flogger-B>И тем не менее - он, скорее всего, прав, как ни прискорбен сей факт есмь...

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

=KRoN=
Balancer

администратор
★★★★★
Награды по умолчанию висят месяц.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

=KRoN=
Balancer

администратор
★★★★★
avmich>Диалектика, однако... Возьму только одну фразу:

Ну, диалектика... :)

=KRoN=>>Пример - рекурсивное вычисление 4-го числа Фибоначчи.
Zeus>Oй. Или кто-то глючит, или я быстрее всех. 1,1,2,3! :D

Ну, 40-го, конечно :D

Zeus>Во-1, в Дельфийском Паскале, сиречь Object Pascal. Во-2, второй (а точнее, наоборот, первый) - тоже для совместимости, но со стандартным Паскалем (где первый байт хранит длину).

Вот-вот... А завтра уже и слова под длину будет мало. Со строками в десятки мегабайт уже даже мне работать довелось :D

Zeus>Удобство для компилятора (строка<->указатель) уже давно не аргумент.

За что я и не люблю XML :D Это - шаг назад от обычного HTML, ИМХО. В смысле - шаг к компиляторам, а не к людям.

Zeus>Кстати, это еще не все :) Есть еще двухбайтовые подварианты каждых строк (кроме самого древнего вроде) для unicode.

А как там с UTF-8? :D Кстати, это не злорадство, т.к. я не знаю и как с UTF-8 в C/C++ :)

Fakas>Наверняка на C++ Bulder тоже можно тааакого наваять...

Естественно! :D

Fakas>Так что язык ни при чем...

Нет, просто забавно как камень преткновения былых споров, теперь в ином свете выплывает :)

Fakas>Быстро ;) ? Длину паскалевской строки взять наамного быстрее ;).

А скопировать? :D while(*dst++=*src++); против чего у Паскаля? :D Ну и с переносимостью, опять же... Сишные строки что 10 лет назад, что 20 лет назад, что сейчас работают. А Паскаль или даже мой любимый Форт? :)

Fakas>Где то с месяц назад опять был репорт о дырке в инет-ПО "переполнение буфера".

Вот только обычно это переполнение не по строкам а по стекам, на сколько я знаю :)

Fakas>Какие 2 ? Один тип родной и еще поддержка Unicode. Ты их имел в виду ?

Точно помню, что в первых Дельфях было три типа строк. Старый, для совместимости с Паскалём, какой-то свой, новый, и C++-ный, для WinAPI.

[ 07-12-2002: Message edited by: =KRoN= ]
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

в начало страницы | новое
 
Поиск
Поддержка
Поддержи форум!
ЯндексЯндекс. ДеньгиХочу такую же кнопку
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru