Форум программистов, компьютерный форум, киберфорум
F# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Пора на C++?
 Аватар для TrickyBestia
370 / 264 / 99
Регистрация: 10.04.2020
Сообщений: 1,275

Зачем нужен F#?

06.08.2020, 16:30. Показов 48989. Ответов 131
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вы не подумайте, что я злодей. Просто зачем нужен F#, если есть C# или хотя-бы VB.NET, в которых возможностей больше?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.08.2020, 16:30
Ответы с готовыми решениями:

Зачем нужен using?
Пожалуйста подскажите зачем использовать слово using?например пот здесь: using (var reader = new StreamReader(filename))

Зачем нужен Path?
Для чего везде и всюду пихают Path в привязку свойств из DataContext? Вот славная цитатка Всё. Нафига везде пихают ...

Зачем нужен LINQ?
LINQ зачем нужен? Без него можно ли обойтись или вот обязательно понадобится базы данных писать:) Может кто и без этой примочки нормально...

131
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
19.08.2020, 08:23
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Curry Посмотреть сообщение
Бывают языки однопроходные (как утконосы), кроме F# к ним и С/C++ относятся, и не только.
А какие еще? Я спрашиваю, поскольку на самом деле не в курсе. Что все эти языки обладают такой же односторонней видимостью всего и вся?
Ну и кроме того... Я так понимаю репл - это та самая консоль F# Interactive? Тот самый инструмент ради быстрой работы которого "испортили" весь язык? Туда обычно вводят относительно небольшие куски кода, ну где-то в пределах 1 кб. Отсюда естественно вопрос: а сколько времени можно сэкономить на компиляции такого куска за счет одного прохода? Я могу допустить, что в каких-то древних языках это могло иметь значение, но F# - достаточно молодой язык и когда он создавался, по-моему, уже даже для бюджетных компьютеров это было бы "экономией на спичках".
Цитата Сообщение от Curry Посмотреть сообщение
При чём здесь run-time когда направление видимости объявлений это compile-time?
К классам, предоставляемым "на экспорт" могут предъявляться какие-то требования, которые могут повлечь необходимость наличия полного набора инструментов, имеющихся в других языках. Я думаю, что исходили из этого.
Цитата Сообщение от Curry Посмотреть сообщение
Если хотели бы сделать настоящий функциональный язык
Думаю, что этого точно не хотели ))
Цитата Сообщение от Usaga Посмотреть сообщение
для меня это выглядит как исторически сложившаяся особенность, как заголовочные файлы в Си и С++
Вообще-то язык появился только в 2005-ом, так что говорить о том, что это "хвост", тянущийся со времен царя Гороха точно не приходится.
Цитата Сообщение от Usaga Посмотреть сообщение
Как раз чтобы было чем оправдать этот странный механизм порядка следования типов.
Понятно: то есть сначала решили создать "странный механизм", а потом начали думать, чем бы его оправдать. ))
Я все-таки еще раз рекомендовал бы прочитать
fslang-design/FS-1009-mutually-referential-types-and-modules-single-scope.md at master · fsharp/fslang-design · GitHub
Там есть много интересных моментов, проливающих свет на обсуждаемую тему. То есть там обсуждается вопрос о введении возможности сделать все взаимно видимым, но при этом описывается ряд аргументов против этого. В частности в качестве аргумента приводится и такой, что если такую опцию ввести, то новички будут ей злоупотреблять, что не есть хорошо. ))
Есть там правда и частичное подтверждение предположения Curry насчет производительности, но немного все-таки не совсем то, процитирую полностью
For a type-inferred, Hindley-Milner-style language, it is technically essentially impossible to provide incremental checking for single files within an assembly where all files are mutually referential. This means that visualIDE tooling performance would be worse when editing large assemblies when this switch is enabled.
То есть речь не о репле, а как раз наоборот о больших сборках и проблемах для системы выведения типов.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
19.08.2020, 13:18
Цитата Сообщение от pycture Посмотреть сообщение
как же c# живет без этих якобы "жертв" в своем repl'e?
Попробуйте в "c# репле" определить функцию, которая вызывает ещё не определённую функцию. Или определите взаимнорекурсивные функции.

