Комментарии 53
дайте дураку инструмент, которым сможет пользоваться даже дурак, и только дурак им и будет пользоваться (с)
Язык в котором нет циклов… Просто прелесть.
Видимо сделали хвостовую рекурсию, как в Лиспе.
В Haskell нет циклов
Haskell, так скажем, изначально заявлен как pure functional. И отнюдь не low-code. Хотя я бы с удовольствием взглянул на пример того, как в нем можно зафигачить UI, организовать работу с БД или с сетью (например, 3 повторных попытки отправки GET запроса в случае неудачи).
В C# я тоже могу завернуть что-то вроде
вместо
но от такого извращения никому же не легче, кроме ортодоксальных функциональщиков (без обид).
В этом же поделии, нет процедур и функций, кроме сотни встроенных (из которых половина — математические), нет функций высшего порядка, нет модулей,… да ничего толком нет, что могло бы хоть как-то помочь более-менее опытному разработчику.
Так что, как платформа для разработки приложений в 1 экран с 2 кнопками, на 10 пользователей — да норм. Как энтерпрайз инструмент — чисто для PoC. Чтобы потом концепт переписать на чем-то нормальном вроде Xamarin или Flutter.
У меня просто есть опыт разработки этих канвасов, и скажу я вам, ощущаешь себя в 60х годах прошлого века, как-будто программируешь на бейсике. Только в котором даже GOTO нет. Все в этом языке просто принуждает писать костыли и говнокод. В общем, для меня лично — это мрак. Но кому-то может и понравится.
В C# я тоже могу завернуть что-то вроде
Enumerable.Range(0,10).ForEach(i => { });вместо
for(i = 0; i < 10; i++)но от такого извращения никому же не легче, кроме ортодоксальных функциональщиков (без обид).
В этом же поделии, нет процедур и функций, кроме сотни встроенных (из которых половина — математические), нет функций высшего порядка, нет модулей,… да ничего толком нет, что могло бы хоть как-то помочь более-менее опытному разработчику.
Так что, как платформа для разработки приложений в 1 экран с 2 кнопками, на 10 пользователей — да норм. Как энтерпрайз инструмент — чисто для PoC. Чтобы потом концепт переписать на чем-то нормальном вроде Xamarin или Flutter.
У меня просто есть опыт разработки этих канвасов, и скажу я вам, ощущаешь себя в 60х годах прошлого века, как-будто программируешь на бейсике. Только в котором даже GOTO нет. Все в этом языке просто принуждает писать костыли и говнокод. В общем, для меня лично — это мрак. Но кому-то может и понравится.
Я пишу на с# в первом стиле, и считаю, что так лучше.
1. В цикле можно ошибится с границами, очень легко, особенно если меняешь чужой код
2. LINQ распараллеливается одной строкой
3. Можно продолжить чейнинг другими операциями, и результат вернуть, не мутируя переменные или коллекции внутри цикла, что опять может привести к ошибкам.
1. В цикле можно ошибится с границами, очень легко, особенно если меняешь чужой код
2. LINQ распараллеливается одной строкой
3. Можно продолжить чейнинг другими операциями, и результат вернуть, не мутируя переменные или коллекции внутри цикла, что опять может привести к ошибкам.
Это ваше право, но в реальности это не всегда возможно.
Первое что приходит в голову, как, к примеру, выйти из такого цикла на 4 итерации, не проходя по оставшимся?
Я уже молчу про while и do..until.
Первое что приходит в голову, как, к примеру, выйти из такого цикла на 4 итерации, не проходя по оставшимся?
Я уже молчу про while и do..until.
В java есть stream api, вроде первого примера выше, который используется в основном для обработки коллекций. Такой код удобно читать в одном направлении, в то время как в коде с циклом возникает вопрос: нет ли break где-то в середине, или изменения условия, влияющего на продолжение цикла? Если цикл по индексу, то также ожидаешь найти зависимость результата от индекса.
Так что считаю рациональным использовать функциональный подход для простых условий, и использовать цикл там где условия или группировки тяжело выразить в линейном коде.
А в чем проблема то?
Да и while всяких много ))
тут тонна кода по работе с базой
тут ваяют графический интерфейс
until :: (a -> Bool) -> (a -> a) -> a -> a
until p f = go
where
go x | p x = x
| otherwise = go (f x)
Да и while всяких много ))
тут тонна кода по работе с базой
тут ваяют графический интерфейс
С лёгкостью, если это вообще нужно.
Есть .TakeWhile
Но это настолько редко нужно, что раз в год вспоминаю. Циклы иногда удобнее, но не так уж часто, раз из десяти. Вообще, в большинстве приложений лучше бы писать без мутаций, кроме тех случаев, когда это действительно удобнее или производительнее.
Жаль, когда создавали сишарп, это ещё не было популярно.
Есть .TakeWhile
Но это настолько редко нужно, что раз в год вспоминаю. Циклы иногда удобнее, но не так уж часто, раз из десяти. Вообще, в большинстве приложений лучше бы писать без мутаций, кроме тех случаев, когда это действительно удобнее или производительнее.
Жаль, когда создавали сишарп, это ещё не было популярно.
> 2. LINQ распараллеливается одной строкой
Довольно часто вижу это утверждение для подобных конструкций. А кому-нибудь вообще приходилось распараллеливать что-то «одной строкой»? Вот так, чтобы просто пришел, распараллелил и ушел? Обычно ведь нужно сидеть и долго искать не thread-safe функции, расставлять мьютексы, считать профит между параллелизацией и потерей на создании потоков и синхронизации…
Довольно часто вижу это утверждение для подобных конструкций. А кому-нибудь вообще приходилось распараллеливать что-то «одной строкой»? Вот так, чтобы просто пришел, распараллелил и ушел? Обычно ведь нужно сидеть и долго искать не thread-safe функции, расставлять мьютексы, считать профит между параллелизацией и потерей на создании потоков и синхронизации…
Не очень удачный пример у вас если честно — оптимизируется до «оператора точка с запятой»
В реальности все зависит от того что внутри цикла — если вам надо над каждым элементом выполнить какую-то операцию, то удобней обычный цикл; если вам какую-нибудь сумму преобразованных элементов посчитать — удобней LINQ и функциональный стиль.
Тоже самое касается и «полноценного приложения» — сильно зависит от того что вы хотите получить. Некоторым нужен экран и 2 кнопки.
В этом же поделии, нет процедур и функций, кроме сотни встроенных (из которых половина — математические), нет функций высшего порядка, нет модулей,… да ничего толком нет, что могло бы хоть как-то помочь более-менее опытному разработчику.
Справедливости ради, недавно анонсировали, что в Excel завезли лямбды и теперь он Turing-complete: https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/
Если они берут функции из экселя, то и лямбды возьмут.
Электронные таблицы — это "многозадачный язык", в котором все "строки" выполняются одновременно. Это не единственный подобный язык, "лестничная логика" такая же. Не представляю, куда там можно приткнуть циклы.
Да, но Power Fx позиционируется как язык для создания low-code бизнес-приложений, а не таблиц. Для таблиц есть эксель — и его хватает с головой. А вот для мобильного приложения (частный случай использования этого, так сказать, языка программирования), где необходимо по ненадежной сети взаимодействовать с удаленными источниками данных, циклы иногда могут пригодиться, так же как и исключения и их обработка. А ими в нем и не пахнет.
Объясните девушке, что может этот Power Fx такого, что не мог VBA? Порог входа ещё ниже? — Вряд ли. Может было лучше проапгрейлить VBA до современного уровня, или он совсем труп?
Microsoft планирует открыть исходный код Power Fx под лицензией MIT.
Будет классно если его интегрируют в LibreOffice.
Что-то коментаторы упустили важный абзац
Если кто-то в курсе вообще про Power BI то сразу понял, зачем и куда этот новый язык. Это ни разу не конкурент ни C# ни даже VBA. Это расширение Power BI возможностями для кастомизации UI и writeback функциональности. Ни больше ни меньше.
Еще и уточнение есть:
Microsoft уточнила, что Power Fx будет дополнять языки M и DAX в Power BI
Если кто-то в курсе вообще про Power BI то сразу понял, зачем и куда этот новый язык. Это ни разу не конкурент ни C# ни даже VBA. Это расширение Power BI возможностями для кастомизации UI и writeback функциональности. Ни больше ни меньше.
Еще и уточнение есть:
Power Fx фокусируется на чтении и записи небольших наборов реляционных данных.
Если кто-то в курсе вообще про Power BI то сразу понял, зачем и куда этот новый язык.Насколько я понимаю, Power Fx не для Power BI, а для Power Platform:
Язык Power Fx предназначен для настройки процессов в Power Platform — платформе Microsoft для создания бизнес-решений и автоматизации рутинных задач.По этой причине он и работает с небольшим набором данных (так как там больше и не требуется).
ну да, согласен для всей PowerPlatform. Правда в ней собственно и есть только что Power BI да Power Apps и так по мелочи
А мелочи это: Power Automate, Dataverse (бывший CDS), и куча коннекторов к 100500 источникам данных, начиная от различных SQL баз и заканчивая системами документооборота. Кстати, большинство продуктов из линейки MS Dynamics теперь являются частью Power Platform (D365 for Sales (бывший CRM), D365 Finances & Operations (бывшая Axapta), и т.д.). Ну, в принципе, да, так, по мелочи.
А кто может объяснить вот это:
Язык Power Fx предназначен для настройки процессов в Power Platform — платформе Microsoft для создания бизнес-решений и автоматизации рутинных задач.
Microsoft планирует открыть исходный код Power Fx под лицензией MIT.Это как? Язык бесплатный, но платформа (например, Power Apps), где он используется платная? И в чем смысл?
Чем это лучше, например, чем Python? Лучше бы VBA в своих офисных программах заменили на питон.
Порог входа? Тут любой менеджер, хотя бы пару раз писавший формулы в экселе сможет что-то сваять простое. Как заставить сделать его то же на питоне?
Покажите мне такого любого менеджера, умеющего в экселе?
Внезапно, я больше встречаю тех, кто лезет в VBA, ещё не умея в ехсель, вместо того, чтобы применить правильные формулы. Внезапно, эти формулы уже на столько наворочены, что многие даже не знают, что эти формулы умеют.
Так что, я считаю, кто умеет в экселе, тот легко сумеет и в питоне. Увы, таковых очень немного.
А уж те, кто может в пандас, на общем фоне кажутся просто волшебниками!
Внезапно, я больше встречаю тех, кто лезет в VBA, ещё не умея в ехсель, вместо того, чтобы применить правильные формулы. Внезапно, эти формулы уже на столько наворочены, что многие даже не знают, что эти формулы умеют.
Так что, я считаю, кто умеет в экселе, тот легко сумеет и в питоне. Увы, таковых очень немного.
А уж те, кто может в пандас, на общем фоне кажутся просто волшебниками!
Тут любой менеджер, хотя бы пару раз писавший формулы в экселе сможет что-то сваять простоеА потом сказать программисту: «Я тут самое важное сделал, допиши до вечера».
Так же как на VBA:
Жмак на красную кнопку, сделал руками что надо один раз, перешел в редактор кода и подправил конкретику на переменные. Возможно обернул в цикл.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Microsoft представила язык программирования Power Fx