Уже давно не greatest. Хорошая идея, но в plan9 её довели до ума.
MY>IBM's System R
Давить заразу надо было пока она была еще маленькая! Теперь ведь и не удавишь распоясавшуюся реляционную братию, везде
посгрес на мыскле сидит и сибейзом погоняет. На роль greatest тут уж скорее DEC RMS может претендовать. БД, которая по совместительству ещё и FS — об этом Oracle только громко и пиаристо мечтает, а ведь всё уже давно было сделано.
MY>Gene-sequencing software at the Institute for Genomic Research
Один маленький красивый алгоритм. В мире тысячи маленьких и безумно красивых алгоритмов. Что теперь, реализацию каждого из низ считать величайшим творением человеческого гения? :-O
MY>IBM System 360 OS
Дайте мне тяжелый предмет. Запущу им в аффтора, если не сможет не заглядывая в документацию отправить файло на печать. На каждый чих по десятку обязательных к упоминанию параметров, никаких умолчаний как принцип дизайна системы — это да, это блин greatest.
MY>Java language
Ой. А это вообще как сюда попало? Ничего нового в поделке нет, ничего замечательного тоже. Java это пример маркетингового гения а никак не программерского. Любая Smalltalk-система в разы красивше и элегантнее будет, а если взять Lisp с машинок Symbolics, то на Жабу вообще нельзя будет без снисходительной усмешки смотреть.
MY>Mosaic browser
Целых шесть раз тег img можно было на одну страницу использовать! Колоссально!!! А ведь технического ограничения не было. Просто так сдизайнили в NCSA.
MY>Sabre system
Я такого даже и не знаю. Значит точно в качель его.
MY>Macintosh OS
Preemptive multitasking. Колоссально. Вокруг в то время было столько восхитительных ОС, а они даже скоммунарить по человечески не смогли.
MY>Excel spreadsheet
Даже комментировать как-то стыдно. Испачкаться боюсь.
И ведь ни TeX, ни Metafont не помянули. DEC VMS как будто и не существовало... В общем, аффтар — ламер. Не жжот.
Здравствуйте, Win2k, Вы писали:
MY>>Любопытная статья: What's The Greatest Software Ever Written?
W> Плохая статья.
W> И ведь ни TeX, ни Metafont не помянули. DEC VMS как будто и не существовало... В общем, аффтар — ламер. Не жжот.
Bell Labs often gets credit for creating the Unix operating system, but Bell never funded its development. In fact, the labs' management knew nothing about it. Bell Labs had committed developers to a multivendor project called Multics that made use of many new ideas for an operating system. But the project fell apart, and a Bell Labs participant, Ken Thompson, decided he wanted a personal version of Multics so he could write shoot-'em-up games, says Feldman (who was the No. 7 developer on the AT&T Unix project and is now president of the Association for Computing Machinery).
In the best tradition of software, Unix was an individual effort that took on a life of its own. Thompson crafted Unix on a Labs reject, a tiny DEC PDP 7 minicomputer with either 16 or 32 Kbytes of memory--Feldman isn't sure which. "Unix was written under great constraints," he says. "There was no memory and no CPU power. You'd be embarrassed today not to have more memory and CPU in your wristwatch."
Thompson designed his stripped-down operating system to move data in blocks or "pages" from a computer's random access memory onto disk, freeing up memory space. When they're needed again, the operating system knows to go to the disk and page them back into memory. This way, a big operating system can run on a small computer with a small amount of memory. His operating system also was a multiuser system. Even the mainframes of the day were limited to a single user, making computing time expensive. Thompson's Uniplexed Information and Computing System (Unics) would let two people use a computer at the same time.
The Computer Science Research Group at the Labs heard about Unics and wanted a copy. At the group's request, Thompson and a colleague, Dennis Ritchie, agreed they would add text formatting to their system, provided they were given a PDP 11/20, a larger machine. Thus, Unix text processing was born of barter. Unics became Unix; was recast in tighter, more portable C code; and was brought to market by AT&T as the Unix System III.
So Unix System III was the greatest piece of software--almost. Bear with me here.
IBM's System R
A research project at the company's Almaden Research Lab in San Jose, Calif., that gave rise to the relational database. In the 1970s, Edgar Codd looked at the math of set theory and conceived a way to apply it to data storage and retrieval. Sets are related elements that together make up an abstract whole. The set of colors blue, white, and red, for example, are related elements that together make up the colors of the French flag. A relational database, using set theory, can keep elements related without storing them in a separate and clearly labeled bin. It also can find all the elements of a set on an impromptu basis while knowing only one unique identifier about the set.
System R and all that flowed from it--DB2, Oracle, Microsoft SQL Server, Sybase, PostgreSQL, MySQL, and others--will have an impact that we're still just beginning to feel. Relational databases can both store data sets about customers and search other sets of data to find how particular customers shop. The data is entered into the database as it's acquired; the database finds relationships hidden in the data. The relational database and its SQL access language let us do something the human mind has found almost impossible: locate a broad set of related data without remembering much about its content, where it's stored, or how it's related. All that's needed is one piece of information, a primary key that allows access to the set. I like System R for its incredible smoothness of operation, its scalability, and its overwhelming usefulness to those who deal with masses of data. It's software with a rare air of mathematical truth about it.
Gene-sequencing software at the Institute for Genomic Research
It isn't a mammoth software system, but "on sheer technical brilliance, it gets 10 out of 10," Morgenthaler says. The institute's sequencing system helped subdivide the task of understanding the DNA makeup of 20,000 human genes. Its breakthrough insights into the human genome and sequencing analysis, plus its ability to recombine subunits of analysis into the whole, "accelerated the science of genomics by at least a decade," Morgenthaler says. We now have the tools to begin tracing the paths of human migration out of Africa. The human genome reveals how minute the genetic differences are between ethnic groups at a time when such information is sorely needed. It gives a scientific basis for how humans can view each other as brothers at a time when we seem in danger of destroying one another. The software will be called on to perform many additional gene sequencing feats; the roots of many diseases and puzzles of heredity remain to be solved. Seldom have great research and great software been more closely intertwined.
IBM System 360 OS Java language Mosaic browser Sabre system Macintosh OS Excel spreadsheet Apollo guidance system Google search rank The Morris worm
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Здравствуйте, MaxxK, Вы писали:
MK>Интересный рейтинг... Но, пожалуй, я бы на "0" место поставил assembler (к собственному стыду, не знаю кто и когда его придумал), потому что если бы не было его, вряд ли бы в конечном итоге из того списка появилось бы хоть что-то кроме Apollo guidance system...
Для лисп или форт машины ассемблер не обязателен
Re[28]: What's The Greatest Software Ever Written?
Lloyd wrote: >> > отджитеный код вычищается или нет? > C>Нет. Он удаляется целиком. > Вычищается или удаляется — эффект один — отсутствие отджитеного кода в > памяти. Так ведь?
Нет. Если вычищается — то имеем отсутствие НЕНУЖНОГО JIT-кода и
байт-кода в памяти. А если удаляется — то имеем отсутствие ВСЕГО JIT-кода.
Здравствуйте, Kluev, Вы писали:
MY>>Java language MY>>Excel spreadsheet
K>В морг!
Ну вот так, двумя словами, и без какого-либо обоснования любой может обга..ть, только ценность замечания от этого отнюдь не возрастает.
Но с другой стороны безусловно не может не радовать небезразличие к данной теме За точку зрения спасибо.
Так вот, если бы ты потрудился выразить свое мнение более развернуто и аргументированно, то, уверен, твой пост был бы гораздо более интересен и полезен окружающим.
ЗЫ: Вообще-то в этой статье меня заинтересовал не столько сам рейтинг, сколько вопрос — как же все-таки, по каким критериям можно "оценивать" ПО. Я, как и автор, имею ввиду конечно не такие стандартные требования, как масштабируемость, надежность, безотказность, безопасность и т.п., предъявляемые к разным продуктам в той или иной степени. Меня интересует некий более абстрактный показатель "качества", который трудно охарактеризовать формально, но который тем не менее существует вне зависимости от нашего субъективного восприятия. Например: в чем секрет "гугла"? Ведь существовали же до него и существуют сейчас другие поисковые системы? Тем не менее именно он является сейчас по сути статус-кво в поисковой индустрии. Поэтому думаю неслучайно google page-rank (сердце google-search) попал в этот список. Сможешь ли ты или кто-то другой назвать причины почему сложилась такая ситуация и почему google page-rank де-факто стал образцом технологии экстра-класса? Смог бы ты лишь при его появлении в недрах лабораторий и до выхода на большой рынок, сказать, что он завоюет такую популярность? На каких критериях ты бы основывался делая такой вывод? Или это просто так фишка легла, сложилась удачная конъюнктура или была удачно проведена маркетинговая компания? В чем секрет успеха? Если бы ты брался за собственный поисковый движок, на какие моменты разработки делал упор? На общую организацию процесса, на применение какой-то уникальной технологии/алгоритма/научного открытия, или может просто стоит сделать упор на качество? Но ведь существует куча продуктов отменного качества, но так и оставшихся во "втором эшелоне", если можно так выразиться.
И еще: вот ты говоришь Java language в морг, а почему? Потому-что он лично тебе не нравится? А то что есть еще миллионы разработчиков, которые разве что не поклоняются ему, ты учел? Мне кажется его попадание в этот список не менее случайно, чем google page-rank. Думаю что его популярность (а именно основываясь на этом показателе в значительной мере можно говорить об успехе продукта) объясняется уж точно не какими-то усилиями Sun в этой области или маркетинговой компанией. Просто разработчики и менеджеры реально почувствовали что Java: 1) может реально сократить их сроки разработки; 2) дает не псевдо-кроссплатформенность, как например .NET; 3) повышает надежность продуктов, разрабатываемых с ее помощью. Говорю это не просто так, а как человек перешедший сначала с Basic на Delphi, затем с Delphi на C++ и лишь затем с C++ на Java. А теперь вопрос — а как мне сделать нечто столь же успешное как Java? На что делать упор? На стабильность работы VM, на языковые фичи, на отсутствие в нем оверхеда, на рекламную компанию, etc.? Можно ли будет после этого гарантировать, что мое детище будет ждать такой же успех и оно так же прочно войдет в умы разработчиков на десятилетия вперед?
Excel это вообще для меня образец того, как надо делать программы, пусть меня хоть двадцать раз закидают помидорами противники windows и microsoft в частности. Так что тут даже сказать ничего не имею.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Здравствуйте, MaxxK, Вы писали:
MK>Здравствуйте, FR, Вы писали:
FR>>Здравствуйте, MaxxK, Вы писали:
FR>>Для лисп или форт машины ассемблер не обязателен MK>Честно говоря, не имею даже представления о них, но могу предполагать, что интерпретаторы должны быть написаны на языке того процессора, на котором они работают (если, конечно, речь идет о физической машине).
Какие еще интерпретаторы? Есть Форт процессоры которые выполняют напрямую фортовский шитый код, ассемблера там нет вообще. Вернее Форт и есть ассемблер для них
Здравствуйте, Cyberax, Вы писали:
>> А все-таки, интересно было бы услышать вкратце какая часть Java делает >> ее Greatest. C>Самого языка — никакая.
Ну так уж прям. Greatest его делает то, что Жава живёт не благодаря, а вопреки. Куча идиотских решений: примитивные типы, неуклюжие анонимные классы, дурацкие проверяемые исключения, теперь кривые дженерики... А гляди ж ты, живёт.
C>Java великим достижением делает прежде всего сложившаяся экоструктура из C>разных библиотек, особенно в области enterprise.
Это точно. При том, это наглядный пример того, что если есть выбор, и нет некоей всеподавляющей силы, то в конце концов вся система становится лучше. Яве повезло в двух вещах, во-первых, что она становилась на ноги во время интернет-бума, во-вторых, всё что придумали сантехники настолько криво, что сторонние библиотеки получили шанс на выживание. А тут уже сработал естественный отбор.
C>Например, IDEA — это самая лучшая из существующих IDE (Eclipse тоже C>вполне себе ничего), полных аналогов которой нет ни в ST, ни в OCaml.
Да, было бы смешно, если бы на Java нельзя было написать даже ИДЕ, и приходилось бы привлекать OCaml или ST. Хотя было и такое время.
C>Или сама JVM — с ней уже ни одна VM не сравнится. В JVM1.6 будут фичи, C>до которых остальным VM еще как до Луны.
Это кстати классно, что через 10 лет у самого-самого появилась нормальная ВМ. .Net в этом плане, безусловно, выглядит печально.
Здравствуйте, Cyberax, Вы писали:
>> Вычищается или удаляется — эффект один — отсутствие отджитеного кода в >> памяти. Так ведь? C>Нет. Если вычищается — то имеем отсутствие НЕНУЖНОГО JIT-кода и C>байт-кода в памяти. А если удаляется — то имеем отсутствие ВСЕГО JIT-кода.
Ок. Сцылки на такое определение в студию.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[30]: What's The Greatest Software Ever Written?
Lloyd wrote: > C>Нет. Если вычищается — то имеем отсутствие НЕНУЖНОГО JIT-кода и > C>байт-кода в памяти. А если удаляется — то имеем отсутствие ВСЕГО JIT-кода. > Ок. Сцылки на такое определение в студию.
Я его только что придумал.
Мне уже надоело повторять одно и то же
Реализация CLR от MS в силу своей сути не может собирать с помощью GC
код классов. Обходы типа "удалить и пересоздать" помогают, но это только
полумеры.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[22]: What's The Greatest Software Ever Written?
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Cyberax, Вы писали:
C>>Нет. GC его не собирает, JIT-код лежит в отдельной куче, которая C>>при необходимости просто ЦЕЛИКОМ удаляется.
L>Это непринцыпиально. Важен сам факт, что отджитеный код может быть убран из памяти.
Это принципиально в том плане, что это не работа GC (garbage collectora) получается. GC должна собирать мусор, тут же описывается сбор всего — и мусора и нет.
Выглядит как обычная заплатка
То есть потребовалось хоть как-то спасать память — сделали как смогли.
Не думаю, что это решение долго проживет — во-первых такой подход будет заметно неэффективным при большом количестве кода, во-вторых он будет сильно мешать последующей перекомпиляции по типу жавовского HotSpot.
Наверняка придут к аккуратной подчистке памяти от ненужного кода как только смогут
Win2k wrote: > C>1) ОЧЕНЬ мощный GC с огромным количеством политик и настроек. Даже > C>.NETовский еще до этого уровня не дорос. > GC в JVM отвратителен. Оверхед на выделение маленьких объектов просто > ужасен (сравниваем с GC в OCaml, а там тоже далеко не шедевр). GC для > классов практически отсутствует как класс, его наличие чисто > номинальное. Короче говоря — полный тормоз.
Чаго? В JVM используется two-instructions alloc — то есть выделение
маленьких объектов занимает всего ДВЕ ассемблерные инструкции (немного
больше на x86, на самом деле ). Так что не надо говорить о чем не знаете.
GC для классов как раз присутствует (отключается опцией -Xnoclassgc), а
в CLR он как раз отсутсвует как класс.
> C>2) HotSpot-компилятор — сперли из Strongtalk'а, но довели до гораздо > C>более высокого уровня. > Вы, пардон, в исходники hotspot смотрели? Если нет — то и не советую, > потом кошмары сниться будут.
Смотрел. Как и в исходники GC (когда интересно стало как они там
политики GC реализовали). Чего там страшного?
> C>3) Оптимизации работы с памятью типа escape analysis как часть HotSpot'а. > MLTon им ещё догонять и догонять.
Тут уже ML обсуждали — использование tagged-памяти для GC убивает всю
производительность.
> C>4) Портабельность на кучу архитектур. > Чисто номинальная. В реале же она оборачивается кучей неразрешимых проблем.
Ну-ка, ну-ка. Перечислите их поименно.
Понятно, на этом форуме появился еще один непризнанный гений Мы, жалкие ламеры, нервно курим в сторонке.
W> Плохая статья.
Несогласие с рейтингом еще не основание делать такой вывод.
MY>>Unix
W> Уже давно не greatest. Хорошая идея, но в plan9 её довели до ума.
Ага, был greatest, а потом перестал. Очень смешно.
Ньютон и Эйнштейн были великими учеными а потом перестали? Нет, несмотря на то, что многие идеи предложенными ими в свое время не выдерживают критики с точки зрения современных физических теорий, их вклад в науку и гениальность никто не аннулировал.
MY>>IBM's System R
W> Давить заразу надо было пока она была еще маленькая! Теперь ведь и не удавишь распоясавшуюся реляционную братию, везде W>посгрес на мыскле сидит и сибейзом погоняет. На роль greatest тут уж скорее DEC RMS может претендовать. БД, которая по совместительству ещё и FS — об этом Oracle только громко и пиаристо мечтает, а ведь всё уже давно было сделано.
Мда, невольно вспоминается хорошая американская поговорка: "если ты такой умный, то почему ты такой бедный?" (и аналогичная русская: "если ты такой тупой ,то почему ты такой богатый?" ). Где этот RMS, а где реляционные базы данных? Сколько людей вне данного форума знают про первый, а сколько используют второй? Не спорю, пройдет время и РБД. И может даже стандартом станет RMS. Но это нисколько не умаляет роль первых. Они оставили свой немаленький след и этого достаточно.
MY>>Gene-sequencing software at the Institute for Genomic Research
W> Один маленький красивый алгоритм. В мире тысячи маленьких и безумно красивых алгоритмов. Что теперь, реализацию каждого из низ считать величайшим творением человеческого гения? :-O
Тут оценивается не громоздкость алгоритмов, если ты не понял.
W>Java это пример маркетингового гения а никак не программерского.
Просто -1
MY>>Excel spreadsheet
W> Даже комментировать как-то стыдно. Испачкаться боюсь.
Когда дочитал досюда, уже не сомневался услышать такой ответ. С чего бы это ?
W> И ведь ни TeX, ни Metafont не помянули. DEC VMS как будто и не существовало...
Аналогично
W>В общем, аффтар — ламер. Не жжот.
А ты видимо падонок, это наверное круто, да?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Здравствуйте, Master Yoda, Вы писали:
MY>Здравствуйте, Kluev, Вы писали:
MY>>>Java language MY>>>Excel spreadsheet
K>>В морг!
MY>Ну вот так, двумя словами, и без какого-либо обоснования любой может обга..ть, только ценность замечания от этого отнюдь не возрастает.
MY>Но с другой стороны безусловно не может не радовать небезразличие к данной теме За точку зрения спасибо.
MY>Так вот, если бы ты потрудился выразить свое мнение более развернуто и аргументированно, то, уверен, твой пост был бы гораздо более интересен и полезен окружающим.
Оценивать качество програм — это вообще пустое занятие. Слишком все субьективно, к тому-же во многих случаях побеждает отнюдь не качество и технология, а бизнес. Как например в случае с джава — типичный пример победы бизнеса нед технологией. Более того люди ленивые и часто побеждает то решение готорое только создает иллюзию простоты, но в действительности простым не является.
MaxxK wrote: > FR>Для лисп или форт машины ассемблер не обязателен > Честно говоря, не имею даже представления о них, но могу предполагать, > что интерпретаторы должны быть написаны на языке того процессора, на > котором они работают (если, конечно, речь идет о физической машине).
Есть машины, для которых Явавский байт-код — это машинный код. Там почти
все инструкции реализованы в железе.
Здравствуйте, MaxxK, Вы писали:
MK>В принципе, с моей точки зрения, ассемблер — это язык, который может преобразовываться в опкоды процессора практически без преобразований (одна инструкция языка преобразуется лишь в одну инструкцию процессора и любая программа, написанная на таком языке, может однозначно проходить преобразование в обе стороны (условно назовем это ассемблингом/дизассемблингом)).
Здравствуйте, Andrei N.Sobchuck, Вы писали:
W>>>Java это пример маркетингового гения а никак не программерского.
MY>>Просто -1
ANS>Вообще то, его заметки спорные, но это утверждение очевидно истинно.
Сходи на соотв. форум, там тебе объяснят почему ты не прав.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Интересный рейтинг... Но, пожалуй, я бы на "0" место поставил assembler (к собственному стыду, не знаю кто и когда его придумал), потому что если бы не было его, вряд ли бы в конечном итоге из того списка появилось бы хоть что-то кроме Apollo guidance system...
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, MaxxK, Вы писали:
FR>Для лисп или форт машины ассемблер не обязателен
Честно говоря, не имею даже представления о них, но могу предполагать, что интерпретаторы должны быть написаны на языке того процессора, на котором они работают (если, конечно, речь идет о физической машине).
Здравствуйте, Cyberax, Вы писали:
C>Есть машины, для которых Явавский байт-код — это машинный код. Там почти C>все инструкции реализованы в железе.
Следовательно, для такой машины ассемблер — инструкции байт-кода. В принципе, с моей точки зрения, ассемблер — это язык, который может преобразовываться в опкоды процессора практически без преобразований (одна инструкция языка преобразуется лишь в одну инструкцию процессора и любая программа, написанная на таком языке, может однозначно проходить преобразование в обе стороны (условно назовем это ассемблингом/дизассемблингом)). Хотя, конечно, для машин, исполняющих байт-код (будь то Java, или MSIL — пару лет назад читал где-то о таком процессоре) утверждение "ассемблер — основа всех основ" довольно беспочвенно.
Здравствуйте, FR, Вы писали:
FR>Какие еще интерпретаторы? Есть Форт процессоры которые выполняют напрямую фортовский шитый код, ассемблера там нет вообще. Вернее Форт и есть ассемблер для них
Вот-вот, в этом и есть основная мысль. Можно (теоретически) сделать процессор, который будет принимать в качетсве программы исходный текст BASIC, и тогда BASIC это и есть ассемблер для этой машины. Даже если для нее будет написан компилятор C — все равно выходная программа будет на BASIC. Суть ассемблера — промежуточный язык между процессором и программистом, тонкая пленка. И именно поэтому он — The Greatest Software Ever Written.
Здравствуйте, MaxxK, Вы писали:
MK>Здравствуйте, FR, Вы писали:
FR>>Какие еще интерпретаторы? Есть Форт процессоры которые выполняют напрямую фортовский шитый код, ассемблера там нет вообще. Вернее Форт и есть ассемблер для них MK>Вот-вот, в этом и есть основная мысль. Можно (теоретически) сделать процессор, который будет принимать в качетсве программы исходный текст BASIC, и тогда BASIC это и есть ассемблер для этой машины. Даже если для нее будет написан компилятор C — все равно выходная программа будет на BASIC. Суть ассемблера — промежуточный язык между процессором и программистом, тонкая пленка. И именно поэтому он — The Greatest Software Ever Written.
Здравствуйте, AndrewVK, Вы писали:
AVK>Сходи на соотв. форум, там тебе объяснят почему ты не прав.
А все-таки, интересно было бы услышать вкратце какая часть Java делает ее Greatest.
Сам на ней много пишу и по-моему она не дотягивает до Smalltalk и Caml(оба появились задолго до Java) ни как язык ни как VM.
прежде чем понять рекурсию, необходимо понять рекурсию.
граммофон wrote: > AVK>Сходи на соотв. форум, там тебе объяснят почему ты не прав. > А все-таки, интересно было бы услышать вкратце какая часть Java делает > ее Greatest.
Самого языка — никакая.
Java великим достижением делает прежде всего сложившаяся экоструктура из
разных библиотек, особенно в области enterprise.
Например, IDEA — это самая лучшая из существующих IDE (Eclipse тоже
вполне себе ничего), полных аналогов которой нет ни в ST, ни в OCaml.
Потом есть JBoss — с его фичами типа распределенных транзакций на графах
обычных объектов.
Или сама JVM — с ней уже ни одна VM не сравнится. В JVM1.6 будут фичи,
до которых остальным VM еще как до Луны.
Здравствуйте, Cyberax, Вы писали:
C>Или сама JVM — с ней уже ни одна VM не сравнится. В JVM1.6 будут фичи, C>до которых остальным VM еще как до Луны.
Если можно, отсюда поподробнее. Какие текущие фичи делают JVM особенной и какие сделают еще более?
Остальные пункты конечно перпендикулярны Java как таковой.
Тем более что по части IDE со Smalltalk нелегко тягаться в силу его рефлексивной image-природы.
прежде чем понять рекурсию, необходимо понять рекурсию.
граммофон wrote: > C>Или сама JVM — с ней уже ни одна VM не сравнится. В JVM1.6 будут фичи, > C>до которых остальным VM еще как до Луны. > Если можно, отсюда поподробнее. Какие текущие фичи делают JVM особенной > и какие сделают еще более?
1) ОЧЕНЬ мощный GC с огромным количеством политик и настроек. Даже
.NETовский еще до этого уровня не дорос.
2) HotSpot-компилятор — сперли из Strongtalk'а, но довели до гораздо
более высокого уровня.
3) Оптимизации работы с памятью типа escape analysis как часть HotSpot'а.
4) Портабельность на кучу архитектур.
> Остальные пункты конечно перпендикулярны Java как таковой.
Нет. Их ортогональность — это как раз следствие развития языка. Такой
экосистемы нет больше ни для какого другого языка, даже для .NET.
> Тем более что по части IDE со Smalltalk нелегко тягаться в силу его > рефлексивной image-природы.
Да элементарно. Ни одна ST-IDE не дотягивает до IDEA, и рефлексивная
природа здесь непричем.
C>1) ОЧЕНЬ мощный GC с огромным количеством политик и настроек. Даже C>.NETовский еще до этого уровня не дорос.
GC к VM не имеет никакого отношения. Его можно поменять или вообще отключить и VM не заметит.
У JVM их вообще несколько.
Кроме того чем это в JVM более настраиваемо, чем Caml'овский GC или GС в VisualWorks?
И кстати, generational GC, которым Java и .NET так гордятся впервые был реализован в Smalltalk-системе в восьмидесятых и в Caml VM в 91 году.
Но повторю — это к VM все не относится. В принципе, я могу взять GC от JVM и прикрутить его к Smalltalk системе с незначительными правками.
C>2) HotSpot-компилятор — сперли из Strongtalk'а, но довели до гораздо C>более высокого уровня. C>3) Оптимизации работы с памятью типа escape analysis как часть HotSpot'а.
Это именно что оптимизации — к VM не относится. Оптимизировать и добавлять JIT можно в любую VM.
И кстати если вообще без оптимизаций, то Caml VM (ZAM) гораздо быстрее JVM. Это вообще была первая VM, которая без всяких оптимизаций по скорости смогла приблизиться к native коду (Ну это если не считать некоторых смецифических форт-машин).
C>4) Портабельность на кучу архитектур.
Это вообще непонятно к чему. Портабельность опять же не является свойством VM, да и не то, чтобы Java была потрабельнее большинства языков с VM.
>> Остальные пункты конечно перпендикулярны Java как таковой. C>Нет. Их ортогональность — это как раз следствие развития языка. Такой C>экосистемы нет больше ни для какого другого языка, даже для .NET. >> Тем более что по части IDE со Smalltalk нелегко тягаться в силу его >> рефлексивной image-природы. C>Да элементарно. Ни одна ST-IDE не дотягивает до IDEA, и рефлексивная C>природа здесь непричем.
После общения с VisualWorks и Dolphin Smalltalk у меня такое впечатление отсутствует.
В IDEA я разумеется тоже работал, хотя для большинства задач предпочитаю Eclipse (он удобнее когда в проекте появляются другие языки).
прежде чем понять рекурсию, необходимо понять рекурсию.
FR>Угу только Форт тяжело назвать тонкой пленкой
Если процессор выполняет фортовский код, то форт — это и есть тонкая пленка. Если бы мы не могли делать полиэтиленовую пленку (и пленку из любого другого материала) тоньше, чем, скажем, 0.5 мм, то пленка толщиной 0.6 мм для нас все равно была бы тонкой.
Здравствуйте, Cyberax, Вы писали:
>> Если можно, отсюда поподробнее. Какие текущие фичи делают JVM особенной >> и какие сделают еще более? C>1) ОЧЕНЬ мощный GC с огромным количеством политик и настроек. Даже C>.NETовский еще до этого уровня не дорос.
GC в JVM отвратителен. Оверхед на выделение маленьких объектов просто ужасен (сравниваем с GC в OCaml, а там тоже далеко не шедевр). GC для классов практически отсутствует как класс, его наличие чисто номинальное. Короче говоря — полный тормоз.
C>2) HotSpot-компилятор — сперли из Strongtalk'а, но довели до гораздо C>более высокого уровня.
Вы, пардон, в исходники hotspot смотрели? Если нет — то и не советую, потом кошмары сниться будут.
C>3) Оптимизации работы с памятью типа escape analysis как часть HotSpot'а.
MLTon им ещё догонять и догонять.
C>4) Портабельность на кучу архитектур.
Чисто номинальная. В реале же она оборачивается кучей неразрешимых проблем.
Win2k wrote: > C>Или сама JVM — с ней уже ни одна VM не сравнится. > В JVM даже хвостовых вызовов и оптимизации табличных переходов нет. А в > CLI есть. > Значит JVM никак не greatest, бывает и лучше
Хвостовые вызовы обещали в 1.6 (вместе с escape analysis'ом), насчет
табличных переходов не смотрел.
Так что JVM выигрывает по совокупности. Например, CLR не может собирать
байт-код и JIT-код сборок, а JVM спокойно может собирать ненужные классы
(что очень не вредит динамическим языкам).
Здравствуйте, Mamut, Вы писали:
C>>Или сама JVM — с ней уже ни одна VM не сравнится. В JVM1.6 будут фичи, C>>до которых остальным VM еще как до Луны. M>Ну, не знаю. Если бы в ней были бы такие же легковесные процессы, как в Эрланге... А так — ничего особенного
Они уже были несколько раз почти реализованы Например, в Sun JVM1.3 в Линуксе использовались "зеленые потоки", а в JRockit JVM они до сих пор работают.
Ну а если появятся полноценные замыкания, то и до легких потоков уже недалеко.
Здравствуйте, Cyberax, Вы писали:
C>Так что JVM выигрывает по совокупности. Например, CLR не может собирать C>байт-код и JIT-код сборок, а JVM спокойно может собирать ненужные классы C>(что очень не вредит динамическим языкам).
.Net Compact Framework может.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: What's The Greatest Software Ever Written?
Lloyd wrote: > C>Так что JVM выигрывает по совокупности. Например, CLR не может собирать > C>байт-код и JIT-код сборок, а JVM спокойно может собирать ненужные классы > C>(что очень не вредит динамическим языкам). > .Net Compact Framework может.
А можно ссылки? Поиск в Гугле ничего не дал.
В .NET FW 2 единственное добавление — это возможность сборки мусорных
делегатов.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[11]: What's The Greatest Software Ever Written?
C>>>Или сама JVM — с ней уже ни одна VM не сравнится. В JVM1.6 будут фичи, C>>>до которых остальным VM еще как до Луны. M>>Ну, не знаю. Если бы в ней были бы такие же легковесные процессы, как в Эрланге... А так — ничего особенного C>Они уже были несколько раз почти реализованы Например, в Sun JVM1.3 в Линуксе использовались "зеленые потоки", а в JRockit JVM они до сих пор работают.
C>Ну а если появятся полноценные замыкания, то и до легких потоков уже недалеко.
In response to low memory conditions, .NET Compact Framework will
release all of the JIT’d code and return this memory to the operating
system. For planning purposes, assume that the entire JIT’d code
space is backed by physical memory while the application is the
foreground. When the program moved into the background, .NET Compact
Framework released all the JIT’d code and returns the physical memory
back to the operating system.
То есть GC не собирает мусорные классы/сборки, а просто может убирать
весь JIT-код.
GC в Sun JVM умеет собирать отдельные ненужные классы и ненужный JIT-код.
> C>В .NET FW 2 единственное добавление — это возможность сборки мусорных > C>делегатов. > Делегаты и раньше прекрасно собирались. Добавили сборку кода, > сгенеренного через DynamicMethod.
Это я и имел в виду.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[13]: What's The Greatest Software Ever Written?
Lloyd wrote: > C>GC в Sun JVM умеет собирать отдельные ненужные классы и ненужный JIT-код. > Пардон, а что конкретно вы имеете в виду, когда говорите о сборке > отдельных классов?
Вот такой пример:
public class Something
{
public Object anything;
};
....
//Здесь у нас загрузится (посредством ClassLoader'а)
//байт-код класса Something. В Java нет сборок, поэтому
//каждый класс загружается отдельно.
Something smth=new Something();
//А теперь у нас загрузится класс Anything
smth.anything=new Anything();
//Все, после этой строки класс Anything нигде больше
//не используется. Он является мусором и может быть подобран GC.
smth.anything=null;
То есть сам код классов является предметом GC. Также GC умеет собирать и
результаты HotSpot-компиляции. Это достаточно важно, так как один и тот
же байт-код при изменении условий может быть перекомпилирован в JIT-код
несколько раз (в .NET JIT-компиляция происходит только один раз).
В Java это еще очень хорошо сочетается с системой classloader'ов, про
которую еще можно долго писать. А AppDomain'ы я считаю весьма неудачной
вещью.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[15]: What's The Greatest Software Ever Written?
Здравствуйте, Cyberax, Вы писали:
C>То есть сам код классов является предметом GC. Также GC умеет собирать и C>результаты HotSpot-компиляции. Это достаточно важно, так как один и тот C>же байт-код при изменении условий может быть перекомпилирован в JIT-код C>несколько раз (в .NET JIT-компиляция происходит только один раз).
Не дам ссылок, но мне кажется, я где-то читал, что байт-код (msil) в Compact Framework-е тоже может быть выгружен.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: What's The Greatest Software Ever Written?
Lloyd wrote: > C>То есть сам код классов является предметом GC. Также GC умеет собирать и > C>результаты HotSpot-компиляции. Это достаточно важно, так как один и тот > C>же байт-код при изменении условий может быть перекомпилирован в JIT-код > C>несколько раз (в .NET JIT-компиляция происходит только один раз). > Не дам ссылок, но мне кажется, я где-то читал, что байт-код (msil) в > Compact Framework-е тоже может быть выгружен.
Я читал статью разрабочтика MS в которой как раз обсуждалось почему нет
GC для классов. Там писалось, что из-за большей гранулярности в CLR
(минимальной единицей является сборка) в JIT-коде намного сложнее делать
такое же разделение, как и в Sun JVM. Поэтому сборки не собираются
мусорщиком и не могут быть выгружены.
Единственный способ сделать выгрузку кода — создать для него отдельный
AppDomain и выгружать его в случае необходимости целиком. Но вызовы
между AppDomain'ами очень медленные из-за маршаллинга.
Поэтому мне classloader'ы и нравятся больше — все загруженные классы в
Java работают в одном пространстве без всяких маршаллеров, а изоляция
получается примерно как у AD. Вдобавок, classloader'ы еще и образуют
дерево (с кучей интересных и полезных эффектов).
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[17]: What's The Greatest Software Ever Written?
Здравствуйте, Cyberax, Вы писали:
C>Я читал статью разрабочтика MS в которой как раз обсуждалось почему нет C>GC для классов. Там писалось, что из-за большей гранулярности в CLR C>(минимальной единицей является сборка) в JIT-коде намного сложнее делать C>такое же разделение, как и в Sun JVM. Поэтому сборки не собираются C>мусорщиком и не могут быть выгружены.
Ты уверен, что статья была про Compact Framework?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[18]: What's The Greatest Software Ever Written?
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Cyberax, Вы писали:
C>>Я читал статью разрабочтика MS в которой как раз обсуждалось почему нет C>>GC для классов. Там писалось, что из-за большей гранулярности в CLR C>>(минимальной единицей является сборка) в JIT-коде намного сложнее делать C>>такое же разделение, как и в Sun JVM. Поэтому сборки не собираются C>>мусорщиком и не могут быть выгружены.
L>Ты уверен, что статья была про Compact Framework?
Т.е. ты хочешь сказать, что CLR там совершенно другой?
Re[19]: What's The Greatest Software Ever Written?
Lloyd wrote: > C>Я читал статью разрабочтика MS в которой как раз обсуждалось почему нет > C>GC для классов. Там писалось, что из-за большей гранулярности в CLR > C>(минимальной единицей является сборка) в JIT-коде намного сложнее делать > C>такое же разделение, как и в Sun JVM. Поэтому сборки не собираются > C>мусорщиком и не могут быть выгружены. > Ты уверен, что статья была про Compact Framework?
Нет, про обычный. Я не думаю, что в CF что-то сильно поменяется —
ограничения те же самые, что и в обычном FW. Поэтому и такое решение —
просто выбросить весь JIT-код в случае необходимости, так как определить
какие части кода еще нужны весьма затруднительно.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[20]: What's The Greatest Software Ever Written?
Lloyd wrote: > L>>Ты уверен, что статья была про Compact Framework? > К>Т.е. ты хочешь сказать, что CLR там совершенно другой? > Конечно другой. Например, gc, в отличие от полного фреймворка, может > собирать отджиттеный код.
Нет. GC его не собирает, JIT-код лежит в отдельной куче, которая
при необходимости просто ЦЕЛИКОМ удаляется.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[21]: What's The Greatest Software Ever Written?
Lloyd wrote: > C>Нет. GC его не собирает, JIT-код лежит *в отдельной куче*, которая > C>при необходимости просто ЦЕЛИКОМ удаляется. > Это непринцыпиально. Важен сам факт, что отджитеный код может быть убран > из памяти.
Это принципиально.
Во-первых, сами сборки остаются в памяти (а это тоже место).
Во-вторых, для обычных десктопных приложений это будет бесполезно. В
.NET CF такой метод используется для освобождения памяти для
background-приложений, когда приложение снова активируется — код снова
JIT'ится. Для обычных приложений такое не пройдет — объем кода в них
обычно намного больше, чем в .NET CF и нет четко выделенного "спящего"
состояния.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[23]: What's The Greatest Software Ever Written?
Здравствуйте, Cyberax, Вы писали:
C>Это принципиально.
C>Во-первых, сами сборки остаются в памяти (а это тоже место).
C>Во-вторых, для обычных десктопных приложений это будет бесполезно. В C>.NET CF такой метод используется для освобождения памяти для C>background-приложений, когда приложение снова активируется — код снова C>JIT'ится. Для обычных приложений такое не пройдет — объем кода в них C>обычно намного больше, чем в .NET CF и нет четко выделенного "спящего" C>состояния.
Так в чем все-таки принцыпиальность — то? Факт того, что память очищается от отджитеного кода, остается фактом, не так ли?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[24]: What's The Greatest Software Ever Written?
Lloyd wrote: > C>Во-вторых, для обычных десктопных приложений это будет бесполезно. В > C>.NET CF такой метод используется для освобождения памяти для > C>background-приложений, когда приложение снова активируется — код снова > C>JIT'ится. Для обычных приложений такое не пройдет — объем кода в них > C>обычно намного больше, чем в .NET CF и нет четко выделенного "спящего" > C>состояния. > Так в чем все-таки принцыпиальность — то? Факт того, что память > очищается от отджитеного кода, остается фактом, не так ли?
Принципиальной является цена этой очистки и невозможность выгрузки
байт-кода.
Многие динамические языки для CLR/JVM используют генерацию байт-кода на
лету. В этом случае байт-код будет постоянно накапливаться. У меня лично
получалось случайно сделать OOM из-за программы с метаклассами на Ruby.NET.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[25]: What's The Greatest Software Ever Written?
Lloyd wrote: > C>Принципиальной является цена этой очистки и невозможность выгрузки > C>байт-кода. > отджитеный код вычищается или нет?
Нет. Он удаляется целиком.
Я точно так же могу сказать, что в С++ есть сборщик мусора — ведь если
мы прибьем процесс, то вся занимаемая им память очистится. Чем не
сборщик мусора?
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[31]: What's The Greatest Software Ever Written?
Здравствуйте, Cyberax, Вы писали:
>> C>Нет. Если вычищается — то имеем отсутствие НЕНУЖНОГО JIT-кода и >> C>байт-кода в памяти. А если удаляется — то имеем отсутствие ВСЕГО JIT-кода. >> Ок. Сцылки на такое определение в студию. C>Я его только что придумал.
C>Мне уже надоело повторять одно и то же
Я просто пытаюсь донести до тебя что удаления — это частный случай очистки. Но как-то безуспешно. Поэтому давай закроем эту тему.
Andrei N.Sobchuck wrote: >> > А все-таки, интересно было бы услышать вкратце какая часть Java делает >> > ее Greatest. > C>Самого языка — никакая. > Ну так уж прям. Greatest его делает то, что Жава живёт не благодаря, а > вопреки. Куча идиотских решений: примитивные типы, неуклюжие анонимные > классы, дурацкие проверяемые исключения, теперь кривые дженерики... А > гляди ж ты, живёт.
Ну не знаю, по дизайн Java специально сделана примитивной почти до
минимума.
> C>Java великим достижением делает прежде всего сложившаяся экоструктура из > C>разных библиотек, особенно в области enterprise. > Это точно. При том, это наглядный пример того, что если есть выбор, и > нет некоей всеподавляющей силы, то в конце концов вся система становится > лучше. Яве повезло в двух вещах, во-первых, что она становилась на ноги > во время интернет-бума, во-вторых, всё что придумали сантехники > настолько криво, что сторонние библиотеки получили шанс на выживание. А > тут уже сработал естественный отбор.
Скорее сантехники просто ничего особого не придумали Даже утиллиты
типа Ant'а были придуманы изначально вне Sun'а. И лучшие IDE тоже
писались не солнцевской братвой.
> C>Или сама JVM — с ней уже ни одна VM не сравнится. В JVM1.6 будут фичи, > C>до которых остальным VM еще как до Луны. > Это кстати классно, что через 10 лет у самого-самого появилась > нормальная ВМ.
Ну лучше поздно чем никогда Хотя уже с версии 1.4 Sun JVM уже была
достаточно продвинутой.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Ну так уж прям. Greatest его делает то, что Жава живёт не благодаря, а вопреки. Куча идиотских решений: примитивные типы, неуклюжие анонимные классы, дурацкие проверяемые исключения, теперь кривые дженерики... А гляди ж ты, живёт.
Ну тоды Visual Basic и Linux по таким критериям реально the greatest ever.
Win2k wrote: > ANS>Ну так уж прям. Greatest его делает то, что Жава живёт не благодаря, > а вопреки. Куча идиотских решений: примитивные типы, неуклюжие анонимные > классы, дурацкие проверяемые исключения, теперь кривые дженерики... А > гляди ж ты, живёт. > Ну тоды Visual Basic и Linux по таким критериям реально the greatest ever.
VB — это лидер по простоте программирования. Там все ОЧЕНЬ тупо и
примитивно, так что даже мартышка может написать простую программу.
Правда, с простотой там уж слишком перегнули палку — так что от не The
Greatest.
А ядро Linux'а — сейчас лучшее по множеству параметров.
Здравствуйте, MaxxK, Вы писали:
MK>Суть ассемблера — промежуточный язык между процессором и программистом, тонкая пленка. И именно поэтому он — The Greatest Software Ever Written.
Какой-то неочевидный вывод. С чего бы это какая-то там тонкая пленочка будет "The Greatest Software"?
Нет, нет, и еще раз нет. The Greatest Software Ever Written — это программное обеспечение Space Shuttle, написанное на DSL, который в свою очередь был написан на диалекте такого небезизвестного вам мегаязыка как PL/I.
Если не ошибаюсь, самое дорогое в поддержке и сопровождении ПО своего времени. А может это и сейчас так.
Правда и ошибок в нем было довольно мало. Для своего времени. А может и для нашего тоже.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Здравствуйте, Master Yoda, Вы писали:
MY>Понятно, на этом форуме появился еще один непризнанный гений Мы, жалкие ламеры, нервно курим в сторонке.
не исключено, кстати
MY>>>Unix W>> Уже давно не greatest. Хорошая идея, но в plan9 её довели до ума. MY>Ага, был greatest, а потом перестал. Очень смешно.
greatest -- переходящее знамя. и таки да, план9 -- greatest. много развитее.
имхо -1.
MY>>>IBM's System R W>> Давить заразу надо было пока она была еще маленькая! Теперь ведь и не удавишь распоясавшуюся реляционную братию, везде W>>посгрес на мыскле сидит и сибейзом погоняет. На роль greatest тут уж скорее DEC RMS может претендовать. БД, которая по совместительству ещё и FS — об этом Oracle только громко и пиаристо мечтает, а ведь всё уже давно было сделано. MY>Мда, невольно вспоминается хорошая американская поговорка: "если ты такой умный, то почему ты такой бедный?" (и аналогичная русская: "если ты такой тупой ,то почему ты такой богатый?" ). Где этот RMS, а где реляционные базы данных? Сколько людей вне данного форума знают про первый, а сколько используют второй? Не спорю, пройдет время и РБД. И может даже стандартом станет RMS. Но это нисколько не умаляет роль первых. Они оставили свой немаленький след и этого достаточно.
мы оцениваем идею или популярность? если популярность, то greatest не юних, а вянда.
-1.
W>>Java это пример маркетингового гения а никак не программерского. MY>Просто -1
спорный вопрос
за что -1?
.net -- пример гения? а лисп? а тикль?
MY>>>Excel spreadsheet W>> Даже комментировать как-то стыдно. Испачкаться боюсь. MY>Когда дочитал досюда, уже не сомневался услышать такой ответ. С чего бы это ?
и между тем он прав.
W>> И ведь ни TeX, ни Metafont не помянули. DEC VMS как будто и не существовало... MY>Аналогично
-1. и тех и прочее -- очень хорошая весч. тех имхо до сих пор никто не переплюнул.