(В принципе можно. Сначала пишите "Func<int,int> f1 = null;", затем используете её в f2, затем задаёте для f1 новое значение.)

Цитата Сообщение от pycture Посмотреть сообщение
любая неправильно используемая фича в любом языке - источник потенциальных проблем. при правильном использовании это хороший инструмент именно для решения проблем
Тут дело не в неправильном использовании. На Си++ писали когда-нибудь? Если да, то, наверняка, сталкивались с тем, что код не работает из-за неправильного порядка заголовочных файлов в инклудах. Неприятная вещь. Особенно, если это выявится не на этапе компиляции, а только во время выполнения.

Цитата Сообщение от pycture Посмотреть сообщение
нет. LINQ въехал в C# в обрезаном виде. a (|>) к нему никакого отношения не имеет.
Согласен.
По сути LINQ - это специальный синтаксис для монад. А (|>) - это обычный оператор: (|>) x f = f x.

Цитата Сообщение от Curry Посмотреть сообщение
То есть как это не имеет когда там и используется?
Оператор (|>) позволяет выстроить вызовы функций в цепочку.
Ближайший аналог в c# - это классы расширения, благодаря которым есть возможность выстроить вызовы функций в цепочки: y = x.f1().f2().

Цитата Сообщение от pycture Посмотреть сообщение
это дополнительные типы данных используемые для своих задач. никто в них не требует преобразовывать обычные коллекции
Согласен.

Цитата Сообщение от Curry Посмотреть сообщение
Если весь проект сделать на F# без C#. И не использовать пакеты предназначенные для C#.
Вы можете использовать все эти типы, независимо от того, на каком языке Вы пишите - F# или C#. Вы выбираете наиболее подходящие типы, исходя из задачи (и своих личных предпочтений).
0
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
19.08.2020, 14:24
Цитата Сообщение от diadiavova Посмотреть сообщение
А какие еще?
паскаль, ада, некоторые бейсики. Наверняка больше, лень проверять.
Цитата Сообщение от diadiavova Посмотреть сообщение
F# - достаточно молодой язык и когда он создавался, по-моему, уже даже для бюджетных компьютеров это было бы "экономией на спичках".
Я F# первый раз пробовал на компе 2006 года (конфигурацию не помню уже). Подтормаживало. Ну и для скриптов быстрая компиляция.
Цитата Сообщение от Shamil1 Посмотреть сообщение
По сути LINQ - это специальный синтаксис для монад. А (|>) - это обычный оператор: (|>) x f = f x.
Насчёт монад вы хватили. (|>) я упомянул потому что он используется в цепочке функций один аргумент в которых явно не задаётся, а берётся из цепочки (частичное применение).
Цитата Сообщение от Shamil1 Посмотреть сообщение
Вы можете использовать все эти типы, независимо от того, на каком языке Вы пишите - F# или C#.
В F# встроенные списки такие https://docs.microsoft.com/ru-... ence/lists
А в остальном .NET https://docs.microsoft.com/ru-... at-ext-3.1
Применять то можно, но то что они разные - это недостаток F#.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
19.08.2020, 15:05
Цитата Сообщение от Curry Посмотреть сообщение
Применять то можно, но то что они разные - это недостаток F#.
В чём недостаток? В F# использование "типов C#" не вызывает никаких сложностей.

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

з.ы Если в C# использование "типов F#" вызывает какие-то сложности, то это недостаток C#, не так ли?


