Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему так не любят Delphi? 
:(
    Опции темы
LSD
Дата 29.3.2012, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Zloxa @  29.3.2012,  13:42 Найти цитируемый пост)
А как бы ты падил на другой, более православной, субэдэ? Где исходная строка может принимать как не определенное значение, так и значение пустой строки? Если у тебя поле nullable, тебе всяко пришлось бы на это закладываться.

Это может быть не только поле, но и результат substr или trim.



Цитата(Zloxa @  29.3.2012,  13:42 Найти цитируемый пост)
Да, я действительно не понимаю принципиального различия между пустой строкой и не определенным значением. Я действительно не могу придумать что может характеризовать пустая строка иначе как неопределенность. 

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



Цитата(Zloxa @  29.3.2012,  13:42 Найти цитируемый пост)
Это ключевое слово. Ты не приывк работать с неопределенностью, не имеешь ее в виду, но пытаешься использовать устоявшиеся практики работы с другим инструментом. Это выглядит почти так же.

Ожидаемый это не только привычки, но и поведение других типов. Почему для чисел 0 и null это разные вещи? Почему в CLOB или RAW пустая строка и null это разные вещи?



Цитата(Akella @  29.3.2012,  13:28 Найти цитируемый пост)
http://www.spring4d.org/

Что ты тут со своим Дельфи, не видишь у нас тут уже ораклосрач smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 29.3.2012, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(LSD @  29.3.2012,  16:25 Найти цитируемый пост)
Это может быть не только поле, но и результат substr или trim.

И substr и trimm могут быть применены к nullable значению. Потому на то, что в результате будет is null все равно, как правило, приходится закладываться.

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

Цитата(LSD @  29.3.2012,  16:25 Найти цитируемый пост)
Ожидаемый это не только привычки, но и поведение других типов. 

Весьма же нелепый тезис. Если мы будем основывать свои ожидания на поведенческих особенностях других типов, дождемся что в результате "100"+"500" в результате станем ожидать"600". 

Цитата(LSD @  29.3.2012,  16:25 Найти цитируемый пост)
Почему 0 может характеризовать что-то отличное от неопределенности, а пустая строка - нет?

У меня нет практики работы с системой, где null эквивалентно 0. Я не могу оценить эту идею.
У меня есть практика работы с системой, где null эквивалентно ''. И мне действительно не понятно что вызывает такой сильный анальный зуд. Неудобства эта особенность особого не доставляет. Профит, хоть и не бессомненный, от этого, какой, да есть. Причины с этим что-то срочно делать, для меня далеко не очевидны. Оснований назвать это прям уж таки порочной практикой у меня - нет. На этом и строятся мои сомнения в действительной полезности такого понятия, как пустая строка. Твои же попытки раскрыть ее несомненную пользу, пока, я оцениваю как тщетные.

Цитата(LSD @  29.3.2012,  16:25 Найти цитируемый пост)
Плюс абзац был посвящен вовсе не пустым строкам, но ты почему-то полностью проигнорировал все что написано дальше.

Я тебе начал было отвечать на тот абзац, но получилось уныло и не интересно.

Цитата(LSD @  29.3.2012,  16:25 Найти цитируемый пост)
ораклосрач 

Я вообще не понимаю о чем тут сраться. Я не нахожу что продукты оракла являются верхом эстетики. Скорее наоборот. Я согласен с тем, что у оракла весьма дурной вкус. smile 

Это сообщение отредактировал(а) Zloxa - 29.3.2012, 17:21


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
RockClimber
Дата 29.3.2012, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Цитата(ivanfain @  26.3.2012,  20:54 Найти цитируемый пост)
А по мне так он давно мёртв. То, что его продают, ещё ничего не доказывает.

 smile 
Вот это я и называю "вторая волна". Я не видел новых Delphi холиваров года три наверно, только догорающие старые, а тут последние полгода они что-то растут как грибы после дождя...
А еще я хотел спросить, что же может доказать "жизнь", если наличие вакансий и продажи средств разработки не доказывают. Но побоялся оскорбить чужие религиозные чувства. 


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
RockClimber
Дата 29.3.2012, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Вот, кстати, к вопросу о том, "за что не любят делфи": Дэлфи разве мертв? Очень показательна критика некоторых товарищей, которые искренне считают, что их любимые крутейшие фичи появились именно в дотнете, а не в delphi десятью годами ранее  smile 


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
Akella
Дата 30.3.2012, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



