LINUX.ORG.RU

Perl теперь используется менее чем на 1% веб-серверов

 ,


0

1

По данным последнего исследования, представленного компанией W3Techs, использование Perl на веб-серверах упало ниже отметки одного процента. Когда-то самый популярный скриптовый язык занимает всего лишь пятое место по популярности, с долей в 0,997%.

Места распределились следующим образом:

  • PHP - 77.3%
  • ASP.NET - 21.7%
  • Java - 4.0%
  • ColdFusion - 1.2%
  • Perl - 1.0%
  • Ruby - 0.6%
  • Python - 0.3%

Подробнее про ситуацию с Perl на сайте W3Techs.com

>>> Подробности



Проверено: anonymous_incognito ()
Последнее исправление: anonymous_incognito (всего исправлений: 3)
Ответ на: комментарий от Virtuos86

В данном конкретном случае лажанулись, не добавив полноценные лямбды (и не сделав их основой всей архитектуры языка, как например в Smalltalk). Это прямое следствие безграмотности самого Гвидо.

anonymous
()
Ответ на: комментарий от anonymous

Такой кипешь из-за ерунды?

Какой «такой»? Не вижу особого кипеша.

Во первых, производительность слабо связана с динамической типизацией (см. Common Lisp, JavaScript (v8) и подобные)

Основной принцип, которым пользуются все навороченные VM - «giving people dynamic languages doesn't mean they write dynamic code». Т.е. они просто пользуются тем, что код неявно статический.

Хорошо написанный код на Scheme поддерживать и рефакторить намного проще чем хорошо же написанный код на Java.

Личный опыт или объективные исследования с цифрами?

tailgunner ★★★★★
()
Ответ на: комментарий от Eddy_Em

А зачем мне его собирать? Я из бинарников ставлю в арче.

Не смешно.

А перловка, ЕМНИП, у меня вообще не установлена дома.

теперь сделай grep -R 'perl' /

iBliss
()
Ответ на: комментарий от Reset

Во-первых, питон - полноценный ЯП.
Во-вторых, потому что в Python большие блоки кода __надо__ оформлять в функции.
Для меня лично аргумент в эту пользу - это doc-string функций.
А это и документация к блоку кода, которую может опознать редактор и питоновские инструменты вроде той же help, и доктесты.
P.S.: а ещё в Python и map неправильный: применяет функцию отдельно к каждому элементу последовательности. Ужас, блин! :-)

Virtuos86 ★★★★★
()
Ответ на: комментарий от buddhist

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

anonymous
()
Ответ на: комментарий от anonymous

На сишняке я тоже пробовал. Сишка самая реактивная, у меня на атоме меньше чем за секунду считает.

[nexfwall@LenovoS10-20027 src]$ time ./test
Результат = 4999499949500000

real	0m0.820s
user	0m0.756s
sys	0m0.008s
#include <iostream>
using namespace std;
int main() {
  long long int sum = 0;
  for ( int i = -1000000; !( i == 100000000 ); i++) sum += i;
  cout << "Результат = " << sum << endl;
  return 0;
};

nexfwall ★★★★
()

PHP, ASP.NET, Java, ColdFusion, Perl, Ruby, Python

Поделки на этих штуках уже научились эмулировать продолжения, или простой люд по-старинке всё ручками месит?

anonymous
()
Ответ на: комментарий от tailgunner

Какой «такой»? Не вижу особого кипеша.

Ты еще ни одной возможности швырнуть какашкой в динамически типизированные языки не упустил.

Т.е. они просто пользуются тем, что код неявно статический.

И что? Чем это по сути отличается от type inference, например?

Личный опыт или объективные исследования с цифрами?

Личный опыт. Исследовать такие неопределимые понятия, как «проще» и «удобнее» никто не станет.

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

anonymous
()
Ответ на: комментарий от Virtuos86

Может он и «полноценный», но дюже убогий при этом.

А ты, так же как и Гвидо, просто явно не имеешь ни малейшего понятия о том, как и где надо применять лямбды и замыкания.

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

