AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.12.2015, 15:47   #21  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
F# - шутку заценил )

Цитата:
Сообщение от belugin Посмотреть сообщение
В X++ уже есть геттеры и сеттеры. Свойств нет.
убедил.

да, я имел в виду что нет синтаксического сахара, который автоматически вместо наименования поля вызывает геттер или сеттер.

Цитата:
Сообщение от belugin Посмотреть сообщение
А разница между val и var, в общем, как раз как между readonly или const и var или просто полем.
Не-а!
Ты будешь смеяться. Но семантически ни val, ни var ничего не значат.
просто val говорит компилятору автоматически сформировать геттер для данного свойства.
а var - автоматически сформировать геттер и сеттер для свойства.

и все.
дальнейший анализ и поведение определяется не ключевыми словами val, var, а наличием геттера-сеттера.

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

со всеми вытекающими последствиями для тех, кто пишет, и тех, кто читает.


Цитата:
Сообщение от belugin Посмотреть сообщение
Фичи типа const и readonly служат как раз чтобы дать по рукам говнокодерам или себе который то же человек, которому свойственно ошибаться.
бгггг.
угу. геттер и сеттер выполняют те же функции. плюс кучу других обязанностей.
а код проще для понимания.

если говорить про Аксапту, то примерно так произошло с наследованием таблиц.
ввели фичу. а можно было сделать намного проще. ))))


я собственно об этом и говорю - можно подсмотреть как выглядит уже реализованная идея и подсмотреть на последствия.

Последний раз редактировалось mazzy; 17.12.2015 в 15:54.
Старый 17.12.2015, 16:41   #22  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
F# - шутку заценил )
Расшифруй.

Цитата:
Ты будешь смеяться. Но семантически ни val, ни var ничего не значат.
Ты уверен, что знаешь что такое "семантически"?


Classes in Kotlin can have properties. These can be declared as mutable, using the var keyword or read-only using the val keyword



Цитата:
просто val говорит компилятору автоматически сформировать геттер для данного свойства.
а var - автоматически сформировать геттер и сеттер для свойства.

и все.
Постой, отсутствие целого метода для тебя не семантическая разница?

Да и для переменных тоже самое. Просто полей нет и все унифицированно чисто синтаксически.

Цитата:
бгггг.
угу. геттер и сеттер выполняют те же функции. плюс кучу других обязанностей.
а код проще для понимания.
Чуть меньше ключевых слов за счет отказа от полей.
Старый 17.12.2015, 17:08   #23  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Расшифруй.
ты назвал F# практическим )

Цитата:
Сообщение от belugin Посмотреть сообщение
Ты уверен, что знаешь что такое "семантически"?
Конечно же нет. Рассказывай.

Цитата:
Сообщение от belugin Посмотреть сообщение
Classes in Kotlin can have properties. These can be declared as mutable, using the var keyword or read-only using the val keyword
угу. именно "declared", именно "объявляется".
И обрати внимание, здесь не сказано, что это единственный способ "объявить" ))))

а является mutable, если есть сеттер. заданный любым образом.
хоть через var, хоть вручную написанный сеттер.

Цитата:
Сообщение от belugin Посмотреть сообщение
Постой, отсутствие целого метода для тебя не семантическая разница?
Отсутствие метода - семантическая разница.
Но не отсутствие ключевого слова.

Если ключевое слово отсутствует, но сеттер задан вручную, то свойство является mutable.
Если сеттер отсутствует, но есть геттер, то свойство является readonly.
Если и сеттер, и геттер отсутствуют, то свойство является private для класса.

макс, ну ощути жеж разницу.
познай темную сторону силы мощь конвенций.

Еще раз:
= ключевое слово не имеет значения (семантики)
= ключевое слово всего-лишь заставляет компилятор объявить дефолтный геттер и/или сеттер. (синтаксический сахар)
= значение имеет лишь наличие или отсутствие геттера или сеттера.

Важно: геттер или сеттер можно объявлять вручную и без ключевого слова.

Цитата:
Сообщение от belugin Посмотреть сообщение
Да и для переменных тоже самое. Просто полей нет и все унифицированно чисто синтаксически.
ну, как скажешь...


Цитата:
Сообщение от belugin Посмотреть сообщение
Чуть меньше ключевых слов за счет отказа от полей.
Когда-нибудь... мы вместе с улыбкой будем вспоминать...