Цитата Сообщение от Curry Посмотреть сообщение
А в остальном .NET
А какже Clojure CLR и Python .net?
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
19.08.2020, 17:24
Цитата Сообщение от Curry Посмотреть сообщение
(|>) стал LINQ
LINQ - это специальный синтаксис для монад
а я думал, что LINQ - это синтаксис и концепция, слизанная из sql. Но нет, оказывается из F#)
0
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
19.08.2020, 18:12
Цитата Сообщение от Shamil1 Посмотреть сообщение
В чём недостаток?
В том что в рамках одной платформы дублируются коллекции.
Цитата Сообщение от Shamil1 Посмотреть сообщение
А какже Clojure CLR и Python .net?
А там тоже свои типы коллекций?
В Python .net, вроде бы, те же System.Collections.Generic что и в C#.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
19.08.2020, 20:35
Цитата Сообщение от Curry Посмотреть сообщение
По мне, так от него вред один.
инты тоже не нужны вред один. флоатов достаточно. из тойже оперы
Скриптового C#, вроде, нет.
нету конечно. 9 лет как нет https://devblogs.microsoft.com... oslyn-ctp/
То есть как это не имеет когда там и используется?
вот F#ый LINQ
F#
1
2
3
4
5
6
query {
  for e in xs do
  where (e % 2 = 0 && e > 5)
  select e
  head
  }
в каком месте тут используется (|>) ?
Если весь проект сделать на F# без C#. И не использовать пакеты предназначенные для C#.
фантазии из разряда, что LINQ использует (|>)

Добавлено через 10 минут
Цитата Сообщение от Curry Посмотреть сообщение
Нет. В C# класс описанный ниже в коде может использоваться в функциях класса выше.
а теперь предлагаю сравнить картинки.
https://en.wikipedia.org/wiki/Multi-pass_compiler
https://fsharp.github.io/2015/... ler-phases
и попробовать доказать что f# однопроходный.

Добавлено через 5 минут
Цитата Сообщение от Curry Посмотреть сообщение
В том что в рамках одной платформы дублируются коллекции.
какие именно дублируется? с таким же успехом можно заявить что Array дублирует List в c#. как ни странно

Добавлено через 1 минуту
Цитата Сообщение от Curry Посмотреть сообщение
А там тоже свои типы коллекций?
неожиданно тоже. для них в c# очередной костыль в виде dynamic.
0
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
19.08.2020, 20:58
Цитата Сообщение от pycture Посмотреть сообщение
из той же оперы
затенение ведёт к ошибкам, типа, не заметил что затенено.
А преимущество то какое? Экономия имён? Сомнительное преимущество.
Цитата Сообщение от pycture Посмотреть сообщение
какие именно дублируется?
Например, F# список и System.Collections.Generic.List.
Цитата Сообщение от pycture Посмотреть сообщение
и попробовать доказать что f# однопроходный.
Однопроходный, в смысле, что один раз проходит список лексем, по этому не видит объявления ниже по тексту (ниже по списку файлов в проекте).
Вы же это признаёте. Остаётся только признать что это недостаток.

Насчёт LINQ я не SQL-евский синтаксис имел ввиду, а код из цепочки функций. Видимо, уже осеннее обострение начинается.
Я ж под .NET не пишу.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
19.08.2020, 21:18
Цитата Сообщение от Shamil1 Посмотреть сообщение
Попробуйте в "c# репле" определить функцию, которая вызывает ещё не определённую функцию. Или определите взаимнорекурсивные функции.
Class1.cs
C#
1
2
3
4
public class Class1
{
    public int Foo(Class2 e) => e.X + 10;
}
Class2.cs
C#
1
2
3
4
5
public class Class2
{
    public int X { get; internal set; }
    public int Foo(Class1 e) => e.Foo(this) + 10;
}
C#
1
2
#load "Class1.cs"  
#load "Class2.cs"
C#
1
2
> new Class2().Foo(new Class1())
20
Добавлено через 5 минут
Цитата Сообщение от Curry Посмотреть сообщение
А преимущество то какое?
быстрофиксы
Например, F# список и System.Collections.Generic.List.
ниче что это совершенно разные структуры как например в c# Array и Queue?
Остаётся только признать что это недостаток.
с какой стати уменьшение связанности проекта стало недостатком? упорядочевание файлов приводит к уменьшению связности. сыылку вам давали

