Re[4]: Популярность F#
От: -n1l-  
Дата: 22.06.12 09:51
Оценка:
Здравствуйте, FR, Вы писали:
FR>Тролишь же.

Внезапно нет, не тролю. Да и кто будет так тролить, слишком толсто же.
Я немножко наверное не так выразился.
Вот есть так сказать столпы дотнета — c# vb.net. Которые точно так же могут работать с дотнетом как и f#.
В чем тогда преимущества f# для разработчика? Я понимаю сугубо научный интерес — изучить и понять, но все же совсем прям переходить не получиться же.
Если параллельно использовать только.
Re[5]: Популярность F#
От: FR  
Дата: 22.06.12 09:57
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>Внезапно нет, не тролю. Да и кто будет так тролить, слишком толсто же.

N>Я немножко наверное не так выразился.
N>Вот есть так сказать столпы дотнета — c# vb.net. Которые точно так же могут работать с дотнетом как и f#.
N>В чем тогда преимущества f# для разработчика? Я понимаю сугубо научный интерес — изучить и понять, но все же совсем прям переходить не получиться же.
N>Если параллельно использовать только.

F# как язык более выразительный чем шарп или бейсик.
На нем гораздо проще и удобнее писать в функциональном стиле.
Он более жестко типизирован.
Для кого эти преимущества важные тот и будет переходить, остальным смысла нет.
Re[4]: Популярность F#
От: MasterZiv СССР  
Дата: 22.06.12 10:01
Оценка: :))
On 06/22/2012 12:21 PM, -n1l- wrote:

> Объясни же мне, о великий!


Объясняю в 3 словах:
FP эта прикольна!

В 10 словах:
Functional programming круче вилки: два удара -- 200 дырок.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Популярность F#
От: MasterZiv СССР  
Дата: 22.06.12 10:03
Оценка:
> В чем тогда преимущества f# для разработчика? Я понимаю сугубо научный интерес —
> изучить и понять, но все же совсем прям переходить не получиться же.

Другой язык. Мощный.
К тому же ещё он и распараллеливаться должен АВТОМАТОМ.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Популярность F#
От: MasterZiv СССР  
Дата: 22.06.12 10:03
Оценка:
On 06/22/2012 11:50 AM, FR wrote:

> MZ>Да всё очень просто. Где кроссплатформ ?

>
> Ну сам же компилятор под mono нормально идет.

Ну, компилятор может и идёт. Дальше что ?
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Популярность F#
От: FR  
Дата: 22.06.12 10:11
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Ну, компилятор может и идёт. Дальше что ?


Дальше проблемы mono и IDE под него поддерживающих F#.
Re[5]: Популярность F#
От: dsorokin Россия  
Дата: 22.06.12 11:35
Оценка:
Здравствуйте, FR, Вы писали:

FR>Дальше проблемы mono и IDE под него поддерживающих F#.


Кстати, xbuild уже понимает проекты на F#?
Re[5]: Популярность F#
От: MasterZiv СССР  
Дата: 23.06.12 09:23
Оценка:
On 06/22/2012 02:11 PM, FR wrote:

> MZ>Ну, компилятор может и идёт. Дальше что ?

>
> Дальше проблемы mono и IDE под него поддерживающих F#.

Т.е. работать не будет.
Posted via RSDN NNTP Server 2.1 beta
Re[6]: Популярность F#
От: FR  
Дата: 23.06.12 13:48
Оценка:
Здравствуйте, MasterZiv, Вы писали:

>> Дальше проблемы mono и IDE под него поддерживающих F#.


MZ>Т.е. работать не будет.


Вроде люди пишут, я не пробовал.
Re[5]: Популярность F#
От: Kluge  
Дата: 25.06.12 08:04
Оценка: +1
Здравствуйте, -n1l-, Вы писали:

N>Здравствуйте, FR, Вы писали:

FR>>Тролишь же.

N>Внезапно нет, не тролю. Да и кто будет так тролить, слишком толсто же.