RockClimber, у LSD и Zloxa уже сраз пошёл в другую тему, как мне показалось  smile , просто междуусобица
PM MAIL   Вверх
LSD
Дата 30.3.2012, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Zloxa @  29.3.2012,  18:04 Найти цитируемый пост)
И substr и trimm могут быть применены к nullable значению. Потому на то, что в результате будет is null все равно, как правило, приходится закладываться.

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

substr и trimm от неопределенного значения должны вернуть неопределенной значение или выкинуть эксепшн (смотря что поддерживается языком).
substr и trimm при корректных параметрах должны вернуть конкретное значение. Т.е. если запросили substr(5, 0) то и вернутся должна пустая строка или должно быть отдельно оговорено в контракте substr() что length должен быть строго больше нуля иначе будет эксепшн.



Цитата(Zloxa @  29.3.2012,  18:04 Найти цитируемый пост)
Весьма же нелепый тезис. Если мы будем основывать свои ожидания на поведенческих особенностях других типов, дождемся что в результате "100"+"500" в результате станем ожидать"600". 

1. На самом деле твой пример содержит ошибку (или это сознательное мухлевание? smile ). Операция сложения к строкам не применима, к строкам применима операция конкатенации и даже если они обе обозначаются одним символом, это не значит что это одна и та же операция smile 
2. По твоей логике мы не должны ожидать что результат сложения целых и дробных чисел будет одинаков, типы данных то разные.
3. Есть тип CLOB, который от VARCHAR2 отличается только реализацией, почему там другое поведение?



Цитата(Zloxa @  29.3.2012,  18:04 Найти цитируемый пост)
У меня нет практики работы с системой, где null эквивалентно 0. Я не могу оценить эту идею.

А какие еще СУБД/ЯП реализуют подобную логику? Как думаешь почему?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
lukas
Дата 30.3.2012, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: нет
Всего: 15



Вам не надоело строчить столько текста друг другу?  smile 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Zloxa
Дата 30.3.2012, 13:37 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(LSD @  30.3.2012,  13:18 Найти цитируемый пост)
А какие еще СУБД/ЯП реализуют подобную логику?

А какие ЯП(кроме SQL) реализуют трехзначную логику? smile
Стоит ли лишь на этом основании срать кирпичами на SQL, требовать сделать как у всех нормальных языков, чтоб LSD удобно было?

Цитата(LSD @  30.3.2012,  13:18 Найти цитируемый пост)
Т.е. если запросили substr(5, 0) то и вернутся должна пустая строка

Почему именно пустая строка? Это же абсурд! Должно вернуться не определенное значение. Это же логично!
Цитата(LSD @  30.3.2012,  13:18 Найти цитируемый пост)
или должно быть отдельно оговорено в контракте substr() что length должен быть строго больше нуля иначе будет эксепшн.

Если в документации оговорено что "If substring_length is less than 1, then Oracle returns null.", то, как бе все по контракту и получается что все пучком  smile 

Цитата(LSD @  30.3.2012,  13:18 Найти цитируемый пост)
должны 

Кому должны, LSD? И почему должны? Потому что так сделано в яве? Потому что так сделано у майкрософта? Потому что тебе так привычно? smile

Цитата(LSD @  30.3.2012,  13:18 Найти цитируемый пост)
2. По твоей логике мы не должны ожидать что результат сложения целых и дробных чисел будет одинаков, типы данных то разные.

Сложение может и будет одинаково. Но вот деление, по твоей логике, должно бы работать тоже одинаково?
Код

      System.out.println((float)10/(float)3);
      System.out.println((int)10/(int)3);

Цитата

3.3333333
3

:facepalm

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

Цитата(LSD @  30.3.2012,  13:18 Найти цитируемый пост)
3. Есть тип CLOB, который от VARCHAR2 отличается только реализацией, почему там другое поведение?

Клоб, чар и варчар это совершенно разные типы, имеют различное предназначение, различную механику и нет ничего странного в том, что они имеют разную специфику. Почему ты не находишь странным ожидать от чара поведения подобного варачару, но не находишь странным ожидать того же от клоба? smile