Последний раз редактировалось mazzy; 17.12.2015 в 17:26.
Старый 17.12.2015, 18:19   #24  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
ты назвал F# практическим )
Для определенных применений вполне. type providers, декларация и вывод единиц измерения.

Цитата:
Конечно же нет. Рассказывай.
Я кажется понял, что ты имел ввиду. Ты не хотел сказать что они не имеют семантической разницы с другим способом определения. А не что у них нет значения.

Цитата:
= ключевое слово не имеет значения (семантики)
= ключевое слово всего-лишь заставляет компилятор объявить дефолтный геттер и/или сеттер. (синтаксический сахар)
Ок ладно. Для меня эти два пукта противоречивы. Для меня семантики в языке программирования нет только у текста комментария.
Старый 17.12.2015, 19:13   #25  
AP-1055D is offline
AP-1055D
Участник
 
351 / 92 (4) ++++
Регистрация: 01.06.2011
Ещё пару слов про сахар. На Хабре была интересная статья Назад в будущее, или Hello World сегодня и тридцать лет назад. В ней приведена реализация одного и того же приложения (Hello, World!) для Windows 1 и для Windows 10. Первая реализация написана на С++, а вторая на JavaScript. Мне очень интересно, и я думал сделать опрос, в котором хотел спросить какая реализация интуитивно понятнее: на C++ или JS + UWP. Для меня, несмотря на то, что я уже довольно долго пишу на AngularJS, а также для других разработчиков, выразивших своё мнение в комментариях, интуитивно понятнее оказалась реализация на C++. Вот полностью моё мнение:

Цитата:
но самое главное… – это сильно возросшая выразительность API.

возможности использовать promise сильно облегчают написание кода и его читаемость


