LINUX.ORG.RU
 
shimon

Помогите расширить, углубить, дополнить


0

1

Пожалуйста.

www.linux.org.ru/wiki/en/User:shimon/WhyPerlSucks

желательно реальными техническими граблями, вызванными использованием («я не дочитал до этого места доку» — не катит, «проблема решается мегатормозящим модулем на сран-е» катит, «из доки это нихрена не понятно» катит).


[#]  
iBliss

Ты ж документацию не читал. Без обид но это очень даже катит

* ()
[#] Ответ на: комментарий от CARS 13.12.2011 16:54:16  
shimon

Ну там очень общие положения.
Хочется граблей с примерами, которые доказывают, что проблема в языке как таковом и в том, что срановские модули между собой договорить нельзя.

**** ()
[#] Ответ на: комментарий от iBliss 13.12.2011 16:49:08  
shimon
>>-----Цитата---->>

Ты ж документацию не читал. Без обид но это очень даже катит

<<-----Цитата----<<

Еще как читал.

**** ()
[#] Ответ на: комментарий от shimon 13.12.2011 17:05:15  
iBliss

Оператор exists. Слышал о таком? Ну а про

my_undefined_value = undef... Вобщем я поправил там, но лучше строчку курсивом удали вместе со всем абзацем. А то как-то статья детектор получилась. Про JSON.pm тож зря. Это же модуль а не язык.

* ()
[#] Ответ на: комментарий от CARS 13.12.2011 16:54:16  

> YourLanguageSucks

Забавно, читаешь про перл и думаешь: "Воа, как люди вообще на нем пишут!", а про питон: "Кто писал этот бред? Автор, ты вообще матчасти не знаешь!".

** ()
[#]  
iBliss

По-ходу вопросик. А с приведением типов ты бы как хотел? Объявлять схему генерации? Приводить тип взависимости от значения? Типа 1 - число, 0.1 число, а при скажем русской локали 0,1 строка? При том что JSON - _текстовый формат_

* ()
[#]  
Vovka-Korovka
>>-----Цитата---->>

Dualvar'ы возникли в воспаленном воображении. Скаляр, оказывается, может содержать строковое и числовое значение одновременно. Мало того, они не связаны между собой. И молитесь, чтобы контекст был использован правильно.

<<-----Цитата----<<

А в питоне я как догадаюсь, что переменная содержит число?

* ()
[#] Ответ на: комментарий от iBliss 13.12.2011 17:16:22  

> При том что JSON - _текстовый формат_

Разве в нем не определен формат записи чисел с плавающей точкой?

** ()
[#]  
>>-----Цитата---->>

Скаляр, оказывается, может содержать строковое и числовое значение одновременно. Мало того, они не связаны между собой.

<<-----Цитата----<<

Это как? Можно пример?

**** ()
[#]  
Vovka-Korovka
>>-----Цитата---->>
<<-----Цитата----<<

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

* ()
[#] Ответ на: комментарий от baverman 13.12.2011 17:18:18  
iBliss
>>-----Цитата---->>

Разве в нем не определен формат записи чисел с плавающей точкой?

<<-----Цитата----<<

Определён, но

- Речь шла о выхлопе БД

- Разницы особой нет, поскольку и в том и в другом случае разница 2 байта на поле, что при применении языков общего назначения не экономия, а оксюморон.

* ()
[#] Ответ на: комментарий от Vovka-Korovka 13.12.2011 17:17:22  
shimon
>>-----Цитата---->>

А в питоне я как догадаюсь, что переменная содержит число?

<<-----Цитата----<<

В питоне, понимаешь, isinstance(x, (float,int,long,complex))

**** ()
[#] Ответ на: комментарий от iBliss 13.12.2011 17:21:49  

> Речь шла о выхлопе БД

Теперь я совсем в растерянности. Лучше отойду в сторонку.

** ()
[#] Ответ на: комментарий от Relan 13.12.2011 17:20:07  
shimon
>>-----Цитата---->>

Это как? Можно пример?

<<-----Цитата----<<

Ну вот например, $!.

В числовом виде это какбы errno, в строковом strerror. Говоришь "$!", получаешь одно, говоришь $!+0, получаешь другое.

**** ()
[#] Ответ на: комментарий от iBliss 13.12.2011 17:16:22  
shimon
>>-----Цитата---->>

По-ходу вопросик. А с приведением типов ты бы как хотел? Объявлять схему генерации? Приводить тип взависимости от значения? Типа 1 - число, 0.1 число, а при скажем русской локали 0,1 строка? При том что JSON - _текстовый формат_

<<-----Цитата----<<

В JSON есть "0.1", что значит строка, в которую по совпадению попало число, и 0.1, которое собсна число.

Яваскриптовые фреймворки эти штуки сильно между собой различают и правильно делают.

**** ()
[#]  
vertexua

А какова ваша цель?

*** ()
[#] Ответ на: комментарий от iBliss 13.12.2011 17:16:22  
shimon
>>-----Цитата---->>

а при скажем русской локали 0,1 строка?

<<-----Цитата----<<

Хм, если DBI форматирует числа локалезависимо, то это серьезный баг.

**** ()
[#] Ответ на: комментарий от vertexua 13.12.2011 17:32:24  
shimon
>>-----Цитата---->>

А какова ваша цель?

<<-----Цитата----<<

Кунсткамера.

**** ()
[#] Ответ на: комментарий от shimon 13.12.2011 17:28:07  
>>-----Цитата---->>

Это как? Можно пример?

<<-----Цитата----<<
>>-----Цитата---->>

Ну вот например, $!.

<<-----Цитата----<<
>>-----Цитата---->>

В числовом виде это какбы errno, в строковом strerror. Говоришь "$!", получаешь одно, говоришь $!+0, получаешь другое.

<<-----Цитата----<<

Ну, все эти $!, $$, $[, $], $, и т. д. особая хрень. Интересно как тебе удалось получить различные значения в обычном скаляре. Вот есть у меня my $foo, что мне с ней сделать, чтобы print "$foo\n" вывел одно, а print $foo+0, "\n" совсем другое?

**** ()
[#] Ответ на: комментарий от Relan 13.12.2011 17:34:17  
shimon

[code=perl]
use Scalar::Util qw(dualvar);

$foo = dualvar 10, "Hello";
$num = $foo + 2; # 12
$str = $foo . " world"; # Hello world
[/code]

**** ()
[#]  
Xellos

Ну ты же действительно не дочитал до конца.

**** ()
[#] Ответ на: комментарий от shimon 13.12.2011 17:39:08  
Xellos

То есть ты сознательно наступил на грабли, а язык виноват, что позволил тебе это сделать?

**** ()
[#] Ответ на: комментарий от shimon 13.12.2011 17:34:01  
Xellos

И главный экспонат - себя - ты в неё уже поместил.

**** ()
[#] Ответ на: комментарий от shimon 13.12.2011 17:34:01  
vertexua

Зачем его тыкать палкой? Я вообще на Perl пишу только на серваках где больше ничего нет (ну не на баше же писать), и чтобы покататься на машине времени

*** ()
[#] Ответ на: комментарий от shimon 13.12.2011 17:33:30  
iBliss
>>-----Цитата---->>

Хм, если DBI форматирует числа локалезависимо, то это серьезный баг.

<<-----Цитата----<<

Тогда весь юникс сплошной баг.

* ()
[#] Ответ на: комментарий от shimon 13.12.2011 17:39:08  
iBliss

Опять модуль... причём тут язык если dualvar - всего лишь расширяет работу с переменными. Это как в пистоне расширить класс int чтобы складывать слонов с попугаями.

* ()
[#] Ответ на: комментарий от shimon 13.12.2011 17:25:11  
Vovka-Korovka

Ну это проверить я и в перле могу. Я имею ввиду, проверить, является ли строка строковым представлением числа. А вот зачем знать, было ли написано, $var = 3 или $var = "3" мне трудно представить.

* ()
[#] Ответ на: комментарий от shimon 13.12.2011 17:39:08  

Ну то есть ты сам себе (или это JSON.pm?) прищемил яйца используя этот dualvar в качестве двери. :)

**** ()
[#]  
SOmni

Сколько раз я уже давал и находил этот линк на ЛОРе

Ты хочешь написать что-то более подробное, чем
http://stanislaw.ru/rus/research/perl.asp
?

** ()
[#]  
joy4eg

Унылый высер такого же унылого неосилятора.

* ()
[#] Ответ на: комментарий от shimon 13.12.2011 19:03:01  
Xellos

А так же ПОСЛЕ включения мозга. Чего мы в данном случае не наблюдаем.

**** ()
[#] Ответ на: комментарий от Relan 13.12.2011 18:22:49  
shimon
>>-----Цитата---->>

Ну то есть ты сам себе (или это JSON.pm?) прищемил яйца используя этот dualvar в качестве двери. :)

<<-----Цитата----<<

Альтернатива — писать свой парсер/генератор, но тут есть риск повторить те же грабли и добавить своих, что равноценно тому, что переехать яйца асфальтовым катком, какие уж двери.

**** ()
[#] Ответ на: комментарий от Xellos 13.12.2011 19:04:10  
shimon

Включившие мозг в новых проектах перл не используют.

**** ()
[#] Ответ на: комментарий от iBliss 13.12.2011 17:49:14  
shimon
>>-----Цитата---->>

если dualvar - всего лишь расширяет работу с переменными.

<<-----Цитата----<<

Странно расширяет, неправда ли? Почему нету triplevar для float'а?

**** ()
[#]  
madcore

Как-то у тебя не получилось...

***** ()
[#] Ответ на: комментарий от shimon 13.12.2011 19:04:57  
Vovka-Korovka

Да куда уж нам. Проблемы возникли у тебя, а мозги не работают почему то у других. Странно, не находишь?

* ()
Vovka-Korovka

Ой, зачем я начал это читать

>>-----Цитата---->>

Кстати, встроенная функция log вычисляет натуральный логарифм, а не логарифм по произвольному основанию, как можно было бы подумать, взглянув на её имя. Видимо, разработчики PERL очень плохо учились (а может и не учились вовсе) и не знают, что в математике то, что они обозначают через log, на самом деле обозначается через ln, а через log обозначается логарифм по произвольному основанию.

<<-----Цитата----<<

Видимо авторы libc, java, .NET и кучи других языков тоже плохо учились.

* ()
[#] Ответ на: комментарий от shimon 13.12.2011 19:04:57  
iBliss
>>-----Цитата---->>

Включившие мозг в новых проектах перл не используют.

<<-----Цитата----<<

Эк ты лихо загнул. У многих _любой_ проект начинается с прототипа на перле.

* ()
[#] Ответ на: комментарий от shimon 13.12.2011 19:07:08  
iBliss
>>-----Цитата---->>

Странно расширяет, неправда ли? Почему нету triplevar для float'а?

<<-----Цитата----<<

Нет. Числовое значение - строковое описание. Можешь затолкать туда float - ему не поплохеет.

* ()
[#] Ответ на: комментарий от iBliss 13.12.2011 19:46:43  
shimon
>>-----Цитата---->>

Нет. Числовое значение - строковое описание. Можешь затолкать туда float - ему не поплохеет.

<<-----Цитата----<<

Тогда почему не строковое значение — числовое описание?
Раз это так круто, почему нельзя прицепить такое же описание к процедурам и иметь нормальное самодокументирование, а не идиотский POD?

**** ()
[#] Ответ на: комментарий от shimon 13.12.2011 19:52:56  
iBliss
>>-----Цитата---->>

Раз это так круто, почему нельзя прицепить такое же описание к процедурам и иметь нормальное самодокументирование, а не идиотский POD?

<<-----Цитата----<<

Я ничего не понял.

* ()
[#] Ответ на: комментарий от Xellos 13.12.2011 19:04:10  
stevejobs

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

** ()
[#] Ответ на: комментарий от shimon 13.12.2011 19:04:17  
>>-----Цитата---->>

Ну то есть ты сам себе (или это JSON.pm?) прищемил яйца используя этот dualvar в качестве двери. :)

<<-----Цитата----<<
>>-----Цитата---->>

Альтернатива — писать свой парсер/генератор, но тут есть риск повторить те же грабли и добавить своих, что равноценно тому, что переехать яйца асфальтовым катком, какие уж двери.

<<-----Цитата----<<

Тоже верно.

Только ведь в данном случае корректнее говорить, что JSON.pm ацтой, а не в целом Перл.

**** ()