Это сообщение отредактировал(а) Zloxa - 30.3.2012, 13:46


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Zloxa
Дата 30.3.2012, 14:21 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Нуи, в общем, так.... 

Мне не нравится что наша дискусия перешла в русло очевидных для меня вещей. Я бы был более склонен обсудить вещи для меня не столь очевидные. В частности - разница null и "". Я, привыкнув к ораклу, действительно ее перестал улавливать. И чтобы ее уловить(или же убедиться что ее нет), мне таки требуется стороннее мнение.

 - Я не нахожу принципиальной разницы в том, используем ли мы четыре буквы или два символа для обозначения суть одного и того же. 
 - Я не нахожу неудобным то, что взятие функции length от null возвращает null. Там, где нужно получить 0 вместо null, ничего не мешает использовать nvl
 - Меня очень радует, что конкатенация с null в результате дает не null а эквивалент конкатенации с пустой строкой. В системах, где null не эквивалентен пустой строке, это, временами, несколько усложняет жизнь, а профит от этого для меня не очевиден. Конкатенацию строк мне доводится пользовать много чаще расчета длины строки.
 - Меня очень радует, что после отображения строки в элементе управления, по команде пользователя "сохранить", мне не надо думать о том, как ее сохранять: как null, каким это значение было до того, как было помещено в элемент управления, или же как пустую строку, которая хранится в элементе управления.

Я действительно не способен смоделировать ситуации, когда различение null и пустой строки - принципиально.

По этой причине я нахожу лишним одно из двух. Либо строки не должны быть nullable, либо строки, в принципе не должны быть пустыми. Варианты, в принципе, равнозначны, у каждого есть плюсы, у каждого есть минусы. Ненулобельная строка всегда будет считаться count'ом и сохраняться в индексе, что очень досадно. В то же время для nullaбельной строки length может вернуть null, что тоже досадно, но имхо - не на столько же.


Это сообщение отредактировал(а) Zloxa - 30.3.2012, 14:29


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akella
Дата 30.3.2012, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Цитата(lukas @ 30.3.2012,  12:50)
Вам не надоело строчить столько текста друг другу?  smile

У них просто работы нет  smile , нужно же чем-то заняться
PM MAIL   Вверх
kemiisto
Дата 30.3.2012, 14:37 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



10 страниц оффтопа про nil и пустую строку. МОГЁТЕ! smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
LSD
Дата 30.3.2012, 14:42 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Zloxa @  30.3.2012,  14:37 Найти цитируемый пост)
А какие ЯП(кроме SQL) реализуют трехзначную логику? 
Стоит ли лишь на этом основании срать кирпичами на SQL, требовать сделать как у всех нормальных языков, чтоб LSD удобно было?

Не передергивай, там еще и СУБД упоминались. В каких СУБД кроме Оракла пустая строка эквивалентна null? И какое отношения эквивалентность '' и null имеет к трехзначной логике?


Цитата(Zloxa @  30.3.2012,  14:37 Найти цитируемый пост)
Если в документации оговорено что "If substring_length is less than 1, then Oracle returns null.", то, как бе все по контракту и получается что все пучком

Опиши контракт полностью и нелогичность станет очевидна smile 


Цитата(Zloxa @  30.3.2012,  14:37 Найти цитируемый пост)
Но вот деление, по твоей логике, должно бы работать тоже одинаково?

Наверно я тебя удивлю, но деление бывает двух видов: целочисленное и дробное. Для разных типов может использоваться разное деление как в Java/C++ или одно и то же как в Deplhi. Но поведение деления одинаково для byte/short/int/long и для float/double.


Цитата(Zloxa @  30.3.2012,  14:37 Найти цитируемый пост)
Клоб, чар и варчар это совершенно разные типы, имеют различное предназначение, различную механику и нет ничего странного в том, что они имеют разную специфику. Почему ты не находишь странным ожидать от чара поведения подобного варачару, но не находишь странным ожидать того же от клоба?

