Почему так все негативно относятся именно к тесту по обходу бинарных деревьев? :)
Интересная задача - не самая распространенная конечно, но иногда очень нужная.
И показательная - как в плане вычислительной мощности языка, так и в плане демонстрации синтаксиса.
"Скорость работы массивов/циклов" в предметной области PHP имеет не главенствующее значение.
"Скорость работы массивов/циклов" в предметной области PHP имеет не главенствующее значение.
Скорость работы массивов/циклов/регулярных выражений/рекурсии – имеет не главенствующее значение – а что тогда имеет? Скорость работы операторов print и echo?
Мы же все таки языки программирования сравниваем, а не шаблонные движки.
Так ведь сравнивают скорость работы массивов/циклов - а не то, какие в каком языке есть хитрые хаки - именно для этого там и должны они быть, а не что то другое.
Вы серьезно не понимаете в чем вообше смысл тестирования или специально претворяетесь? :(
Еще раз - есть условия задачи/действия (как пример - перечисленные ниже) - их нужно реализовать на конкретном языке. Я уже говорил - если реализовано не правильно - предложите вариант где те же действия будут реализованы более удачно.
Ну а требовать, что бы тест, общий для всех языков, специально для PHP как то особенным образом корректировался - это уже черезчур.
А вот тут давайте не будем.
Тесты реализуют типовые задачи - именно на этом и нужно сравнивать производительность языков. Почти в любой задачи используются типовые элементы -массивы, циклы, рекурсивные функции и т.д. Вот именно скорость/потребление памяти при работе с этими элементами и изучается.
А что по Вашему должно сравниваться - (особенно раз Вы упомянули некую "предметную область") - скорость подключения к БД что ли? Так это зависит от БД.
Посмотрите тесты дальше - реализуются разные алгоритмы. Причем именно - скорость работы одного и того же алгоритма но написанного на разных языках – мы же языки сравниваем по скорости, а не алгоритмы – разве не так?
А давайте не путать две разные вещи - то, что пока не реализовано, и то что не может быть реализовано в принципе.
Code Inspections в IDEA реализован для Java а не для Scala - разве нет (несмотря на ее стат. тип)?
А давайте в праведном гневе не переигрывать - а то понимаешь ли международный заговор против PHP разоблачили :)
Сравниваются по скорости очень много языков - на тестах, которые реализуют определенную функциональность - в ссылке которую я привел постом выше указано - какую именно. И если допустим та же строчка в тестах для С допустим выглядит как
for( i=1 ; i<n ; ++i ) {
perm[i] = perm1[i];
}
В тестах для Java
for (int i = 0; i < n; i++) perm[i] = perm1[i];
То почему она в тестах для PHP она должна быть специально так написана, что бы у PHP преимущество было?
Ниже уже написал - Если Вы считаете что приведенный в тесте код не достаточно оптимально реализует требования теста- напишите свой и отправьте тестировщикам.
Гм. Вы читали требования к тесту? - что он должен делать - (ссылку чуть выше давал) Each program should
* "Take a permutation of {1,...,n}, for example: {4,2,1,5,3}.
* Take the first element, here 4, and reverse the order of the first 4 elements: {5,1,2,4,3}.
* Repeat this until the first element is a 1, so flipping won't change anything more: {3,4,2,1,5}, {2,4,3,1,5}, {4,2,3,1,5}, {1,3,2,4,5}.
* Count the number of flips, here 5.
* Do this for all n! permutations, and record the maximum number of flips needed for any permutation.
* Write the first 30 permutations and the number of flips.
Если Вы считаете что приведенный в тесте код не достаточно оптимально реализует эти требования - напишите свой и отправьте тестировщикам. Всем будет только на пользу, если тестирование будет правильным и корректным для каждого языка.
(Повысил карму :)
У Scala есть интересная вешь - встроенная Акторная модель.
Все остальное есть и в Руби :)
И для руби можно писать все на руби - но пока есть проблемы с производительностью. просмотрим - во 2 версии вполне возможно у руби будет все так же хорошо как у Java ^_^
И в принципе, там особо не разгуляешься, так что разница в производительности интерпретаторов PHP & Ruby всегда будет минимальна и никак это не поменяется.
И тем не мение - разница в производительности между PHP/Perl/Python/Ruby все же многими учитывается при выборе языка разработки.
Вообще да - когда выйдет Ruby 2.0 с компиляцией в байткод - будет уже совсем другая ситуация :)
Но вот на счет этого -
Но за динамическую структуру всё же приходится платить и тяжёлые вещи переписывать на той же Java
тяжелые вещи при работе с руби уже сейчас переписвают на С - и замечательно работают (и без Scala :)
Интересная задача - не самая распространенная конечно, но иногда очень нужная.
И показательная - как в плане вычислительной мощности языка, так и в плане демонстрации синтаксиса.
"Скорость работы массивов/циклов" в предметной области PHP имеет не главенствующее значение.
Скорость работы массивов/циклов/регулярных выражений/рекурсии – имеет не главенствующее значение – а что тогда имеет? Скорость работы операторов print и echo?
Мы же все таки языки программирования сравниваем, а не шаблонные движки.
Вы серьезно не понимаете в чем вообше смысл тестирования или специально претворяетесь? :(
А удачные это какие тогда -
print "Hello World";
что ли? :)))
Ну а требовать, что бы тест, общий для всех языков, специально для PHP как то особенным образом корректировался - это уже черезчур.
Тесты реализуют типовые задачи - именно на этом и нужно сравнивать производительность языков. Почти в любой задачи используются типовые элементы -массивы, циклы, рекурсивные функции и т.д. Вот именно скорость/потребление памяти при работе с этими элементами и изучается.
А что по Вашему должно сравниваться - (особенно раз Вы упомянули некую "предметную область") - скорость подключения к БД что ли? Так это зависит от БД.
Посмотрите тесты дальше - реализуются разные алгоритмы. Причем именно - скорость работы одного и того же алгоритма но написанного на разных языках – мы же языки сравниваем по скорости, а не алгоритмы – разве не так?
Code Inspections в IDEA реализован для Java а не для Scala - разве нет (несмотря на ее стат. тип)?
Сравниваются по скорости очень много языков - на тестах, которые реализуют определенную функциональность - в ссылке которую я привел постом выше указано - какую именно. И если допустим та же строчка в тестах для С допустим выглядит как
for( i=1 ; i<n ; ++i ) {
perm[i] = perm1[i];
}
В тестах для Java
for (int i = 0; i < n; i++) perm[i] = perm1[i];
То почему она в тестах для PHP она должна быть специально так написана, что бы у PHP преимущество было?
Ниже уже написал - Если Вы считаете что приведенный в тесте код не достаточно оптимально реализует требования теста- напишите свой и отправьте тестировщикам.
Each program should
* "Take a permutation of {1,...,n}, for example: {4,2,1,5,3}.
* Take the first element, here 4, and reverse the order of the first 4 elements: {5,1,2,4,3}.
* Repeat this until the first element is a 1, so flipping won't change anything more: {3,4,2,1,5}, {2,4,3,1,5}, {4,2,3,1,5}, {1,3,2,4,5}.
* Count the number of flips, here 5.
* Do this for all n! permutations, and record the maximum number of flips needed for any permutation.
* Write the first 30 permutations and the number of flips.
Если Вы считаете что приведенный в тесте код не достаточно оптимально реализует эти требования - напишите свой и отправьте тестировщикам. Всем будет только на пользу, если тестирование будет правильным и корректным для каждого языка.
(Повысил карму :)
Roadsend PHP Compiler - кроссплатформенный компилятор в машинный код
Это например какой анализ кода можно провести только в стат. тип. языках, а в динам. тип. нельзя?
а с tools что?
Все остальное есть и в Руби :)
И для руби можно писать все на руби - но пока есть проблемы с производительностью. просмотрим - во 2 версии вполне возможно у руби будет все так же хорошо как у Java ^_^
И тем не мение - разница в производительности между PHP/Perl/Python/Ruby все же многими учитывается при выборе языка разработки.
Вообще да - когда выйдет Ruby 2.0 с компиляцией в байткод - будет уже совсем другая ситуация :)
Но вот на счет этого -
тяжелые вещи при работе с руби уже сейчас переписвают на С - и замечательно работают (и без Scala :)
Есть и IronPython и IronRuby - компиляторы для .NET