Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 25 26 27 28 29 30 31 32 [33] 34   вперед  Ctrl
 Re: Курилка  [new]
booby
Member

Откуда:
Сообщений: 1609
xtender
... может тогда и выражения, типа (2+2)*2 тоже должны ошибку возвращать?

В обсуждаемом случае речь идет об ошибке времени компиляции, а не времени выполнения.
Как программиста меня это устраивает. По крайней мере мне так кажется сейчас.

Причин две
а) мне не кажется, что меня напряжёт, столкнувшись именно с этой особенностью компилятора,
переписать выражение в программу, последовательность выражений.
И да, я благодарен компилятору за то, что он честно мне сказал, что не умеет разобрать такое выражение, какова бы ни была причина для этого.

б) Глубокое удовлетворение от получения такой такой ошибки связано с гипотезой
о том, составляемое мной выражение будет вычисляться именно как выражение,
так как написано, без переписывания его в невидимую мне программу, семантика которой
может оказаться сломанной после такого преобразования.
Это не значит что я сторонник программирования с побочными эффектами.
Как не значит, что компилятор на самом деле не сделает того, что я считаю плохим, в случае, когда он сумеет выражение разобрать.
Но, пока я получаю ошибку такого сорта, у меня остаётся основание обманываться на сей счет.

Мне проще обманываться, читая текст программы в том, что я будто бы понимаю, что там
написано,
чем всякий раз, глядя в текст сорта (2+2)*2 честно говорить, что я не знаю,
какого результата следует ожидать от этого вычисления на самом деле.
Цена такого знания становится несопоставимо дорогой по отношению к ценности самого текста выражения.
20 сен 18, 16:22    [21681062]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
xtender
(2+2)*2 тоже должны ошибку возвращать?

В смысле - "шесть"? :)
20 сен 18, 17:43    [21681215]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
booby
чем всякий раз, глядя в текст сорта (2+2)*2 честно говорить, что я не знаю,
какого результата следует ожидать от этого вычисления на самом деле.

"Пролога" на Вас нет :)
20 сен 18, 17:46    [21681221]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
booby
Member

Откуда:
Сообщений: 1609
andrey_anonymous
...
"Пролога" на Вас нет :)

sql в достаточной степени эквивалентный заменитель пролога.
20 сен 18, 18:23    [21681269]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
booby
Функциональная обертка - странновата зверушка с малознакомым запахом.
Не очень понятно что имеется в виду под оберткой.
Речь про функциональное программирование?

Я собственно вопрос и задал, потому что последние 2-3 года работаю со scala намного больше чем с PL/SQL и возвращаясь назад некоторые вещи кажутся несколько нелепыми.

Среди преимуществ функционального подхода можно выделить
краткость
возможноть оперировать на более высоком уровне абстракции (по аналогии как SQL указывает что надо получить вместо как)
намного лучшую приспособленность и простоту при написании параллельных вычислений

А так каждый найдет что-то для себя. Мне в силу специфики чем я занимаюсь очень нравится как можно работать с парсерами.
Например простейший калькулятор может выглядеть так. Фактически программа - описание грамматики.

Если перейти к конкретным примерам, скажем, задача выяснить, содержит ли строка большие буквы. В Java это может быглядеть так
  boolean nameHasUpperCase = false;
  for (int i = 0; i < name.length(); ++i) {
      if (Character.isUpperCase(name.charAt(i))) {
          nameHasUpperCase = true;
          break;
      }
  }
В scala это будет
val nameHasUpperCase = name.exists(_.isUpper)
Это пример из книги по scala от ее автора Одерски, при желании получить больше понимания можно почитать.

Если кто-то любит больше букв, может писать так
str.exists(x => x.isUpper)
или с предикатом в явном виде так
str.exists(x => (x.isUpper == true))
или даже так
str exists (_.isUpper == true)


Вообще, чтоб лучше понять краткость можно почитать про функциональный подход для работы с наборами данных (data sets/data frames).
Тем более, это может быть близко разработчикам баз данных.

Например, надо объединить два списка, возвести элементы в квадрат и вернуть те, что больше 50.
scala> (List(11, 3) ::: List(5, 8)).map(x => x * x).filter(x => x > 50)
res1: List[Int] = List(121, 64)

Или, допустим, посчитать накопительную сумму в обратном порядке
scala> List(1, 3, 5, 10).scanRight(0)((prev, current) => prev + current).reverse.tail
res1: List[Int] = List(10, 15, 18, 19)
И это можно передать дальше в функцию, которая оперирует над списками, без всяких присваиваний.

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

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

