LINUX.ORG.RU
ФорумTalks

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


0

1

Пожалуйста.

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

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

★★★★★
Ответ на: комментарий от CARS

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

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

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

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

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

YourLanguageSucks

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

baverman ★★★
()

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

iBliss
()

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

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

Vovka-Korovka ★★★★★
()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Relan ★★★★★
()

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

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

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

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

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

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

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

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

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

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

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

Vovka-Korovka ★★★★★
()

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

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

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

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

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

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

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

shimon ★★★★★
() автор топика

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

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

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

Vovka-Korovka ★★★★★
()

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

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

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

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от shimon

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тоже верно.

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

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