Добавлено через 4 минуты
Цитата Сообщение от Curry Посмотреть сообщение
я не SQL-евский синтаксис имел ввиду, а код из цепочки функций
код из цепочки функций это код из цепочки функций и ничего больше.
при чем тут (|>) ? его в с# не существует ни в каком виде
0
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
19.08.2020, 22:27
Цитата Сообщение от pycture Посмотреть сообщение
быстрофиксы
Что за методика проектирования?
Цитата Сообщение от pycture Посмотреть сообщение
это совершенно разные структуры
Это списки. Списки, конечно, разные бывают. Но почему, вдруг, "ущемили" основной язык разработки под .NET - C#, не дали ему таких списков как в F# ?
Почему вообще отдельные типы контейнеров, и списков в частности, ассоциировать с разными языками?
Цитата Сообщение от pycture Посмотреть сообщение
с какой стати уменьшение связанности проекта стало недостатком?
Потому что уменьшение связности можно получить и при произвольном порядке объявлений. А, вот, при ограничении "только снизу вверх", сложнее добиться необходимой для задачи связности. Такое ограничение только мешает.
Цитата Сообщение от pycture Посмотреть сообщение
код из цепочки функций и ничего больше.
при чем тут (|>) ?
F#
1
2
3
4
5
   let squareOddValuesAndAddOnePipeline values =
        values
        |> List.filter isOdd
        |> List.map square
        |> List.map addOne
- цепочка функций.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
20.08.2020, 00:36
Цитата Сообщение от Curry Посмотреть сообщение
Насчёт монад вы хватили.
SelectMany - это и есть bind из определения монады.
Если под LINQ подразумевать не набор методов расширения к IEnumerable/IQueryable, а синтаксис типа "from x in myCollection".
Используя этот синтаксис, можно лаконично (без использования вложенных лямд) переписать функциональный "монадный" код на C#.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
20.08.2020, 01:06
Цитата Сообщение от Curry Посмотреть сообщение
Но почему, вдруг, "ущемили" основной язык разработки под .NET - C#, не дали ему таких списков как в F# ?
Почему вообще отдельные типы контейнеров, и списков в частности, ассоциировать с разными языками?
Потому что

– во-первых, на момент создания более нового языка стандартная библиотека основного языка уже существует, никто не будет её полностью переписывать под новый язык — это куча времени и сил, поэтому обеспечение возможности использовать существующую библиотеку — стандартная практика. Кроме того это позволяет проектам, уже имеющим кодовую базу на основном языке, добавлять код на новом по мере необходимости / по желанию, а не переписывать весь проект полностью.
Например Scala/Clojure/Kotlin/Groovy предоставляют доступ к JDK.

– во-вторых, никто не будет добавлять в стандартную библиотеку основного языка библиотеки всех новосозданных языков, это совершенно бессмысленно.
Например в JDK нет библиотек Scala/Clojure/Kotlin/Groovy.

– и в-третьих, для разных вычислительных моделей (императивная/функциональная) подходят разные структуры данных.
Например сравни JDK ArrayList (или базовые Java-массивы) с массивами Scala. Первые плохо подходят для иммутабельных операций (создание копии с одним изменённым элементом), последними в Java никто пользоваться не будет.