booby
Что это прорыв в куда-то, я бы сам не догадался.
Не очень понятно почему речь про прорыв если концепт функционального программирования был придуман еще до твоего рождения.
+
1. Lambda Calculus (Church & Rosser 1936)
2. LISP (McCarthy 1960)
3. Algol 60 (Naur et al. 1963)
4. ISWIM (Landin 1966)
5. PAL (Evans 1968)
6. SASL (1973–83)
7. Edinburgh (1969–80) — NPL, early ML, HOPE
8. Miranda (1986)
9. Haskell (1992 . . . )

Some History of Functional Programming Languages
https://www.cs.kent.ac.uk/people/staff/dat/tfp12/tfp12.pdf

Есть ряд причин почему функциональные языки не получили популярности до появления определенных вычислительных мощностей.
Но они не так прожорливы к памяти при использовании immutable vals как некоторые могут подумать.
Есть задачи для которых функциональные языки не лучший выбор. Для каждой специфики свой инструмент.
20 сен 18, 18:52    [21681299]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
SY
тоже считаешь вызов ф-ции/обертка в тип предпочтительней явному присваиванию?
Я считаю что когда человек делает заявления не основании допущений или измышлений - он может выглядеть нелепо.

Так же как и кулик, который свое болото хвалил и дальше своего носа не видит.
20 сен 18, 18:56    [21681302]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
dbms_photoshop
Среди преимуществ функционального подхода можно выделить

Все это здорово, но PL/SQL - все-таки императивный, странно требовать от него "функциональный функционал".
...возникла стойкая ассоциация с коллегами, приходящими из того же MSSQL и упорно выясняющими "как вернуть зарос из функции", "как динамически создать временную таблицу...
20 сен 18, 19:31    [21681321]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
booby
Но, глядя на то, как программируют люди на "самых современных языках"
Напомнило разговор на сходке, где была высказан "недостаток" perl в том, что он плохо читаем.
Ну так зависит от писателей. И чем мощнее язык тем более непонятным можно сделать код.

С чрезмерным использованием implicit conversions на scala вообще можно писать полную дичь.

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

И, кстати, "самые современные языки" часто имеют намного более богатые возможности по реализации логики так, чтоб ошибки были обнаружены еще на этапе компиляции.
Речь, в частности, про statically typed languages + type inference.
20 сен 18, 19:47    [21681333]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
andrey_anonymous
Все это здорово, но PL/SQL - все-таки императивный, странно требовать от него "функциональный функционал".
Он настолько же функциональный как и возможность сделать
коллекция операция коллекция
и получить коллекцию.
andrey_anonymous
...возникла стойкая ассоциация с коллегами, приходящими из того же MSSQL и упорно выясняющими "как вернуть зарос из функции", "как динамически создать временную таблицу...
Ну я пришел из MSSQL, особого желания создавать временные таблицы на лету не имел.
А шо такое "вернуть зарос из функции"? В Оракле такое нельзя а в MSSQL можно?
20 сен 18, 19:51    [21681337]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
dbms_photoshop
Он настолько же функциональный как и возможность сделать
коллекция операция коллекция
и получить коллекцию.
Java вроде пока не функциональный язык.

SQL> create or replace and compile java source named dummysrc as
  2  class MyClass
  3  {public static int doIt(){return ("Hello " + "World").length();}}
  4  /

Java created.

SQL> create or replace function fJava return number
  2  as language java name 'MyClass.doIt() return int';
  3  /

Function created.

SQL> select fJava from dual;

     FJAVA
----------
        11


При этом выделенное прекрасно работает. И это то, что я считаю логичным.
Так что хотелка обусловлена желанием иметь более "консистентный" язык вместо попыток объяснять исторически сложившиеся ограничения к которым так привык.

Ну и я изначально написал "праздный интерес", так что мне не так припекает, чтоб я создавал SR. :)
20 сен 18, 21:23    [21681398]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
booby
Member

Откуда:
Сообщений: 1609
dbms_photoshop,

а) не тебе делить мир на до моего рождения и после.
б) речь не шла о функциональных языках программирования.
здесь "функциональная обертка", это самописная замена для x := treat(нечто as тип);
там, где treat() не работает.

в) будешь писать sr - скажи им, что в этом месте в pl/sql мог бы работать cast().

-----------------
2 xtender
я вполне понимаю, что техническая причина, по которой в обсуждаемом месте скобки ломают
разбор выражения, скорее всего, никак не связаны с моими мечтами о
фортрано-подобных гарантиях его вычисления.
Но желания "ломать и дальше " от себя проявлять не буду.
20 сен 18, 21:51    [21681424]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
booby
не тебе делить мир на до моего рождения и после
Буби, ты сильно высокого о себе мнения.
Но твоя перманентно бурная реакция на мои сообщения доставляет, поэтому я тебе иногда и отвечаю, чисто чтоб повеселиться.

