Pull to refresh

Comments 53

UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here

Ничто не мешает тихонечко говнокодить на готовой конфигурации

Текст из блокнота до сих пор можно запустить без промежуточных звеньев.
UFO just landed and posted this here
«… компилировать, консоль… Что?»
UFO just landed and posted this here
Не могу «войти», нет такой команды.
дайте дураку инструмент, которым сможет пользоваться даже дурак, и только дурак им и будет пользоваться (с)
«Мы все дураки. Это прибавляет жизни интереса.» © Доктор Хаус
Но также было сказано «все покупали журналы для дураков, при этом уверяя, что они то не дураки, просто интересно, что там для них пишут»

Язык в котором нет циклов… Просто прелесть.

Видимо сделали хвостовую рекурсию, как в Лиспе.

Haskell, так скажем, изначально заявлен как pure functional. И отнюдь не low-code. Хотя я бы с удовольствием взглянул на пример того, как в нем можно зафигачить UI, организовать работу с БД или с сетью (например, 3 повторных попытки отправки GET запроса в случае неудачи).

В 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 где-то в середине, или изменения условия, влияющего на продолжение цикла? Если цикл по индексу, то также ожидаешь найти зависимость результата от индекса.
Так что считаю рациональным использовать функциональный подход для простых условий, и использовать цикл там где условия или группировки тяжело выразить в линейном коде.

UFO just landed and posted this here

LINQ специально придумали, чтобы мапить запросы в SQL

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

Жаль, когда создавали сишарп, это ещё не было популярно.
> 2. LINQ распараллеливается одной строкой
Довольно часто вижу это утверждение для подобных конструкций. А кому-нибудь вообще приходилось распараллеливать что-то «одной строкой»? Вот так, чтобы просто пришел, распараллелил и ушел? Обычно ведь нужно сидеть и долго искать не thread-safe функции, расставлять мьютексы, считать профит между параллелизацией и потерей на создании потоков и синхронизации…
Когда пишу скрипты, делаю это периодически, когда надо что-то посчитать, но нет времени сильно оптизимировать. Проще один раз загрузить 8 ядер и пойти чайку попить, чем тратить полдня на оптимизацию.
В реальных приложениях реже.

Не очень удачный пример у вас если честно — оптимизируется до «оператора точка с запятой»


В реальности все зависит от того что внутри цикла — если вам надо над каждым элементом выполнить какую-то операцию, то удобней обычный цикл; если вам какую-нибудь сумму преобразованных элементов посчитать — удобней LINQ и функциональный стиль.


Тоже самое касается и «полноценного приложения» — сильно зависит от того что вы хотите получить. Некоторым нужен экран и 2 кнопки.

Мой посыл был в том что в Power Fx есть только 1 тип циклов — первый, и то, только лишь через костыли. Пример на С# — это просто для наглядности.
В этом же поделии, нет процедур и функций, кроме сотни встроенных (из которых половина — математические), нет функций высшего порядка, нет модулей,… да ничего толком нет, что могло бы хоть как-то помочь более-менее опытному разработчику.

Справедливости ради, недавно анонсировали, что в Excel завезли лямбды и теперь он Turing-complete: https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/
Если они берут функции из экселя, то и лямбды возьмут.

Боюсь я что в этих лямбдах можно будет только чистые функции использовать без сайд эффектов, а это накладывает очень много ограничений. Ну и никак не позволяет переиспользовать код вразных проектах.
UFO just landed and posted this here

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

Да, но Power Fx позиционируется как язык для создания low-code бизнес-приложений, а не таблиц. Для таблиц есть эксель — и его хватает с головой. А вот для мобильного приложения (частный случай использования этого, так сказать, языка программирования), где необходимо по ненадежной сети взаимодействовать с удаленными источниками данных, циклы иногда могут пригодиться, так же как и исключения и их обработка. А ими в нем и не пахнет.
UFO just landed and posted this here
UFO just landed and posted this here

Объясните девушке, что может этот Power Fx такого, что не мог VBA? Порог входа ещё ниже? — Вряд ли. Может было лучше проапгрейлить VBA до современного уровня, или он совсем труп?

UFO just landed and posted this here
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 для создания бизнес-решений и автоматизации рутинных задач.
По этой причине он и работает с небольшим набором данных (так как там больше и не требуется).
ну да, согласен для всей PowerPlatform. Правда в ней собственно и есть только что Power BI да Power Apps и так по мелочи
А мелочи это: Power Automate, Dataverse (бывший CDS), и куча коннекторов к 100500 источникам данных, начиная от различных SQL баз и заканчивая системами документооборота. Кстати, большинство продуктов из линейки MS Dynamics теперь являются частью Power Platform (D365 for Sales (бывший CRM), D365 Finances & Operations (бывшая Axapta), и т.д.). Ну, в принципе, да, так, по мелочи.
В Axapta же был X++ кажется. Что с ним теперь стало тогда?
А кто может объяснить вот это:
Язык Power Fx предназначен для настройки процессов в Power Platform — платформе Microsoft для создания бизнес-решений и автоматизации рутинных задач.
Microsoft планирует открыть исходный код Power Fx под лицензией MIT.
Это как? Язык бесплатный, но платформа (например, Power Apps), где он используется платная? И в чем смысл?
смысл в том чтобы подсадить на эту платформу всех. Как на эксель подсадили.
UFO just landed and posted this here
Чем это лучше, например, чем Python? Лучше бы VBA в своих офисных программах заменили на питон.
Порог входа? Тут любой менеджер, хотя бы пару раз писавший формулы в экселе сможет что-то сваять простое. Как заставить сделать его то же на питоне?
Покажите мне такого любого менеджера, умеющего в экселе?
Внезапно, я больше встречаю тех, кто лезет в VBA, ещё не умея в ехсель, вместо того, чтобы применить правильные формулы. Внезапно, эти формулы уже на столько наворочены, что многие даже не знают, что эти формулы умеют.
Так что, я считаю, кто умеет в экселе, тот легко сумеет и в питоне. Увы, таковых очень немного.
А уж те, кто может в пандас, на общем фоне кажутся просто волшебниками!
Я знавал такого менеджера по продажам. Идей вагон, постоянно что-то придумывал в экселе: аналитику, визуализацию, обработку данных.
Тут любой менеджер, хотя бы пару раз писавший формулы в экселе сможет что-то сваять простое
А потом сказать программисту: «Я тут самое важное сделал, допиши до вечера».
У вас какой-то печальный опыт. Если у вас на работе такое практикуется — рекомендую поискать другую.

Так же как на VBA:
Жмак на красную кнопку, сделал руками что надо один раз, перешел в редактор кода и подправил конкретику на переменные. Возможно обернул в цикл.

Sign up to leave a comment.

Other news