То же самое справедливо и для .NET, и (по крайне мере в некоторой степени) для C/C++, и для Pascal/Delphi.
0
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
20.08.2020, 12:07
Цитата Сообщение от Shamil1 Посмотреть сообщение
SelectMany - это и есть bind из определения монады.
Ну, может быть. В F# стрёмная монада.
Цитата Сообщение от korvin_ Посмотреть сообщение
на момент создания более нового языка стандартная библиотека основного языка уже существует, никто не будет её полностью переписывать под новый язык
В отличии от Java/Scala/Kotlin, C#/F# разработаны в рамках одной компании, той же что среду выполнения делает. А изменения в .NET и так вносятся от версии к версии. Полностью переписывать, это перебор, а предоставить равноправную возможность использования контейнеров, это нормально.
В идеале, языки .NET должны отличаться только синтаксисом.
Подчёркиваю - .NET, с централизованной разработкой. С платформой java, ситуация иная.
Цитата Сообщение от korvin_ Посмотреть сообщение
для разных вычислительных моделей (императивная/функциональная) подходят разные структуры данных.
Да. И C#, и F# - языки частично и императивные и функциональные, а не C# императивный, а F# функциональный.
Цитата Сообщение от korvin_ Посмотреть сообщение
То же самое справедливо и для ... для C/C++, и для Pascal/Delphi.
Ни разу. Языки .NET (и в какой то степени JVM) сопоставимых возможностей.
А С++ почти надмножество над С (исключены только немного устарелых моментов и слегка более строго типизирован), по возможностям на порядки выше. Для Pascal/Delphi тоже.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
20.08.2020, 19:21
Цитата Сообщение от Curry Посмотреть сообщение
Это списки. Списки, конечно, разные бывают.
List в C# это динамический массив, а не список. на этом можно закончить.
Но почему, вдруг, "ущемили" основной язык разработки под .NET - C#, не дали ему таких списков как в F# ? Почему вообще отдельные типы контейнеров, и списков в частности, ассоциировать с разными языками?
начнем с того что даже с 9 версии C# будет иметь от силы 70% возможностей F#. теперь почему так получилось. C# сделали чтобы утянуть на Нет джавистов, дав им практически такой же язык. часть народа подтянулась. через некоторое время вбросили F# в надежде, что народ воспользуется астрономическим кол-вом преимуществ последнего над C# на то время. но, выяснилось что джависты в принципе необучаемы. и все... поэтому, начиная с версии 3, приходится их потихоньку переучивать засовывая в C# полезные вещи (которые даже при этом сопровождаются диким воем - типа var не нужен и в том же духе).

Добавлено через 2 минуты
Цитата Сообщение от Curry Посмотреть сообщение
Ну, может быть. В F# стрёмная монада.
"я на Нет не пишу но осуждаю". ок понятно - жавакаргокульт.

Добавлено через 2 минуты
Потому что уменьшение связности можно получить и при произвольном порядке объявлений
можно, но вот только никто не добивается. если по рукам не бить никто и не напрягается
цепочка функций
ок. причем тут c#? там ниче подобного нет

Добавлено через 40 секунд
Цитата Сообщение от Curry Посмотреть сообщение
Что за методика проектирования?
KISS
0
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
20.08.2020, 20:17
Цитата Сообщение от pycture Посмотреть сообщение
List в C# это динамический массив, а не список.
Вы его с ArrayList перепутали, который deprecated.
Цитата Сообщение от pycture Посмотреть сообщение
начнем с того что даже с 9 версии C# будет иметь от силы 70% возможностей F#.
У C# будет меньше возможностей по созданию форм? Или в C# добавят мегафичу с зависимостью от порядка файлов в проекте?
Цитата Сообщение от pycture Посмотреть сообщение
C# сделали чтобы утянуть на Нет джавистов, дав им практически такой же язык.
Такой же язык - J#, не пошёл у "джавистов".
Цитата Сообщение от pycture Посмотреть сообщение
через некоторое время вбросили F# в надежде, что народ воспользуется астрономическим кол-вом преимуществ последнего над C#
F# никогда и не планировали на замену C#. К примеру, с самого начала не поддерживали создание на нём форм и прочие визарды. F# для создания либ вызываемых из C# или бейсика.
Цитата Сообщение от pycture Посмотреть сообщение
джависты в принципе необучаемы
Холивары - такие холивары. Я не уверен насчёт дажвистов. Вот те, кто на языках с динамической типизацией пишет, те не обучаемы.
Цитата Сообщение от pycture Посмотреть сообщение
жавакаргокульт.
Вообще то я имел ввиду по сравнению с Haskell монада стрёмная.
Цитата Сообщение от pycture Посмотреть сообщение
если по рукам не бить никто и не напрягается
интересный подход.
Цитата Сообщение от pycture Посмотреть сообщение
причем тут c#? там ниче подобного нет
C#
1
2
3
4
5
  var builder = new ConfigurationBuilder()
      .SetBasePath(env.ContentRootPath)
      .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
      .AddEnvironmentVariables();
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
20.08.2020, 22:25
Цитата Сообщение от Curry Посмотреть сообщение
List в C# это динамический массив, а не список.
Вы его с ArrayList перепутали, который deprecated.
List:
Represents a strongly typed list of objects that can be accessed by index. Provides methods to search, sort, and manipulate lists.
Что же это, как не динамический массив?