anonymous
()
Ответ на: комментарий от anonymous

PHP, ASP.NET, Java, ColdFusion, Perl, Ruby, Python

Поделки на этих штуках уже научились эмулировать продолжения, или простой люд по-старинке всё ручками месит?

perl, ruby, python точно умеют

а почему эмулировать? +что без них вы программы писать не сможете?

unel
()
Ответ на: комментарий от cab

При том, что 3-я ветка несколько медленее 2-й. ИМХО, пока не практично.

cab ★★★★
()
Ответ на: комментарий от malbolge

Это ты анестезиолога имел ввиду?

anonymous
()
Ответ на: комментарий от anonymous

Т.е. они просто пользуются тем, что код неявно статический.

И что? Чем это по сути отличается от type inference, например?

Ты серьезно? По сути это отличается от type inference тем, что происходит в рантайме и не сообщается программисту. И ошибка этого TI - ошибка в рантайме.

Личный опыт.

Понятно. А мой личный опыт говорит о том, что при рефакторинге программы на динамическом языке (Питон в моем случае) есть как минимум одно принципиальное неудобство - транслятор в принципе ничего не проверяет; для проверки программы есть только юнит-тесты. А в статическом языке я могу проверить _всю_ программу перед тем, как пускать тесты.

Кстати, сравнивать Яву и Схему немного некорректно - Схема гораздо выразительнее.

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

Очень спорное заявление. См. например, opDispatch в D. Ну и в более эзотерических Скале и Хаскеле тоже есть какие-то средства.

tailgunner ★★★★★
()
Ответ на: комментарий от Eddy_Em

Издеваешься? ☺

Нет конечно. Просто perl настолько глубоко пустил корни как яп для сценариев, что его и вроде не видно, но есть везде, от хай-ендов до наколеночных дистров.

iBliss
()

Уже в ТОП-10. Наляжем же, тролли, наляжем!

bitfroster ★★
()
Ответ на: комментарий от unel

perl, ruby, python точно умеют

Что-то незаметно. Ссылки в студию.

что без них вы программы писать не сможете?

Нет, спасибо, я не сторонник говнокодинга на коленке.

anonymous
()
Ответ на: комментарий от nexfwall

Присоединюсь к торжеству маразма и поскладываю отрицательные числа с положительными:

time ./sum
Result = 4999500049500000
./sum  3,59s user 0,01s system 98% cpu 3,642 total
Собственно код:
import Data.List (foldl')
main = putStrLn $ "Result = " ++ show ( foldl' (+) 0 [-1000000 .. 100000000 ] )

Zay4egg
()
Ответ на: комментарий от nexfwall

Что тебе не нравится? Меня в этом треде многому обучили :3

мне не нравится, что диапазон между двумя числами считают тупым прибавлением единички в цикле!

это то же самое, как если бы вместо [code]a = 10 + 20[/code] написали бы [code]a = 10; i=0; while(i++ < 20){ a++ }[/code]

unel
()
Ответ на: комментарий от Virtuos86

Во-вторых, потому что в Python большие блоки кода __надо__ оформлять в функции.

зачем, если эта функция используется только в map/fold ?

Для меня лично аргумент в эту пользу - это doc-string функций.

зачем, если это не reusable ?

Reset ★★★★★
()
Ответ на: комментарий от anonymous

Что-то незаметно. Ссылки в студию.

python - yield ruby - yield perl - при помощи замыканий

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

Нет, спасибо, я не сторонник говнокодинга на коленке.

будьте добры пример, где ну никак без них ну никак не обойтись, не наговнокодив.

да, и объясните ещё, что конкретно ВЫ подразумеваете под термином продолжение - возможно, мы говорим о разных вещах =)

unel
()
Ответ на: комментарий от anonymous

аа.. ой, не заметил)

но, я так понимаю. и для арифметической прогрессии есть соответствующая формула =)

unel
()
Ответ на: комментарий от r_asian

Может мне лучше удалить этот комментарий? На него уже ответили все кому не лень и объяснили