Вообще стиль общения у тебя и SY с указанием куда мне идти и что делать - это отдельная тема.
Я воздержусь и не буду говорить куда вам стоит отправиться и чем заняться.
20 сен 18, 22:02    [21681437]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
booby
Member

Откуда:
Сообщений: 1609
dbms_photoshop
...
Я воздержусь и не буду говорить куда вам стоит отправиться и чем заняться.

О как.
Надо понимать так, что ранее ты не все сказал.
И у тебя ещё есть запас слов, добрый самаритянин.
Веселись.
20 сен 18, 22:20    [21681452]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Дельфин3
Member

Откуда:
Сообщений: 1
Скажите пожалуйста при создании materialized view создается ли таблица с идентичным именем в которую и загружаются/изменяются данные, а при обращении к матвью показывает результат этой таблицы?
25 сен 18, 23:15    [21686045]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28493
Дельфин3
Скажите пожалуйста при создании materialized view создается ли таблица с идентичным именем в которую и загружаются/изменяются данные, а при обращении к матвью показывает результат этой таблицы?
В этой теме серьёзных вопросов не задают.
Или ты это так аляповато решил дебютировать с крайне неудачной шуткой?
26 сен 18, 07:37    [21686190]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Cavia porcellus
Member

Откуда:
Сообщений: 40
Сорри за тупой вопрос.

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

Может кто-нибудь ясность внести?
1 окт 18, 13:48    [21691160]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28493
Cavia porcellus
выдаю желаемое за действительное и эта фича мне просто приснилась...
Приснилось.
Много сахара было в другую сторону - из PL/SQL в SQL.
1 окт 18, 14:39    [21691299]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
Я тоже ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)

SQL> create or replace
  2  function f return int as begin retrun 1; end;
  3  /

Warning: Function created with compilation errors.

SQL> sho err
Errors for FUNCTION F:

LINE/COL ERROR
-------- -----------------------------------------------------------------
1/39     PLS-00103: Encountered the symbol "1" when expecting one of the
         following:
         := . ( @ % ;
         The symbol ":=" was substituted for "1" to continue.

SQL> with
  2  function f return int as begin retrun 1; end;
  3  select f from dual
  4  /
function f return int as begin retrun 1; end;
         *
ERROR at line 2:
ORA-00905: missing keyword
missing keyword, really?

Разработчикам SQL и PL/SQL движков надо чаще общаться.

Вот только не надо рассказывать, что если бы единица была в скобках - всё было бы иначе.
21 окт 18, 18:39    [21710378]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
-2-
Member

Откуда:
Сообщений: 14114
dbms_photoshop
missing keyword, really?
Ну ведь, действительно миссинг. Кто скажет, что f это кейворд, пусть первым бросит в Ларри камень.
21 окт 18, 20:52    [21710449]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
-2-
dbms_photoshop
missing keyword, really?
Ну ведь, действительно миссинг. Кто скажет, что f это кейворд, пусть первым бросит в Ларри камень.
21 окт 18, 21:44    [21710489]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28493
dbms_photoshop
в очередной раз с оракловских сообщениях об ошибках
Да ладно. Всяко получше, чем
ORA-01002: выборка из последовательности
22 окт 18, 09:54    [21710743]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
А что такое ретрун?
22 окт 18, 14:29    [21711098]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
andrey_anonymous,

Можно предположить, что это акроним от Retry Run, но более вероятно что в return пару букв перепутались.
Впрочем, компилятору не надо думать про вероятности.
22 окт 18, 14:39    [21711117]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
dbms_photoshop
компилятору не надо думать

Это верно, он ведь просто автомат, причем конечный.
И потому ситуация с диагностическими сообщениями изменится только тогда, когда интерпретацией кода будет заниматься ИИ...
А до тех светлых времен к компиляторам прилагается эрзац-ИИ в виде разработчика, в задачу которого входит, кроме всего прочего, интерпретация сообщений об ошибках компиляции в контексте конкретного кода.
Как-то так...
22 окт 18, 16:45    [21711379]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
-2-
Member

Откуда:
Сообщений: 14114
andrey_anonymous
до тех светлых времен
Изначально, в вресии 12.1, оно реагировало как и в plsql: встретился символ 1. Непоправимо приблизили светлые времена в последующих версиях.
22 окт 18, 18:43    [21711588]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 25 26 27 28 29 30 31 32 [33] 34   вперед  Ctrl
Все форумы / Oracle Ответить