Добавлено через 19 минут
Цитата Сообщение от Curry Посмотреть сообщение
В отличии от Java/Scala/Kotlin, C#/F# разработаны в рамках одной компании
MS и MS Research — не одна компания, ну да ладно, это никак не отменяет вышесказанного. «Команда C#» не будет встраивать себе полноценную интерпореабельность с F#.

Цитата Сообщение от Curry Посмотреть сообщение
В идеале, языки .NET должны отличаться только синтаксисом.
Т.е. иметь одинаковую семантику? А нафига тогда эти языки нужны?

Цитата Сообщение от Curry Посмотреть сообщение
Подчёркиваю - .NET, с централизованной разработкой.
Разработкой C# и F# занимаются разные люди.

Цитата Сообщение от Curry Посмотреть сообщение
И C#, и F# - языки частично и императивные и функциональные, а не C# императивный, а F# функциональный.
Но предпочтительная модель у каждого своя. Так же как и на Scala можно писать сугубо императивно, как на Java, но не принято. И наоборот.

Цитата Сообщение от Curry Посмотреть сообщение
Языки .NET (и в какой то степени JVM) сопоставимых возможностей.
То же можно сказать и про «языки ассемблера» (C/C++).

Цитата Сообщение от Curry Посмотреть сообщение
А С++ почти надмножество над С (исключены только немного устарелых моментов и слегка более строго типизирован), по возможностям на порядки выше
Так же и F# по сравнению с C#: включает все возможности C# и добавляет новые.
0
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
20.08.2020, 22:42
Цитата Сообщение от korvin_ Посмотреть сообщение
Что же это, как не динамический массив?
Вы не ту цитату привели. Для списка с внутренним представлением как список никто не мешает иметь доступ по индексу, сортировку и пр. Помедитируйте над.
Другое дело что Retrieving the value of this property is an O(1) operation; setting the property is also an O(1) operation.
Цитата Сообщение от korvin_ Посмотреть сообщение
А нафига тогда эти языки нужны?
А нафига зоопарк?
Цитата Сообщение от korvin_ Посмотреть сообщение
Но предпочтительная модель у каждого своя.
Хорошо знающие эти языки ни на одном не пишут чисто императивно, и, тем более, чисто функционально.
С момента появления C# в него ввели так много функционального, что теперь главное отличие между ними в том что F# строго типизирован, а C# нет.
Цитата Сообщение от korvin_ Посмотреть сообщение
F# по сравнению с C#: включает все возможности C# и добавляет новые.
Опровергнуто выше. С# позволяет как угодно расположить файлы в проекте и видит классы определённые ниже по исходнику. F# нет.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
20.08.2020, 22:46
Цитата Сообщение от Curry Посмотреть сообщение
Для списка с внутренним представлением как список никто не мешает иметь доступ по индексу
Не мешает. Как и удалять гланды через анальное отверстие. Но зачем?

Цитата Сообщение от Curry Посмотреть сообщение
Помедитируйте над.
Зачем?