nexfwall ★★★★
()
Ответ на: комментарий от anonymous

"!( i == 100000000 )" == «i != 100000000», не?
И мне хотелось бы иметь for, который выполняет блок команд, пока условие не возвращает true

nexfwall ★★★★
()
Ответ на: комментарий от helios

Случай с массивами описан в документации, так что это не баг:

Note, however, that references inside arrays are potentially dangerous. Doing a normal (not by reference) assignment with a reference on the right side does not turn the left side into a reference, but references inside arrays are preserved in these normal assignments. This also applies to function calls where the array is passed by value.

http://www.php.net/manual/en/language.references.whatdo.php

А вообще ты слишком далеко забрался. В PHP проблемы начинаются уже с weak sick dynamic typing.

$ php -r '1/"php";'
PHP Warning:  Division by zero in Command line code on line 1
$ php -r 'echo 1 + "php";'
1

anonymous
()
Ответ на: комментарий от Zay4egg

Присоединюсь к торжеству маразма и поскладываю отрицательные числа с положительными

Смысл не в складывании отрицательных чисел с положительными, смысл в скорости складывания этих самых чисел, и не только. Например баш с этим заданием не справился. Сожрал 1 гиг оперативы с лишним, нагрузил бедный проц, а после я решил не рисковать и убил жирный баш

Собственно код

А что за код то? На перл не похоже вроде(или я чего-то не знаю)

nexfwall ★★★★
()

По сообщениям британских ученых

Сабж

wolfy
()
Ответ на: комментарий от buddhist

Две эти тулзы коннектятся по сети и гоняют по 800-1200 MiB информации на один график!

WCF развращает же.

RedPossum ★★★★★
()
Ответ на: комментарий от lucentcode

Объём памяти зависит от количества данных в DOM-дереве страницы, и никак не связан с серверной частью.
PHP тут не причём, это простой и практичный ЯП.

Язык серверной части влияет, но очень косвенно. Если, предположим для примера, «среднестатистический в вакууме» серверный софт на PHP генерирует офигенно-неоптимальный HTML, по сравнению со «среднестатистическим в вакууме» серверным софтом на Perl (или же это поведение относится к среднестатистическому не софту, а программисту на данном языке) — то, в усредненном типичном случае, как раз и получается, что у сайта на PHP требования к клиентской машине больше.

Именно это, наверно, и имел в виду тролль по имени fero, говоря про over 4GB ОЗУ для просмотра интернета.

VladimirP ★★★★
()
Ответ на: комментарий от nexfwall

возьму конечно) тесты должны быть реальными, так же, как и пирожки должны быть из теста (и желательно с яблочным вареньем)

unel
()

Кстати, а Tcl в вебе использует кто?

anonymous
()

Так, девочки, очень гламурные у вас разговоры, но практичнее выложить результаты тестов для всех языков, если таковые есть или подумать над их написанием, а то непойми я-ламер, что мне изучать....

Russische_Abbattar
()

ColdFusion - 1.2%

Оно ещё живое О_о.

shahid ★★★★★
()

Ничего удивительного - когда колбасники лезут в ИТ, они выбирают максимально доступное их мозгу «похапэ». А Перл - он вечен, даже не парюсь по поводу новости. У меня даже в .NET проекте Перл используется.

Кстати, сравните позицию Перла (1%) с Руби (0.6%). А теперь посмотрите, сколько воплей про RoR в сети - уж намного больше, чем о Перле! Вывод? Все эти «исследования бр.уч.» - УГ. Профи (коих единицы) пишут на перлах/рубях, остальная студота мутит рынок своими говносайтиками за 1000 рэ.

matumba ★★★★★
()
Ответ на: комментарий от nexfwall

Можно для критичных мест написать код на Си и подключить его модулем к перловому коду

use Storable 'dclone';
- пример для для deep copy. И получить скорость C в перловом коде.

helios ★★★★★
()
Ответ на: комментарий от anonymous

Спасибо! Прочитал, добавил приписку к текущему проекту, мол он на Перл.

helios ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.