И в чем же принципиальная разница между CLOB и VARCHAR2? (ограничения на максимальную длинну, методы по работе с типом и т.д., это не принципиальные ограничения, это детали реализации)


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 30.3.2012, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(LSD @  30.3.2012,  15:42 Найти цитируемый пост)
Не передергивай, там еще и СУБД упоминались. В каких СУБД кроме Оракла пустая строка эквивалентна null? И какое отношения эквивалентность '' и null имеет к трехзначной логике?

Никакое.
Вопрос был задан для того, чтобы показать абсурдность аппеляций к аналогам, которые ты так настойчиво приводишь. Зачем ораклу делать как делают все? Да, оракл выпендрился. Но он выпендрился не только тут. Очень много его выпендрежа в конце концов оказалось стандартизовано. Многое из его выпендрежа оказалось не принято обществом. Да, фича,  о которой мы говорим - спорная. Ну давай обсудим, чего нас эта фича лишает, что нам эта фича дает. Зачем нам опираться на стереотипы и шаблоны? Может быть там, у них, к кому ты аппелируешь, все не правильно? Зачем сводить все к тому, что сотни мух не могут ошибаться?

Цитата(LSD @  30.3.2012,  15:42 Найти цитируемый пост)
Опиши контракт полностью и нелогичность станет очевидна 

Я не понял о чем ты говоришь.

Цитата(LSD @  30.3.2012,  15:42 Найти цитируемый пост)
Наверно я тебя удивлю, но деление бывает двух видов: целочисленное и дробное. Для разных типов может использоваться разное деление как в Java/C++ или одно и то же как в Deplhi. Но поведение деления одинаково для byte/short/int/long и для float/double.

Наверное я тебя удивлю, но строки бывают разных типов.. для разных типов может.... бла бла бла....

Цитата(LSD @  30.3.2012,  15:42 Найти цитируемый пост)
И в чем же принципиальная разница между CLOB и VARCHAR2?

В чем принципиальная разница null и ''?

Это сообщение отредактировал(а) Zloxa - 30.3.2012, 15:50


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LSD
Дата 30.3.2012, 16:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Zloxa @  30.3.2012,  16:40 Найти цитируемый пост)
Зачем сводить все к тому, что сотни мух не могут ошибаться?

Тут более уместна другая аналогия: "Вся рота идет не в ногу, один прапорщик в ногу".


Цитата(Zloxa @  30.3.2012,  16:40 Найти цитируемый пост)
Я не понял о чем ты говоришь.

Цитата
Returns a new string that is a substring of this string. The substring begins at the specified beginIndex and extends to the character at index endIndex - 1. Thus the length of the substring is endIndex-beginIndex.

Если добавить сюда замечание насчет того что If length of the substring is zero, than null would be returned это будет выглядеть как явное исключение из общего правила. Ради чего нарушать единообразие?


Цитата(Zloxa @  30.3.2012,  16:40 Найти цитируемый пост)
Наверное я тебя удивлю, но строки бывают разных типов.. для разных типов может.... бла бла бла....

Расскажи поподробней про разные типы строк.


Цитата(Zloxa @  30.3.2012,  16:40 Найти цитируемый пост)
В чем принципиальная разница null и ''?

Расскажу, но после того как ты ответишь на вопрос.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 30.3.2012, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(LSD @  30.3.2012,  17:50 Найти цитируемый пост)
Ради чего нарушать единообразие?

Ради чего его соблюдать?

Цитата(LSD @  30.3.2012,  17:50 Найти цитируемый пост)
Расскажи поподробней про разные типы строк.

Клоб - не строка. Сравнивать варчар с клобом, имхо, все равно что сравнивать строку со стримом или с чем то вроде. Может не самая лучшая аналогия, но в целом - как то так. Clob, объявленный как переменная, переменной по факту не явлется. Он является локатором, посредством которого ты можешь получить доступ к этим неким текстовым данным. То же самое и в таблице.

Ты бы стал задаваться вопросом в чем разница между строкой и чарактерстримом? Просто ли бы тебе было сформулировать эту разницу, если бы ответ на этот идиотский вопрос с тебя настойчиво требовали?

Цитата(LSD @  30.3.2012,  17:50 Найти цитируемый пост)
Расскажу, но после того как ты ответишь на вопрос.

Как смог - рассказал. Жду.

Это сообщение отредактировал(а) Zloxa - 30.3.2012, 17:47


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1133 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.