Цитата Сообщение от Curry Посмотреть сообщение
А нафига зоопарк?
Э-м… Это к тебе вопрос: нафига зоопарк одинаковых языков, отличающихся только синтаксисом?

Цитата Сообщение от Curry Посмотреть сообщение
Хорошо знающие эти языки ни на одном не пишут чисто императивно, и, тем более, чисто функционально.
Ты как-то не так понял фразу «предпочтительная модель».

Цитата Сообщение от Curry Посмотреть сообщение
С момента появления C# в него ввели так много функционального
Как много?

Цитата Сообщение от Curry Посмотреть сообщение
Опровергнуто выше. С# позволяет как угодно расположить файлы в проекте и видит классы определённые ниже по исходнику. F# нет.
Ничего не опровергнуто, упорядочивание файлов — новая фича, недоступная C#.
0
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
20.08.2020, 23:10
Цитата Сообщение от korvin_ Посмотреть сообщение
Не мешает. Как и удалять гланды через анальное отверстие. Но зачем?
Вы спутали фольклёрное пространство анекдота с реальностью. Гланды так удалить невозможно. А доступ к элементу списка по индексу возможен и используется. Например, когда не выгодно его для этого преобразовывать в массив.
Цитата Сообщение от korvin_ Посмотреть сообщение
нафига зоопарк одинаковых языков, отличающихся только синтаксисом?
Мне не надо. Я бы 99% существующего зоопарка языков прибил бы. Придумывают какую ни будь новую фишку, хотя бы в том же вебе, и давай её реализовывать на десятках языков. Бессмысленные затраты человеко-веков в масштабах планеты.
Но некоторым вынь да положь именно визуалбейсиковский синтаксис, или ещё какой.
Цитата Сообщение от korvin_ Посмотреть сообщение
Как много?
До 3ей версии там даже лямбд не было.
Цитата Сообщение от korvin_ Посмотреть сообщение
упорядочивание файлов — новая фича, недоступная C#.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
20.08.2020, 23:32
Цитата Сообщение от Curry Посмотреть сообщение
Вы спутали фольклёрное пространство анекдота с реальностью. Гланды так удалить невозможно. А доступ к элементу списка по индексу возможен и используется.


Цитата Сообщение от Curry Посмотреть сообщение
Например, когда не выгодно его для этого преобразовывать в массив.
Это когда?

Цитата Сообщение от Curry Посмотреть сообщение
Придумывают какую ни будь новую фишку, хотя бы в том же вебе, и давай её реализовывать на десятках языков. Бессмысленные затраты человеко-веков в масштабах планеты.
Но некоторым вынь да положь именно визуалбейсиковский синтаксис, или ещё какой.
И не говори, а из продуктов питания нужно оставить только хлеб да курицу. А то понапридумывают всяких говядин, свинин, овощей и прочего непотребства. Ещё миллионы соусов всяких. И чё людям на ассемблере не писалось? А нет, погоди, там ж тоже понапридумывали всяких архитектур разных, ироды.

Цитата Сообщение от Curry Посмотреть сообщение
До 3ей версии там даже лямбд не было.
Раз. Пока не много. Ещё какие?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.08.2020, 23:32

Зачем нужен EventHandler?
Дана задача добавить кнопку на форму только программным кодом Какую играет роль EventHandler в такой записи mnuExit.Click += new...

Зачем он нужен. ExecuteScalar();
Добрый всем. Может ли мне кто-нить обьяснить зачем нужна эта функция? Как я понял, она возвращает первое значение. Но ведь нужны...

Зачем нужен CancellationToken?
у CancellationTokenSource есть тот-же свойство IsCancellationRequested, и метод Cancel вызывается у CancellationTokenSource. Зачем они...

Зачем нужен кастинг?
Всем привет! Смотрю курсы c# для начинающих. Не могу понять, зачем нужен кастинг. Так зачем он нужен?

Зачем нужен модификатор out
Зачем нужен модификатор out, если можно подставить ref, присвоив переменным нули в начале... using System; class Decompose { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru