Comments 53
Язык в котором нет циклов… Просто прелесть.
Видимо сделали хвостовую рекурсию, как в Лиспе.
В Haskell нет циклов
В 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. Можно продолжить чейнинг другими операциями, и результат вернуть, не мутируя переменные или коллекции внутри цикла, что опять может привести к ошибкам.
Первое что приходит в голову, как, к примеру, выйти из такого цикла на 4 итерации, не проходя по оставшимся?
Я уже молчу про while и do..until.
В java есть stream api, вроде первого примера выше, который используется в основном для обработки коллекций. Такой код удобно читать в одном направлении, в то время как в коде с циклом возникает вопрос: нет ли break где-то в середине, или изменения условия, влияющего на продолжение цикла? Если цикл по индексу, то также ожидаешь найти зависимость результата от индекса.
Так что считаю рациональным использовать функциональный подход для простых условий, и использовать цикл там где условия или группировки тяжело выразить в линейном коде.
until :: (a -> Bool) -> (a -> a) -> a -> a
until p f = go
where
go x | p x = x
| otherwise = go (f x)
Да и while всяких много ))
тут тонна кода по работе с базой
тут ваяют графический интерфейс
Есть .TakeWhile
Но это настолько редко нужно, что раз в год вспоминаю. Циклы иногда удобнее, но не так уж часто, раз из десяти. Вообще, в большинстве приложений лучше бы писать без мутаций, кроме тех случаев, когда это действительно удобнее или производительнее.
Жаль, когда создавали сишарп, это ещё не было популярно.
Довольно часто вижу это утверждение для подобных конструкций. А кому-нибудь вообще приходилось распараллеливать что-то «одной строкой»? Вот так, чтобы просто пришел, распараллелил и ушел? Обычно ведь нужно сидеть и долго искать не thread-safe функции, расставлять мьютексы, считать профит между параллелизацией и потерей на создании потоков и синхронизации…
Не очень удачный пример у вас если честно — оптимизируется до «оператора точка с запятой»
В реальности все зависит от того что внутри цикла — если вам надо над каждым элементом выполнить какую-то операцию, то удобней обычный цикл; если вам какую-нибудь сумму преобразованных элементов посчитать — удобней LINQ и функциональный стиль.
Тоже самое касается и «полноценного приложения» — сильно зависит от того что вы хотите получить. Некоторым нужен экран и 2 кнопки.
В этом же поделии, нет процедур и функций, кроме сотни встроенных (из которых половина — математические), нет функций высшего порядка, нет модулей,… да ничего толком нет, что могло бы хоть как-то помочь более-менее опытному разработчику.
Справедливости ради, недавно анонсировали, что в Excel завезли лямбды и теперь он Turing-complete: https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/
Если они берут функции из экселя, то и лямбды возьмут.
Электронные таблицы — это "многозадачный язык", в котором все "строки" выполняются одновременно. Это не единственный подобный язык, "лестничная логика" такая же. Не представляю, куда там можно приткнуть циклы.
Объясните девушке, что может этот Power Fx такого, что не мог VBA? Порог входа ещё ниже? — Вряд ли. Может было лучше проапгрейлить VBA до современного уровня, или он совсем труп?
Microsoft планирует открыть исходный код Power Fx под лицензией MIT.
Будет классно если его интегрируют в LibreOffice.
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 для создания бизнес-решений и автоматизации рутинных задач.По этой причине он и работает с небольшим набором данных (так как там больше и не требуется).
Язык Power Fx предназначен для настройки процессов в Power Platform — платформе Microsoft для создания бизнес-решений и автоматизации рутинных задач.
Microsoft планирует открыть исходный код Power Fx под лицензией MIT.Это как? Язык бесплатный, но платформа (например, Power Apps), где он используется платная? И в чем смысл?
Внезапно, я больше встречаю тех, кто лезет в VBA, ещё не умея в ехсель, вместо того, чтобы применить правильные формулы. Внезапно, эти формулы уже на столько наворочены, что многие даже не знают, что эти формулы умеют.
Так что, я считаю, кто умеет в экселе, тот легко сумеет и в питоне. Увы, таковых очень немного.
А уж те, кто может в пандас, на общем фоне кажутся просто волшебниками!
Тут любой менеджер, хотя бы пару раз писавший формулы в экселе сможет что-то сваять простоеА потом сказать программисту: «Я тут самое важное сделал, допиши до вечера».
Так же как на VBA:
Жмак на красную кнопку, сделал руками что надо один раз, перешел в редактор кода и подправил конкретику на переменные. Возможно обернул в цикл.
Microsoft представила язык программирования Power Fx