var promise = new WinJS.Promise.join([
WinJS.Resources.processAll(),
WinJS.UI.processAll()
// Add basic logic
]).then(function () {
// Update window title

Да тут читаемость вообще зашкаливает.

Я в 1997 году в Delphi бы форму с кнопкой About которая вызывает диалоговое окно сделал бы в общей сложности написав одну строку «Form2.ShowModal()».
За это сообщение автора поблагодарили: Lemming (3).
Старый 17.12.2015, 19:32   #26  
AP-1055D is offline
AP-1055D
Участник
 
351 / 92 (4) ++++
Регистрация: 01.06.2011
Поэтому, я думаю, что всё хорошо в меру и не стоит вводить более сложные и менее очевидные вещи туда, где это явно будет лишним. И ERP вот точно не то место, где нужно всеми силами стремиться к чистоте кода, математическим абстракциям, анонимным функциям и прочему.
Старый 17.12.2015, 19:54   #27  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
Ещё пару слов про сахар. На Хабре была интересная статья
Разве не видно, что язык тут не причем a а виновата тотальная асинхронность введенная для поддержки мобильных дивайсов?\

UPD сравните с версией на C# + XAML

Последний раз редактировалось belugin; 17.12.2015 в 20:12.
Старый 17.12.2015, 20:09   #28  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
Поэтому, я думаю, что всё хорошо в меру и не стоит вводить более сложные и менее очевидные вещи туда, где это явно будет лишним. И ERP вот точно не то место, где нужно всеми силами стремиться к чистоте кода, математическим абстракциям, анонимным функциям и прочему.
Мне кажется тут все скопом, про неочевидность согласен, про остальное непонятно. Как вы, например, понимаете чистоту кода, к которой надо стремиться?

например какой код более очевиден:

X++:
int I;
for (I=1; I<=conLen(items); I++)
{
   if (conPeek(items, I) > 10)
   {
       print  conPeek(items, I);
   }
}
X++:
foreach(var item in items.Where(x => x>10))
{
    print item;
}
Старый 17.12.2015, 20:45   #29  
AP-1055D is offline
AP-1055D
Участник
 
351 / 92 (4) ++++
Регистрация: 01.06.2011
Цитата:
Сообщение от belugin Посмотреть сообщение
Разве не видно, что язык тут не причем a а виновата тотальная асинхронность введенная для поддержки мобильных дивайсов?\

UPD сравните с версией на C# + XAML
Вы правы про асинхронность, но мобильные устройства тут ни при чём. Дело в том, что JavaScript это однопоточный язык, и для того, чтобы реализовать загрузку данных с сервера таким образом, чтобы в это же время (как если бы у нас были ещё потоки) можно было бы сохранить отзывчивость интерфейса, выполнять другие задачи, ввели понятие асинхронности. В рамках отдельных фреймворков (AngularJS, TypeScript) для реализации асинхронности используют механизм обещаний (promise). Таким образом, дело именно в языке: в C++ есть многопоточность, и она доступна из коробки. В JavaScript её нет. Кстати, в статье на C++ используется callback: подобие promise.
За это сообщение автора поблагодарили: belugin (4).
Старый 17.12.2015, 20:58   #30  
AP-1055D is offline
AP-1055D
Участник
 
351 / 92 (4) ++++
Регистрация: 01.06.2011
Цитата:
Сообщение от belugin Посмотреть сообщение
Мне кажется тут все скопом, про неочевидность согласен, про остальное непонятно. Как вы, например, понимаете чистоту кода, к которой надо стремиться?

например какой код более очевиден:

X++:
int I;
for (I=1; I<=conLen(items); I++)
{
   if (conPeek(items, I) > 10)
   {
       print  conPeek(items, I);
   }
}
X++:
foreach(var item in items.Where(x => x>10))
{
    print item;
}
Первый код мне более понятен интуитивно, и, главное, я знаю как его расширять, вводить дополнительные условия при необходимости.

Второй код мне, разумеется, тоже понятен. Он более чище чем первый. Но что будет если нужно будет реализовать несколько более сложное условие? Красота в одну строку пропадёт.

Про красоту и чистоту кода можно говорить и спорить долго и тут у каждого своя правда, мораль, вкус.

Кстати, посмотрите ещё одну статью на Хабре про толстые стрелочные функции, и подумайте о коде в конце. Он чист? Да! Прост? Очевиднее? Вопрос,,, А ведь эти люди пишут на JavaScript.
За это сообщение автора поблагодарили: mazzy (2).
Старый 17.12.2015, 21:33   #31  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
Дело в том, что JavaScript это однопоточный язык, и .
Не знал. Чт просто знаю, что в winphone все API переданы на асинхронныет чтобы меньше нагружали и были responsive.

А это именно свойство языка? Т.е. Где то в языке есть такая семантика, что нельзя много потоков или просто текущий рантайм такой?
Старый 17.12.2015, 21:43   #32  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
Второй код мне, разумеется, тоже понятен. Он более чище чем первый. Но что будет если нужно будет реализовать несколько более сложное условие? Красота в одну строку пропадёт.
Вам просто непривычно. Логически во втором способе явно обозначено действие
И меньше возможности ошибся.

С многострочностью можно бороться также как вы делаете в x++ SQL - при помощи отступов. А еще условия в функции и константы.

Просто есть некая привычка.
Старый 18.12.2015, 01:54   #33  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
...И ERP вот точно не то место, где нужно всеми силами стремиться к чистоте кода, математическим абстракциям, анонимным функциям и прочему.
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
...это однопоточный язык...
дело в том, что современный вектор развития направлен не на математические абстракции,
а на контроль над многопоточным приложением, на параллельные вычисления.

вот хорошая лекция "про это" Зачем писать в стиле LINQ, Java Stream

параллельная обработка - ой как нужна в ERP
распараллелить расчет зарплаты, расчет налоговых регистров, расчет себестоимости.
и ведь в Аксапту все равно приходится вводить параллельную обработку (см. расчет себестоимости). Тот проект, где я сейчас работаю, без параллельных вычислений давно сдох бы. На этом проекте почти все выполняется в многопоточном фреймворке.

Последний раз редактировалось mazzy; 18.12.2015 в 02:08.
Старый 18.12.2015, 03:20   #34  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Для меня семантики в языке программирования нет только у текста комментария.
)))))
ну, как же? а макросы?
макросы не имеют семантики, но имеют синтаксис.

var/val в Котлине не имеет семантики, а просто заставляет компилятор сделать некие действия за программиста (некие суперинтеллектуальные макросы, которые позволяют объявить методы - геттеры и сеттеры).
var/val в Котлине ничего не значат, если эти некие действия программист уже сделал вручную.

Поэтому в Котлине семантику имеют только методы. Или отсутствие методов. Так работают соглашения.


