Несколько работников из компании Google, принимающие участие в разработке CPython, объявили (http://code.google.com/p/unladen-swallow/wiki/Release2009Q2) о выпуске новой версии высокопроизводительной экспериментальной реализации интерпретатора языка Python - Unladen Swallow (http://code.google.com/p/unladen-swallow), в которой производится обкатка некоторых идей по существенному увеличению производительности.
Как значительный шаг вперёд, отмечается переход со стековой виртуальной машины интерпретатора на регистровую (LLVM), что позволило подключить к работе JIT-компилятор, на лету транслирующий наиболее часто используемые функции языка в исполняемый код. И хотя разработчики пока не рекомендуют использование данного ПО в промышленной эксплуатации, оно уже проходит все стандартные тесты на совместимость (http://code.google.com/p/unladen-swallow/wiki/Testing) с базовой реализацией языка, что позволяет использовать Unladen Swallow в таких проектах, как Twisted, Django, NumPy и Swig.URL: http://lwn.net/Articles/341338/rss
Новость: http://www.opennet.me/opennews/art.shtml?num=22611
Чувствую близится время, когда понятия "язык программирования" и питон станут синонимами. День ото дня становится всё лучше, язык дышит, в отличие от Java и C#, которые с самого начала были "придавлены" мощью мегакорпораций. Подобная ситуация уже была давным давно, но на серваках, где поделия Microsoft и Sun были однозначно лучше, но стандартом де-факто стал убогий php...
Бред это. Python ничем не лучше остальных языков, и свои косяки у него есть.Вот что реально происходит и радует - так это заворот всех языков на ограниченное множество виртуальных машин. Jython, JRuby, Rhino, Groovy, Quercus, Closure, Scala - это для JVM. C, C++, D, Fortran, Ada, теперь вот Python - это для LLVM. Parrot с немеряным набором языков, хотя он еще слишком сырой. Ну mono, не к ночи будь помянута.
Все потуги с настоящими виртульными машинами выглядят малоинтересно, потому что в результате получается то, за что заслуженно ругают жаву. А вот LLVM выглядит действительно перспективно, позволяя в теории получить нативные бинарники из любых языков, даже полностью динамических (да, даже с eval) - в результате скоростные характеристики языков отойдут на второй план и можно будет писать быстрый софт на чем угодно - это во первых. Во-вторых, вероятно останется возможность запускать даже изначально нативный софт на виртуальной машине (либо запускать изначально нативный софт скомпиленный в байткод опять таки нативно с ahead of time compiler), и реализовать идеи, заложенные в Microsoft Singularity, не переписывая софт.
В общем, пристально следим за развитием LLVM и ждем Java фронтенда.
> и реализовать идеи, заложенные в Microsoft Singularityне ради флейма, а какие там новые идеи?
>> и реализовать идеи, заложенные в Microsoft Singularity
>
>не ради флейма, а какие там новые идеи?тотальный managed код. Даже на уровне драйверов железа.
>тотальный managed код. Даже на уровне драйверов железана такую авантюру - в хорошем смысле - способна только компания уровня microsoft
С eval никакие бинарники невозможны, т.к. строку для вычисления можно формировать динамически, а значит компилятор никогда не сможет сказать какие модули надо будет запихнуть в выполняемый файл.
Хм... во-первых, согласитесь, что обычно нет задачи выполнения совсем уже произвольного кода. А для ожидаемого набора компилятору можно подсказать какие модули нужны. Типа как в cx_Freeze (средство для выпуска экзешки из python).
Во-вторых - обсуждаемый проект это как я понял более-менее традиционный интерпретатор с JIT, т.е. среда исполнения включает в себя и компилятор из исходного текста в код виртуальной машины, и компилятор из кода виртуальной машины в машинный код.
Компилятор, подключенный в виде библиотеки, разумеется. О том и речь.
> Чувствую близится время, когда понятия "язык программирования" и питон станут синонимами.IMHO таки C-подобный синтакс с фигурными скобками для объектно-процедурных языков идеал. Начинал я, увы, с BASIC, имел дело с разными языками вообще, но самый естественный и красивый вариант синтаксиса это C/C++/Java/C#/PHP, совершенно не хочется ничего другого, особенно учёта компилятором форматирования кода.
Ох уж эти холивары...Меня например, бесят конструкции вида
class A{
function doo {a=b+c;}
};
function{
while(cond){
foo();}}Каждому своё.
Каждому своё - 100%.А не бесит ли то, что каждый, кто хочет, изобретает своё и втюхивает нам очередной велосипед. Вот автомобили, например, уже все пришли к среднестатистическим 4 колёсам, двигателю спереди, круглому рулю, поворачивающему передние колёса, и обтекаемому дизайну. А тут понадобилось вводить реально бесящую (кого-то) систему "принудительного форматирования" кода, заменять ключевые слова, причём как-то (имхо) совсем невпопад - один def чего стоит - и пр.
Лично я считаю, что прогресс придёт к тому, что будет проще и эффективнее всем (в пределах отношения Парето - 80%) писать на одном языке, с его компилируемой/транслируемой/скриптовой разновидностями, ну а 20% оставшихся фанатов никто не запретит писать на чём угодно.Питон после С/жава/жаваскрипта и тп - это что-то вроде праворульного бульдозера с гусеничным приводом. Конечно, это хорошо, что есть бульдозер. Но пусть на нём ездят бульдозеристы. Имхо.
При таких возгласах я боюсь дополнять и тем более возражать.
И всё таки Ruby мне намного более симпатичен.
Насчёт C#, Java --- +1
Лучше б в Dalvik VM сделали JIT компиляцию. Потому что джаву "заслужено" ругают те кто до сих пор не сподобился узнать о таковой во всех приличных JVM (у SUN она называется HotSpot http://java.sun.com/javase/technologies/hotspot/ It includes dynamic compilers that adaptively compile Java bytecodes into optimized machine instructions)И второе - языки с динамической типизацией не вытеснят языки с статической типизацией. Поэтому нелепость ставить в конкуренты Java и C# - Python, Ruby, ...,
> Потому что джаву "заслужено" ругают те кто до сих пор не сподобился узнать о таковой во всех приличных JVMНе говорите глупостей.
>Не говорите глупостей.Глупость ругать джаву образца конца 90ых, начала этого века :)
А вот результаты Computer Language Benchmarks Game
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all...
где хорошо видно, как джава окружена настоящими нативными компиляторами.
> Глупость ругать джаву образца конца 90ых, начала этого века :)Не стройте себе иллюзий. Во-первых с чего вы придумали о 90х? У многих это поделие стоит самых последних версий, и они имеют неудовольствие наблюдать его тормознутость и неуемное потребление памяти. Напомните-ка, где был тот момент, когда вышла новая версия, и сотни людей написали в блогах: "о, вот теперь это можно использовать наравне с нативным софтом"?
> А вот результаты Computer Language Benchmarks Game
Детский сад. Кому нужна ваша числодробилка из десятка инструкций, которую вообще очень сложно неоптимально скомпилировать в нативный код? Возьмите машинку типа пня-4 с 512MB памяти, откройте любое приложение на java и аналог на, скажем, Qt4 и сравните потребление памяти и отзывчивость интерфейса. С появлением java софта на десктопе он начинает впервые за долгие годы использовать свап. Действительно такое чувство, что попадаешь в 90-е.
>Не стройте себе иллюзий.Это как раз вчерашние пэхаписты и несдающиеся сишники строят иллюзии :)
>Во-первых с чего вы придумали о 90х? У
>многих это поделие стоит самых последних версий,Первая версия HotSpot JVM потому что была выпущена в 99ом
>и они имеют неудовольствие
>наблюдать его тормознутость и неуемное потребление памяти.По сравнению с чем? С питоном? Или с С++? Ну так пусть попишут на С++, или закажут - нам только на С++.
Неуемное же потребление памяти - настраивается. Можно конечно гонять сборщик мусора и загрузчик классов, но тут уж выбирайте, потерять в скорости или памяти.
>Напомните-ка, где был тот
>момент, когда вышла новая версия, и сотни людей написали в блогах:
>"о, вот теперь это можно использовать наравне с нативным софтом"?Система с сборщиком мусора, да плюс с технологией создания GUI независимого от ОСи - и не может полностью тягаться с нативным софтом, в котором ручное распределение памяти, и прямые вызовы АPI оси.
Но напомните, а то я вот тоже запятовал, чего это народ массово отказался от С/С++ и пересел на перлы с пхп? Не иначе, ради быстродействия программ и экономии ОЗУ :)
>Детский сад. Кому нужна ваша числодробилка из десятка инструкций, которую вообще очень
>сложно неоптимально скомпилировать в нативный код?Детский сад, это когда студенты-вэбщики берутся рассуждать о софтверных корпорациях и серьезном ПО.
>Возьмите машинку типа пня-4 с
>512MB памяти, откройте любое приложение на java и аналог на, скажем,
>Qt4 и сравните потребление памяти и отзывчивость интерфейса.Ох уж этот Qt... оскомина уже на форумах от него :) Все ждем-с, когда на нем напишут то начнут то серьезное что, те кто нахваливают.
На том точно же фактически ушедшим в прошлое Дельфи написано и сопровождается софта куда больше.Далее, уже говорил, джава и задумывалась чтобы ей никто не был нужен. Ни Qt, ни MFC, ни что угодно. Потребление памяти гуевого приложения на джаве, да, потому выше чем аналогичного, но использующего нечто более приближенное к ОСи и железу.
>С появлением java
>софта на десктопе он начинает впервые за долгие годы использовать свап.Впервые слышу такой бред, уж извините :)
>Действительно такое чувство, что попадаешь в 90-е.
Ну значит форумы о выходе HotSpot читали. И знаете, что линуха как такового, в массах тогда вообще не было :) Да и сейчас, одни разговоры, что вот, Qt есть, уж теперь то!
Кстати, может это линух у вас свопит?
Рад, что вы признаете недостатки Java.
>Рад, что вы признаете недостатки Java.Для меня это не недостаток. Вернее - продолжение достоинств и "за все нужно платить". Скорость GUI приложений - меня и клиентов более чем устраивает. Не говоря о скорости упомянутых мидлваре, серверных решений. Мало того, не только меня, корпоративный сектор, сплошь на джаве, или сишарпе (выше написал почему). А вот о кросплатформенности - голова не болит. И те же решения вэб для корпоративного сектора - куда серьезней как по функционалу, так и по выдерживаемой нагрузке чем на пхп, и т.д. Если второе вроде как будет исправлено, хотя бы для питона, то интересно, будут ли писаться фреймворки и приложения наподобие JavaEE
И конечно, если нужно написать, скажем, интернет пейджер для миллионов пользователей, то я даже сомневаюсь что C# под винду - верный выбор, не говоря об ощутимо более слабом Mono.
На питоне же я использую wikipad (десктопное приложение) - вполне меня устраивает по всем параметрам. Удивляет правда, что для такой крохотули по фунционалу, размер файлов великоват ... И памяти ест вполне как java приложение, хотя использует wxWidgets, ну да диски большие нынче, а память может специально так используется, для быстрой работы.
Другого такого просто не нашел :)
P.S. Ожидания:
Опубликовано в журнале "Компьютерра" №49-50 от 15 декабря 1998 года
В Java 2 реализована архитектура "подключаемых" (pluggable) виртуальных машин. Это означает, что с выпуском более совершенных виртуальных машин Java, таких, как давно ожидаемый оптимизирующий компилятор реального времени HotSpot
http://offline.computerra.ru/1998/277/2134/Динамические же языки не вытеснят статические - потому что уже точно известно, для большого проекта, да еще многопоточного, динамические языки приводят к опасному и многотрудно тестируемому коду.
Если кто и конкурент джаве, как универсальному ЯП и платформе, так это С#.
пхп, питон, руби - живут в другом измерении, для других задач. И не потому что медленные, хотя конечно, быстрота пойдет им на пользу. А потому что изначально создавались для таких задач, где применение языков статических - неудобно, невыгодно, неоправдано затратно.
Мидлваре же софт, уже точно обрел свои языки - Java и C#. Туда соваться могут только Scala, F#, может быть Haskell... Потому что для такого ПО критичны - скорость разработки (+отладки) и надежность (как в виде пропущенных ошибок, так и в виде безопасности самого синтаксиса языка. Например - для многопоточных приложений)
Java сама сдохнет, тк более глюкавого поделия не найти (не компилятор, не вм, а ВСЕ, решительно ВСЕ программы, на ней написанные). Редкая программа на Яве работает нормально. Что касается памятиотжирания. Явисты тут рассуждают про опции, влияющие на gc. Я поражен. Вы где эти опции выстявляете?! Для IDEA или Eclipsa?? Много вы Ява софта "натюнинговали"?? И вообще, звучит это абсурдно. Прикинь, тюнинг gc программы :))))))) Новое слово! Ни Питон, ни Лисп, ни Оберон - не болеют этим сифилисом, и только недоделка от Sun, украденная целиком у Н. Вирта, но так бездарно запоротая, страдает какими-то неизвестными науке болезнями...
Отдельная тема ексцепшны. Пишу мидлеты - все Sun-овские эмуляторы нещадно падают, падает даже новый J2ME SDK3.0. В форумах и багтреке об этом давно написано. Но ничего не исправляется тк что мертвому припарки? Исправил здесь - вылезло там.
Что касается "динамических языков". Практика показывает что код на них писать проще и быстрее, они при этом не менее надежны ни на йоту (моя личная многолетняя практика на очень нагруженных АСУ задачах). И еще огромное число программистов тебе возразят. Просто не надо перепевать чужую песню, которую не ты придумал...
Можно долго спорить, убедить нельзя. Приемлю только одно: берешь такой язык (языки) и начинаешь изучать, проникаться им. Потом начинаешь на нем писать. Много! Не один год. Как я сделал с Java. Java могла бы быть не плохой, но... :))
А вообще не так страшна Java, страшна субкультура, которую она породила.
>А вообще не так страшна Java, страшна субкультура, которую она породила.Субкультура - это форумные рассуждения начинающих о моднявом :)
А Java - просто ломовая лошадь. Про "сдохнет" это Вы не тут рассказывайте. А корпорациям, банкам и прочим. Поучите их, как им жить быть.
> Я поражен. Вы где эти опции выстявляете?! Для IDEA или Eclipsa??
Eclipse.ini idea.exe.vmoptions
> Прикинь, тюнинг gc программы :))))))) Новое слово! Ни Питон, ни Лисп, ни Оберон - не болеют этим сифилисом
И где ПО, на них написанное? А тюнинг JVM, с учетом работы конретной программы - очень даже хорошая штука. Никого не удивляет что СУБД нужно настраивать, линух с виндой. А что ж удивительного, что на этапе компиляции программы невозможно предугадать точно реальную нагрузку. Как для СУБД собирается статистика, так и профессионалы собирают для JVM такую же.
> Практика показывает что код на них писать проще и быстрее, они при этом не менее надежны ни на йоту
Практика показывает обратное. И моя личная, почти 17 лет - тоже.
> И еще огромное число программистов тебе возразят.
Те кто со стажем, и пишет серьезное ПО вообще нередко говорят - "Динамика - зло!". Каждый ориентируется на свой круг задач, в конечном счете.
Динамические языки я использую для разовых инфраструктурых задач. Перегнать что-то во что, скрипт повесить.
По статистике же, самые используемые языки Java и C/C++ и пэхапэ. Приблизительно вот http://www.tiobe.com/index.php/content/paperinfo/tpci/index....
Вот питон с руби и претендуют на место пэхапэ и перла. Там они и останутся.Удачи!
> Но напомните, а то я вот тоже запятовал, чего это народ массово отказался от С/С++ и пересел на перлы с пхп? Не иначе, ради быстродействия программ и экономии ОЗУ :)Во-первых, почему вы решили, что "народ массово отказался от С/С++"? Страуструп, например, так не считает (http://www.research.att.com/~bs/bs_faq.html#decline). Во-вторых, извините, но сама фраза "пересел на перлы с пхп" выдает в вас того самого студента. :) Профессионал не "сидит" и не "пересаживается" с одного языка на другой, а использует их в зависимости от поставленной задачи. Грубо говоря, вы используете плоскогубцы вместо отвертки не потому, что они "красивее", а исходя из того, что вы будете ими делать. :)
>Во-первых, почему вы решили, что "народ массово отказался от С/С++"?А что, CGI пишутся массово на С/С++?
А на чем пишут штатные программисты в коммерческих организациях?>Страуструп, например, так не считает
Мало ли что он считает. Есть реалии. На С/С++ пишется системное ПО, и прикладное - "коробочное". Но бОльшая часть программистов пишет ПО из другого разряда.
>Во-вторых, извините, но сама фраза "пересел на
>перлы с пхп" выдает в вас того самого студента. :) Профессионал
>не "сидит" и не "пересаживается" с одного языка на другой, а
>использует их в зависимости от поставленной задачи.Профессионал, это почти синоним - специалист. Мне пока "попрыгунчики"-профессионалы (с языка на язык) не встречались. Это все голые рассуждения "Программист одинаково хорошо напишет на любом языке". Второе - профессионал обязан знать основные библиотеки и фреймворки для своего языка, а не изобретать велосипеды. А это тоже время и осознанный опыт. Третье, профессионал знает, что выучить язык - это не знать его синтаксис, а уметь писать нам, в том стиле к которому язык предраспологает. В зависимости от языка (а также таланта и базы знаний)- это от нескольких месяцев до полугода. А студенты, да, считают что прочтя спецификацию языка они уже могут адекватно его использовать для решения задачи. И четвертое - связанное с специализацией - профессионал работает в ограниченной предеметной области. И не встречал профессиналов что берутся за все подряд задачи - и вэб сайт соорудить, и ERPсистему дописать, и к GPS навигатору ПО.
>Грубо говоря, вы используете
>плоскогубцы вместо отвертки не потому, что они "красивее", а исходя из
>того, что вы будете ими делать. :)Грубо говоря я занимаюсь садоводством, то плоскогубцы с паяльником мне не понадобятся. А если паяю телевизоры - то тяпка мне тоже ни к чему.
О владении всеми подряд инструментами рассуждают те кто пока не овладел ни одним.Так вот и джаву ругают садоводы, что паяльником не могут вскопать себе огородик. То есть - вот это как раз верх непрофессионализма, не понимать предназначение языков, а единственному как-то освоенному - пророчить универсальность.
И еще, сколько не проводил собеседований с вчерашними студентами - все поголовно "знают" С++, а элементарное тестовое задание - написать не могут.
Те же проблемы у опытных пэхапистов, не решил еще для себя, что дешевле, переучивать их с аляповатого стиля, выработанного динамическим языком, или учить первых программированию с нуля (ибо "студент знающий С++" это студент не знающий ничего. Обычно)...Вобщем прошу прощения если потревожил тусовку :)
> А что, CGI пишутся массово на С/С++?А что, CGI пишутся массово?
> А на чем пишут штатные программисты в коммерческих организациях?
Так на чем же?
> Мало ли что он считает. Есть реалии.
Понятно. И вы о них, конечно же, знаете, а Страуструп - нет :)
> На С/С++ пишется системное ПО, и прикладное - "коробочное". Но бОльшая часть программистов пишет ПО из другого разряда.
И все они "массово отказались от С/С++ и пересели на перлы с пхп"? :)
> Профессионал, это почти синоним - специалист. Мне пока "попрыгунчики"-профессионалы (с языка на язык) не встречались. Это все голые рассуждения "Программист одинаково хорошо напишет на любом языке". Второе - профессионал обязан знать основные библиотеки и фреймворки для своего языка, а не изобретать велосипеды. А это тоже время и осознанный опыт. Третье, профессионал знает, что выучить язык - это не знать его синтаксис, а уметь писать нам, в том стиле к которому язык предраспологает. В зависимости от языка (а также таланта и базы знаний)- это от нескольких месяцев до полугода. А студенты, да, считают что прочтя спецификацию языка они уже могут адекватно его использовать для решения задачи. И четвертое - связанное с специализацией - профессионал работает в ограниченной предеметной области. И не встречал профессиналов что берутся за все подряд задачи - и вэб сайт соорудить, и ERPсистему дописать, и к GPS навигатору ПО.
Спасибо за столь поучитльный экскурс в понятие "профессионал", но я говорил немного о другом :) Позволю себе повторить: профессионал выбирает язык исходя из поставленной задачи, а не удобства написания кода и проч. Поэтому, если кто-то и "пересел" с одного языка на другой, то дизайн языка - то, очем вы здеь рассуждаете - имеет к этому отношение в последнюю очередь.
> Грубо говоря я занимаюсь садоводством, то плоскогубцы с паяльником мне не понадобятся. А если паяю телевизоры - то тяпка мне тоже ни к чему.
Может быть, тогда и пэхапистов переучивать не стоит? :)
> О владении всеми подряд инструментами рассуждают те кто пока не овладел ни одним.
И кто же здесь так рассуждает?
> Вобщем прошу прощения если потревожил тусовку :)
Мне кажется, "тусовка" сильно не встревожилась. Со спокойной душой можете следовать дальше :)
>Детский сад.Люди, показывающие пальцем и публично объявляющие других дураками обычно сам не блещут (в т.ч. разумеется, и я, раз я не удержался и об этом говорю). Так, наблюдение.
>Кому нужна ваша числодробилка из десятка инструкций, которую вообще очень
>сложно неоптимально скомпилировать в нативный код? Возьмите машинку типа пня-4 с
>512MB памяти, откройте любое приложение на java и аналог на, скажем,
>Qt4 и сравните потребление памяти и отзывчивость интерфейса. С появлением java
>софта на десктопе он начинает впервые за долгие годы использовать свап.
>Действительно такое чувство, что попадаешь в 90-е.Код на языках такого уровня как Java, C#, Ruby, Python - это, грубо, конечно, говоря, хорошо формализованное описание задачи. А её непосредственным решением занимается уже не программист, а компилятор/интерпретатор/VM. Это имеет аналогичный смысл как разделение исполнимого файла ворда и файла документа, как разделение представления и данных, как разделение обязанностей в фирме, и, внимание, как то, что сделали разработчики OGG Theora - зафиксировали формат и занимаются совершенствованием декодера (интерпретатора)
IMHO.
>> языки с динамической типизацией не вытеснят языки с статической типизацией.и что же вам даёт право так полагать?
Если питона разгонят до уровня явы, и таки сделают нормальные треды ... уууу! Скучно не будет!
Можно например выйти на Gnome и предложить змеюку+LLVM вместо мони :-)
>Если питона разгонят до уровня явыТолько бы не по памятежорству.
В 10 раз по сравнению с предыдущим кварталом увеличилось потреюление памяти в ласточке...Цитата:
Lowlights:
Memory usage has increased by 10x. We have thus far spent no time improving this; lowering memory usage is a goal for the 2009Q3 release
>>Если питона разгонят до уровня явы
>
>Только бы не по памятежорству.а питон уже по паметижорству обгоняет яву.
>таки сделают нормальные тредыДавно уже, man stackless
Смеёшься? Из тонн питоньего софта под этим только хеловорд и запустится ...
Считай что другой язык. В LLVM-же реализации озаботились убиением GIL-а, сечёшь?
>Смеёшься? Из тонн питоньего софта под этим только хеловорд и запустится ...
>
>Считай что другой язык. В LLVM-же реализации озаботились убиением GIL-а, сечёшь?Хелловорд, говоришь? Ты наверно ничего не слышал про EVE Online, сервер которой на stackless написан...
> EVE Online, сервер которой на stackless написан...Имя вроде Дмитрий - а по русски не бум-бум.
Хорошо - говорю медленно и большими буквами:
Обычный питоний софт, коего тонны, а не то что специально на stackless писано!
Вот из этого http://en.wikipedia.org/wiki/List_of_Python_software хотябы пол процента пойдёт? Да ты хоть великий и ужастый Django запусти сначала :)Google'Ы же делают дроп-ин реплэйсент, если выйдет - ничего переписывать не прийдёся, а работать будет со скоростью на уровне явы и трэды чесные!
Ну ок - мы ж в сказаки не верим - придётся переписывать только толику малую :)
>Смеёшься? Из тонн питоньего софта под этим только хеловорд и запустится ...Глупости. Посмотри tinypy, его дистрибутив весит 40kb. Не нашел пока, что на нем не работает.
Только с ним точно такая же проблема что и со стакелесс! См. пост №38, список софта для проверки - там же.
Если коротко - это _не_ питон, а так - поделка "по мотивам", фейк.
Пост №37 сорри :)