N>Я немножко наверное не так выразился.
N>Вот есть так сказать столпы дотнета — c# vb.net. Которые точно так же могут работать с дотнетом как и f#.
N>В чем тогда преимущества f# для разработчика? Я понимаю сугубо научный интерес — изучить и понять, но все же совсем прям переходить не получиться же.
N>Если параллельно использовать только.

Разнесли понятие null и понятие "нет значения". Уже за это, по моему, стоит переходить на F#.
Лоботомию в массы! (с)
Re[6]: Популярность F#
От: hardcase Пират http://nemerle.org
Дата: 25.06.12 10:02
Оценка: +1
Здравствуйте, Kluge, Вы писали:

K>Разнесли понятие null и понятие "нет значения". Уже за это, по моему, стоит переходить на F#.


Нормальным образом это сделать и не потерять в интеропе с остальным .NET миром не получится. Для этого option[T] нужно поднимать на уровень CLR, что по очевидным причинам вряд ли будет сделано.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[7]: Популярность F#
От: Kluge  
Дата: 25.06.12 11:10
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Kluge, Вы писали:


K>>Разнесли понятие null и понятие "нет значения". Уже за это, по моему, стоит переходить на F#.


H>Нормальным образом это сделать и не потерять в интеропе с остальным .NET миром не получится. Для этого option[T] нужно поднимать на уровень CLR, что по очевидным причинам вряд ли будет сделано.


Это можно делать на границе интеропа, а алгоритмы внутри F# части выиграют в чистоте и наглядности.
Лоботомию в массы! (с)
Re[9]: Популярность F#
От: Klapaucius  
Дата: 25.06.12 11:52
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Вот эта эвристика "загрузка необходимого кода" мне не очень понятна.


Я согласен на консервативную оценку необходимого. Т.е. если загрузится что-то лишнее — я не очень расстроюсь.

ВВ>Биндинги могут содержать какие-либо действия. Это никак не отслеживается.


Конечно могут. И это никак не отслеживается автоматически. Да, загрузка repl ничего не отлеживает и выполняет все действия в "биндингах". Вы пытаетесь мне доказать, что репл возможен только в чистых языках? Нет, в остальных он тоже возможен, разумеется, требуется прилежание и усидчивость, но программистам на таких языках не привыкать.

ВВ>Вообще непонятно, почему мы акцентируем внимание на этой проблеме — тут проблемы-то нет. "Выполнить выражение, загрузив весь код выше" — это сначала загрузить весь код выше, а потом выполнить выражение. Проблема же не в том, что два раза на кнопку жамкать приходится.


Разумеется не в том. Проблема в том, что "загрузить весь код выше" — нетривиальная проблема даже для программы из 4-х строк, что я показал выше. Отдельно загружать и отдельно выполнять я тоже согласен, но в ml-ном репле "загрузка" и "выполнение" — это все равно примерно одно и то же. Иначе в строгом и императивном языке и быть не может (ну, в каком-нибудь Alice, если мне память не изменяет, модули загружаются лениво — но это как раз тот самый язык с "опциональной ленивостью" про которую говорят, добавляя в библиотеку погремушку типа Lazy, которой для этого на практике недостаточно).

ВВ>А есть какие-либо интересные примеры интеграции REPL и IDE? Не Лексах, а что-то чуть более прямое.


Я таких примеров не видел.

ВВ>В моих глазах тут по сути два разных мира — REPL и IDE. IDE в формате Вижуал Студии предоставляет средства по сути эквивалетные реплу, но делает это по-другому.


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

ВВ>Внешние референсы — типа на какой-нибудь Core — загружаются.


Скорее уж не "типа", а "только". Загружаются они из очень небольшого набора сборок. Собственно только из mscorlib, System.Core и FSharp.Core +/- они и грузятся. Т.е с open LazyList или open System.Xml.Linq ничего не получится — нужно грузить библиотеки вручную, как и файлы.