про семантику:
почитай, например, про const у Страустрапа. Еще со второго издания const имеет семантику в C++.
Особенно меняется смысл у функций с const-аргументами и const-результатами.
Код:
const char* pc = "asdf"; // указатель на константу
pc[3] = 'a'; // ошибка
pc = "ghjk"; // нормально

char *const cp = "asdf"; // указатель-константа
cp[3] = 'a'; // нормально
cp = "ghjk"; // ошибка

const char *const cpc = "asdf"; // указатель-константа на const
cpc[3] = 'a'; // ошибка
cpc = "ghjk"; // ошибка

pc = cp; // ошибка?
cp = pc; // ошибка?
cpc = pc; // ошибка?
pc = cpc; // ошибка?
cpc = cp; // ошибка?
cp = cpc; // ошибка?

// 4 разные сигнатуры! 
char* strcpy(char* p, const char* q); // не может изменять *q 
const char* strcpy(char* p, const char* q); // не может изменять *q, возвращает указатель на константу
char*const strcpy(char* p, const char* q); // не может изменять *q, возвращает указатель-константу
const char*const strcpy(char* p, const char* q); // не может изменять *q, возвращает указатель-константу на const


кстати, const в ax7 похоже не имеет семантики, а только синтаксис )
mfp: X++ in AX7: Const keyword
надо будет проверить конструкцию
X++:
const List myList1;
const List myList2 = new List();
если не компилируется первая строчка, значит const имеет только синтаксис. Как и var/val. Только сильно попроще.

Последний раз редактировалось mazzy; 18.12.2015 в 03:32.
Старый 18.12.2015, 07:50   #35  
AP-1055D is offline
AP-1055D
Участник
 
351 / 92 (4) ++++
Регистрация: 01.06.2011
Цитата:
Сообщение от mazzy Посмотреть сообщение
дело в том, что современный вектор развития направлен не на математические абстракции,
а на контроль над многопоточным приложением, на параллельные вычисления.

вот хорошая лекция "про это" Зачем писать в стиле LINQ, Java Stream

параллельная обработка - ой как нужна в ERP
распараллелить расчет зарплаты, расчет налоговых регистров, расчет себестоимости.
и ведь в Аксапту все равно приходится вводить параллельную обработку (см. расчет себестоимости). Тот проект, где я сейчас работаю, без параллельных вычислений давно сдох бы. На этом проекте почти все выполняется в многопоточном фреймворке.
На самом деле современный вектор развития направлен именно на математические абстракции, более чистое, функциональное программирование. Во-первых, в основу LINQ положено понятие лямбда-исчисления. Это математическая абстракция, введённая математиком Алонзо Чёрчем. Во-вторых, LINQ разрабатывалась как абстракция доступа к данным. Мы хотим получать результат на разных типах данных, используя один язык, способ. Это абстракция, направленная на унификацию работы с данными, не имеющая ничего общего с параллельными вычислениями. В третьих, как уже говорил, сейчас наблюдается введение элементов функционального программирования. Однако, функциональное программирование не ставит цели распараллеливание кода.

Для параллельного программирования можно использовать более подходящие средства. Например, в СУБД для реализации параллельных запросов используют массивно-параллельную архитектуру (MPP). А в C++ есть замечательная библиотека MPI без всякого функционального программирования и прочих абстракций и парадигм.

А Linq2SQL это для достаточно простых запросов и небольших данных. Как только появляются более сложные запросы или большие данные возвращаются к обычному SQL.
Старый 18.12.2015, 08:02   #36  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
Первый код мне более понятен интуитивно, и, главное, я знаю как его расширять, вводить дополнительные условия при необходимости.

Второй код мне, разумеется, тоже понятен. Он более чище чем первый. Но что будет если нужно будет реализовать несколько более сложное условие? Красота в одну строку пропадёт.
Второй код не чище, он выразительней. Читая его, сразу понимаешь что хотел сказать автор. Сложнее ли его поддерживать? Не уверен что тут всё так однозначно. Возможно для внесения определённых изменений в такой код придётся больше зачеркивать и переписывать чем расширять и дописывать поверх. Но с точки зрения читающего, такое исправление опять же будет более понятным, более выразительным.
Старый 18.12.2015, 08:04   #37  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
Однако, функциональное программирование не ставит цели распараллеливание кода.
Из Википедии

Pure functional programming completely prevents side-effects and provides referential transparency, which makes it easier to verify, optimize, and parallelize programs, and easier to write automated tools to perform those tasks.

См также plinq
За это сообщение автора поблагодарили: AP-1055D (1).
Старый 18.12.2015, 08:13   #38  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
На самом деле современный вектор развития направлен именно на математические абстракции, более чистое, функциональное программирование. Во-первых, в основу LINQ положено понятие лямбда-исчисления. Это математическая абстракция, введённая математиком Алонзо Чёрчем. Во-вторых, LINQ разрабатывалась как абстракция доступа к данным. Мы хотим получать результат на разных типах данных, используя один язык, способ. Это абстракция, направленная на унификацию работы с данными, не имеющая ничего общего с параллельными вычислениями. В третьих, как уже говорил, сейчас наблюдается введение элементов функционального программирования. Однако, функциональное программирование не ставит цели распараллеливание кода.
Функциональное программирование позволяет выражаться декларативно (что делать), а не процедурно (как делать), а уже это даёт возможности к распараллеливанию.
Старый 18.12.2015, 08:14   #39  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
На самом деле современный вектор развития направлен именно на математические абстракции, более чистое, функциональное программирование.
Исследования - да, в сторону абстраций. Потому что там лежат lazy-вычисления, отложенные вычисления.

Но развитие - в сторону параллельности. Особенно в массовых языках.
В лекции об этом и говорилось.

Цитата:
Сообщение от AP-1055D Посмотреть сообщение
Во-первых, в основу LINQ положено понятие лямбда-исчисления. Это математическая абстракция, введённая математиком Алонзо Чёрчем.
В основу - да.

Цитата:
Сообщение от AP-1055D Посмотреть сообщение
Во-вторых, LINQ разрабатывалась как абстракция доступа к данным. Мы хотим получать результат на разных типах данных, используя один язык, способ. Это абстракция, направленная на унификацию работы с данными, не имеющая ничего общего с параллельными вычислениями.
В массовых языках - никто бы не вводил асбтракции.
Они сами по себе нах никому не сдались.

Цитата:
Сообщение от AP-1055D Посмотреть сообщение
В третьих, как уже говорил, сейчас наблюдается введение элементов функционального программирования. Однако, функциональное программирование не ставит цели распараллеливание кода.
функциональное - не ставит, согласен.
но тот вариант функционального программирования, который появляется в массовых языках, появляется именно из-за возможности распараллелить.

сравни хаскель и монадами и та куцая часть функционального программирования, которая попала хотя бы в скалу. не говоря уж об ошметках "функции высшего порядка" в C# и Java...

Цитата:
Сообщение от AP-1055D Посмотреть сообщение
Для параллельного программирования можно использовать
у меня такое ощущение, что вы лекцию не посмотрели.
докладчик так усилено напирал на ответы на ваши вопросы.

Цитата:
Сообщение от AP-1055D Посмотреть сообщение
А Linq2SQL это для достаточно простых запросов и небольших данных. Как только появляются более сложные запросы или большие данные возвращаются к обычному SQL.
)))))))
а почему только SQL? это ж реляционные данные.

вон, даже в аксапту вводят совершенно нереляционную entity.
Старый 18.12.2015, 08:47   #40  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
)))))
ну, как же? а макросы?
макросы не имеют семантики, но имеют синтаксис.
Макросы имеют семантику в макропроцессоре.

Мы по разному понимаем выражение "имеет семантику", вернемся к аналогиям с С#

X++:
fun main(args: Array<String>) {
    var a = "1";
    a = "2";
}
Зайди на http://try.kotlinlang.org и попробуй поменять var на val.

Будет то же самое, как в C# приписать const к переменной.

Т.е. условно говоря, можно переписать то же самое на с# c чуть большим или чуть меньшим количеством ключевых слов.

Разница непринципиальна.

Само понятие свойств в C# есть.
Теги
f#, kotlin

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Боюсь, что при текущем подходе AX 10 лет у нас не проживет. Ark Курилка 18 29.09.2016 10:17
С вечера пятницы до вечера воскресенья (с 8.10 по 10.10) форум будет недоступен в связи с переездом на новый хостинг. mazzy Информация для участников 0 07.10.2010 21:11
10 минутная готовность: встречаем момент времени 12:34:56 07.08.09 Gustav Детская 8 07.08.2009 14:35
Встреча питерских аксаптеров 31.10.2008 fed Курилка 2 30.10.2008 13:09

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:02.