ВВ>А как должен выглядеть отладчик, расчитанный на ФЯ и в чем заключается "не рассчитанность" дотнетовского отладчика?


Я на этот вопрос как-нибудь отвечу отдельно и развернуто.

ВВ>Поставил брейкпоинт на х — ввожу в watch bar — отлично показывается и разворачивается. Все это в нормальном интерфейсе, сделанном для людей. Все, что я ввожу в watch, остается. Значения удобно рефрешатся. Их можно менять, можно вводить выражения. Ну в общем все так же, как и в C#.

ВВ>В Locals, кстати, тоже есть bar.

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

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


Нет, я обнаружил это случайно.

ВВ>В реальности же ты так не напишешь? Такое выражение и читается плохо. Вот так:


Нет, я конструкторы классов так вызываю достаточно часто.

ВВ>Большой проблемой — особенно на фоне Лексаха — я это считать отказываюсь.


Кстати, хорошие новости. В бете новой студии автокомплит тут сработал нормально. так что что-то они все-таки поправили.

ВВ>>>В .NET — несколько другой подход к дебагу, не РЕПЛ-ориентированный.

K>>О чем и речь. Отладчик в .net, конечно, отличный (для языка "Java с перламутровыми пуговицами"), а в ФЯ их можно считать, что и нет вовсе.

ВВ>Ну ведь не так это. Отладчик есть, и он работает. Было бы, конечно, неправдой утверждать, что он настолько хорош (сиречь адекватен языку), как отладчик C#. Но все же он... ну работает он, не знаю, что еще сказать.


ВВ>непонятно, каким образом он получает тут какие-то баллы.


Что тут непонятного? Баллы получены за хоть какую-то интеграцию с ghci. Интеграции с fsi у Visual F# можно сказать что и нет.

ВВ>И грешат ахтунгами в стиле — а давайте сначала соберем весь проект, и тогда мы вам сможем тултипы с типами показать.


Сравение некорректно — как я уже писал, тултипов с типами в случае F# нет вообще (в тултипах — документация, фактический тип просматреть нельзя).

ВВ>К какой?


К VS.

ВВ>VisualF# не так уж и плох и существует он по большей степени в парадигме именно VisualStudio, а не РЕПЛА. Проблема в том, что он попросту не доделан. Вернее, даже не так. Проблема в том, что он он не доделывается.


Вот именно. О чем я и говорю.

ВВ>Если бы он имел версию 0.3 и распространялся только как к аддон к шеллу, то претензий не было бы?


Претензий было бы меньше, по крайней мере у меня. Потому что позиционирование совпадало бы с фактическим положением дел. В принципе, заявления о поддержке F# могут быть полезны для распространения ФП в мейнстрим, но разве что тактически, потому что это, скажем прямо, обман — с понятными последствиями в долгосрочной перспективе.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[2]: Популярность F#
От: Klapaucius  
Дата: 25.06.12 11:52
Оценка: -1
Здравствуйте, -n1l-, Вы писали:

N>Может я чего не понимаю, но зачем нужен F# если есть C#?


А зачем вообще программирование, если есть прилежание и усидчивость?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[3]: Популярность F#
От: -n1l-  
Дата: 26.06.12 02:21
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>Здравствуйте, -n1l-, Вы писали:


N>>Может я чего не понимаю, но зачем нужен F# если есть C#?


K>А зачем вообще программирование, если есть прилежание и усидчивость?

Вы конечно сравнили дуб с обезьяной, шикарный аргумент.
Отсыпьте мне тоже, я хочу попробовать.
Re[6]: Популярность F#
От: -n1l-  
Дата: 26.06.12 02:23
Оценка: -1
Здравствуйте, Kluge, Вы писали:
K>Разнесли понятие null и понятие "нет значения". Уже за это, по моему, стоит переходить на F#.

А в c# разве такого нет?
Re[10]: Популярность F#
От: Воронков Василий Россия  
Дата: 26.06.12 14:28
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>Конечно могут. И это никак не отслеживается автоматически. Да, загрузка repl ничего не отлеживает и выполняет все действия в "биндингах". Вы пытаетесь мне доказать, что репл возможен только в чистых языках? Нет, в остальных он тоже возможен, разумеется, требуется прилежание и усидчивость, но программистам на таких языках не привыкать.


Нет, я не пытаюсь доказать, что репл возможен в чистых языках. Я высказываю мнение, что в энергичных грязных языках какой-либо код не должен выполняться неявно. Вот если я выделил мышкой директиву открытия модуля, то вполне логично ожидать, что выполнится код в do-блоках этого модуля. Если же я выделил 2+2, то исполнение этого кода я нахожу не очень логичным.

K>Разумеется не в том. Проблема в том, что "загрузить весь код выше" — нетривиальная проблема даже для программы из 4-х строк, что я показал выше. Отдельно загружать и отдельно выполнять я тоже согласен, но в ml-ном репле "загрузка" и "выполнение" — это все равно примерно одно и то же.


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

K>Иначе в строгом и императивном языке и быть не может (ну, в каком-нибудь Alice, если мне память не изменяет, модули загружаются лениво — но это как раз тот самый язык с "опциональной ленивостью" про которую говорят, добавляя в библиотеку погремушку типа Lazy, которой для этого на практике недостаточно).


А можно пример ленивого кода на Хаскелле, который нельзя перевести на код с явными санками?

ВВ>>А есть какие-либо интересные примеры интеграции REPL и IDE? Не Лексах, а что-то чуть более прямое.

K>Я таких примеров не видел.

Вот, а почему интересно? Может, это все-таки "два разных человека"?

ВВ>>В моих глазах тут по сути два разных мира — REPL и IDE. IDE в формате Вижуал Студии предоставляет средства по сути эквивалетные реплу, но делает это по-другому.

K>По-моему, средства эти не эквивалентные, одно и то же разными способами они не делают — но пересечение по функционалу у них, разумеется, есть.

А какая область не пересекается? Давай все же конкретнее. По большому счету свой эквивалент репла в студии и так есть.

ВВ>>А как должен выглядеть отладчик, расчитанный на ФЯ и в чем заключается "не рассчитанность" дотнетовского отладчика?

K>Я на этот вопрос как-нибудь отвечу отдельно и развернуто.

Ну что ж, буду ждать.

ВВ>>Поставил брейкпоинт на х — ввожу в watch bar — отлично показывается и разворачивается. Все это в нормальном интерфейсе, сделанном для людей. Все, что я ввожу в watch, остается. Значения удобно рефрешатся. Их можно менять, можно вводить выражения. Ну в общем все так же, как и в C#.

ВВ>>В Locals, кстати, тоже есть bar.
K>Ну я, конечно, рад за вас, но у меня вот не показывается, не разворачивается, нет.

Ну я не обманываю же? Какой у тебя f#?
Я вообще окошками locals/autos обычно вообще не пользуюсь, может, там иногда и пропадает что.
Что, если в вотч самому bar ввести тоже не показывается?
Re[20]: Популярность F#
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.06.12 14:03
Оценка: 6 (1)
Здравствуйте, nikov, Вы писали:

N>Проверил, как с этим обстоят дела в Немерле:

N>
N>def f(x) { x.ToLower() }
N>_ = f("ABC") // OK
N>

N>
N>def f(x) { x.ToLower() } // Error: typing fails on accessing member ToLower in the ? type
N>_ = "ABC" |> f // Error: typing fails on ambiguity between operator |>(string, ? -> ?) overloads
N>

N>Прокатывает, но не проходит. Как говорится, у каждого свои недостатки

Пофиксил.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Популярность F#
От: Klapaucius  
Дата: 09.07.12 10:29
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Нет, я не пытаюсь доказать, что репл возможен в чистых языках. Я высказываю мнение, что в энергичных грязных языках какой-либо код не должен выполняться неявно.


Согласен, не должен. Я же говорю, явная загрузка меня тоже устроит. Меня не устраивает загрузка ручная до такой степени, что и загружать ничего не хочется.

ВВ>Вот если я выделил мышкой директиву открытия модуля, то вполне логично ожидать, что выполнится код в do-блоках этого модуля. Если же я выделил 2+2, то исполнение этого кода я нахожу не очень логичным.


Это не логично, но это вырожденный пример, который практического значения не имеет. Тот код, что интересно запустить на практике зависит от объявленных и вычисленных значений выше. 2+2 и так прекрасно работает, так что вместо калькулятора fsi использовать можно, но речь о других применениях, а именно — написании программ.

ВВ>Отдельно значит, что ты сначала выполняешь весь код, создавая тем самым нужный тебе топ левел в репле, а потом гоняешь уже нужные тебе выражения.


Да, это и надо.

ВВ>Собственно, загружать весь код вше было бы неправильно с т.з. семантики Хаскелла.


Конечно, но с точки зрения ML это вполне правильно (с поправками на всякие and и объекты, где они есть)

ВВ>А можно пример ленивого кода на Хаскелле, который нельзя перевести на код с явными санками?


Речь не о том, что можно перевести в принципе, а о том, что можно использовать на практике, т.е. то, что удобно и работает с приличной скоростью. Lazy и прочее не обеспечивают ни первого ни второго, и, соотвественно, почти никогда не используются.

ВВ>Вот, а почему интересно?


По той же самой причине, по которой, например, никто не видел сверхзвукового самолета в 1939-ом году.

K>>По-моему, средства эти не эквивалентные, одно и то же разными способами они не делают — но пересечение по функционалу у них, разумеется, есть.

ВВ>А какая область не пересекается? Давай все же конкретнее. По большому счету свой эквивалент репла в студии и так есть.

IDE появились для языков и библиотек в которых на каждое 2+2 полагается три экрана бойлерплейтной обвязки, а сам + именуется как-нибудь вроде НоВГорлоЯУспелВоткнутьИТамДваРазаПовернутьМоеОружье (перегружено для 256 вариантов аргументов). Отсюда очевидны и виды проблем, которые ИДЕ решают, т.е. генерация бойлерплейта и, что более актуально, потому что никаким совершенствованием языка тут делу не поможешь — автоматизированное преобразование кода и навигация по коду. Функциональность репла — т.е. возможность быстро испробовать небольшой фрагмент кода в ИДЕ появится могла только в самой зачаточной форме — ведь в языках, для которых иде разрабатывались не бывает кусков кода одновременно работающих и небольших. Наоборот, репл характерен для языков в которых не нужно писать мегабайты бойлерплейта, а типичная программа вычисляет факториал — так что навигация по ней тривиальна, как, собственно, и ее ручное преобразование. Когда же эти языки внезапно стали применять на практике — проблема навигации по коду встала в полный рост.

ВВ>Ну я не обманываю же?


Да я вас и не обвиняю в этом. Я просто констатирую, что у меня проблема существует.

ВВ>Какой у тебя f#?


4.0.30319.1

ВВ>Что, если в вотч самому bar ввести тоже не показывается?


Нет, не показывается.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[4]: Популярность F#
От: Klapaucius  
Дата: 09.07.12 10:29
Оценка: -1
Здравствуйте, -n1l-, Вы писали:

K>>А зачем вообще программирование, если есть прилежание и усидчивость?

N>Вы конечно сравнили дуб с обезьяной, шикарный аргумент.

Аналогия самая прямая. При наличии прилежания и усидчивости в товарных количествах все, что автоматизируется с помощью программирования можно и вручную делать. Но человеческому падению предела нет, даже программировать некоторые не хотят как положено, как отцы и деды завещали: смирять плоть, крепить дух, страдать, становясь лучше — нести свой крест (кресты, решетки и т.д.) т.е. писать на С# и других похожих душеспасительных языках. Вместо этого некоторые программисты, представьте себе, хотят идти по легкому пути — а это уже лень и разложение в квадрате.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.