Здравствуйте, varenikAA, Вы писали:
AA>И не скритп и не хаскель, по описанию на сайте просто понахватали всего и пропихивают как самую вкусную часть.
Язык создаёт известный в узких кругах Андерс Хейлсберг. Это с его подачи многие языковые фичи становятся популярными.
AA>взять хотя бы это AA>
AA> if (typeof padding === "number")
AA>
Ты бы разобрался, что такое джаваскрипт, а что такое ТайпСкрипт. Ты показываешь фичу джаваскрипта!
Подход у тайпскрипта — ничего в джаваскрипте не исправлять, только добавить типы. Потому реально очень круто. Та часть, которая именно тайпскрипт, очень крутая!
Все давно знают, что джаваскрипт как язык уродец, имеет кучу родовых травм. Что нового ты к этому можешь добавить?
AA>варианты есть, а типы чекаются строкой, и это только первое впечатление! AA>А что будет когда увязнешь? AA>Согласны?
Похоже, ты заглядываешь в ЯП чисто ради посмотреть. Что тебе с того, что тайпчек делается через строку? Это чисто вкусовщина.
Здравствуйте, Ikemefula, Вы писали:
AA>>И не скритп и не хаскель, по описанию на сайте просто понахватали всего и пропихивают как самую вкусную часть. I>Язык создаёт известный в узких кругах Алекс Хейсберг.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, Ikemefula, Вы писали:
AA>>>И не скритп и не хаскель, по описанию на сайте просто понахватали всего и пропихивают как самую вкусную часть. I>>Язык создаёт известный в узких кругах Алекс Хейсберг.
НС>Андерс он. Хейлсберг.
I>Похоже, ты заглядываешь в ЯП чисто ради посмотреть. Что тебе с того, что тайпчек делается через строку? Это чисто вкусовщина.
Отнюдь, я прекрасно понимаю пользу строгой статической типизации. и мне это нужно для работы, т.к. въезжаю в свелте, а там вроде как топят за ТС.
Но первое впечатление не айс.
Вкусовщина? Это опечатки и отсутствие TYPE script.
Должен быть полноценный матч по типам. раз уж заявили что это наполовину хаскел.
Здравствуйте, varenikAA, Вы писали:
AA>Вкусовщина? Это опечатки и отсутствие TYPE script. AA>Должен быть полноценный матч по типам. раз уж заявили что это наполовину хаскел.
Здравствуйте, varenikAA, Вы писали:
AA>Отнюдь, я прекрасно понимаю пользу строгой статической типизации. и мне это нужно для работы, т.к. въезжаю в свелте, а там вроде как топят за ТС. AA>Но первое впечатление не айс. AA>Вкусовщина? Это опечатки и отсутствие TYPE script.
Вероятно, это оттого, что ты ничего серьезного не писал ни на жээсе, ни на тайпскрипте. Сунул нос, получил какое то впечателение и пошел строчить на форум.
Тайпскрипт позволяет писать большие приложения на жээсе. Вот для чего он нужен. Для того и задумывался. Прикинь, вовсе не для того, что нравиться тебе.
AA>Должен быть полноценный матч по типам.
Есть Flow — там гораздо более строгие типы. И этот Flow нахрен никому не упал.
>раз уж заявили что это наполовину хаскел.
Ты попутал Flow и Typescript. Про тайпскрипт никто такого не заявлял — под низом всё равно джаваскрипт. Он изначально позволяет тебе типизировать таким образом, что бы ты имел возможность выстрелить себе в ногу Flow, в отличие от TypeScript, исправляет систему типов. Внезапно, Flow почему то никому не нужен. Собственно такая болезнь у всех исправляшек.
Здравствуйте, Ikemefula, Вы писали:
I>Похоже, ты заглядываешь в ЯП чисто ради посмотреть. Что тебе с того, что тайпчек делается через строку? Это чисто вкусовщина.
Ну не знаю, не совсем уж вкусовщина. Я бы предпочёл чтобы if (typeof padding === "nunber") падал сразу во время компиляции, чем тупить почему же оно не работает в рантайме.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
·>Здравствуйте, Ikemefula, Вы писали:
I>>Похоже, ты заглядываешь в ЯП чисто ради посмотреть. Что тебе с того, что тайпчек делается через строку? Это чисто вкусовщина. ·>Ну не знаю, не совсем уж вкусовщина. Я бы предпочёл чтобы if (typeof padding === "nunber") падал сразу во время компиляции, чем тупить почему же оно не работает в рантайме.
Здравствуйте, Ikemefula, Вы писали:
I>Ты попутал Flow и Typescript.
Так они близнецы-братья, с первого взгляда. Просто один от ФБ, второй от МС.
I> Про тайпскрипт никто такого не заявлял — под низом всё равно джаваскрипт. Он изначально позволяет тебе типизировать таким образом, что бы ты имел возможность выстрелить себе в ногу Flow, в отличие от TypeScript, исправляет систему типов. Внезапно, Flow почему то никому не нужен. Собственно такая болезнь у всех исправляшек.
Так и у Flow тот же самый ЖС. Просто тайпчекер более аккуратно старается ошибки ловить.
Сдается мне, разница в популярности у них связана не с фичами, а исключительно историческая и генеалогическая. Если б они поменялись, Flow был бы от МС и использовался в тех проектах, что сделали ТС известным, то все бы щас писали на нем, а ТС был бы внутренней игрушкой ФБ.
Здравствуйте, Ikemefula, Вы писали:
I>Ты попутал Flow и Typescript. Про тайпскрипт никто такого не заявлял — под низом всё равно джаваскрипт.
В руководстве прямо показано(лень искать ссылку), что аннотации типов абсолютно идентичны хаскельным, и да я в курсе что тайпскрипт компилится бабелом в жс,
собстно как и большинство яп для браузеров. например, ЭЛМ, который просто подможножество хаскеля, что никак ему не мешает.
ПС, паттерн матчинг особо не интересен, так к слову пришлось, щас это вроде модная фича, но матч через функцию это конечно интересно.
Здравствуйте, ·, Вы писали:
I>>Похоже, ты заглядываешь в ЯП чисто ради посмотреть. Что тебе с того, что тайпчек делается через строку? Это чисто вкусовщина. ·>Ну не знаю, не совсем уж вкусовщина. Я бы предпочёл чтобы if (typeof padding === "nunber") падал сразу во время компиляции, чем тупить почему же оно не работает в рантайме.
This condition will always return 'false' since the types '"string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"' and '"nunber"' have no overlap.
Здравствуйте, D. Mon, Вы писали:
I>>Ты попутал Flow и Typescript.
DM>Так они близнецы-братья, с первого взгляда. Просто один от ФБ, второй от МС.
Никакие они не близнецы. Flow имеет другую модель типов, имеет другой совсем тулчейн и пишется на другом языке. Уже отсюда ясно, что товарищи слегка упоролись — сами не осилили Flow на Flow.
I>> Про тайпскрипт никто такого не заявлял — под низом всё равно джаваскрипт. Он изначально позволяет тебе типизировать таким образом, что бы ты имел возможность выстрелить себе в ногу Flow, в отличие от TypeScript, исправляет систему типов. Внезапно, Flow почему то никому не нужен. Собственно такая болезнь у всех исправляшек.
DM>Так и у Flow тот же самый ЖС. Просто тайпчекер более аккуратно старается ошибки ловить.
Прежде всего его модель типов нужно долго долбить, что бы адекватно применять. Иначе начинается борьба с системой типов.
DM>Сдается мне, разница в популярности у них связана не с фичами, а исключительно историческая и генеалогическая. Если б они поменялись, Flow был бы от МС и использовался в тех проектах, что сделали ТС известным, то все бы щас писали на нем, а ТС был бы внутренней игрушкой ФБ.
ТС дает очень плавный вход и пологую кривую обучения — ровно то, что востребовано. Исправляшки типа Flow это ровно наоборот — долгие мучения для большинства тех, кто пересаживается с жээс.
Потому ТС не вызывает столько дискомфорта, сколько Flow. А следовательно, именно на него пересаживаются с жээса.
Здравствуйте, varenikAA, Вы писали:
AA>Здравствуйте, Ikemefula, Вы писали:
I>>Ты попутал Flow и Typescript. Про тайпскрипт никто такого не заявлял — под низом всё равно джаваскрипт. AA>В руководстве прямо показано(лень искать ссылку), что аннотации типов абсолютно идентичны хаскельным, и да я в курсе что тайпскрипт компилится бабелом в жс,
1 Бабелом в жээс компилится Flow, а тайпскрипт это компилятор и ему бабели не нужны
2 Аннотации не идентичны — семантика другая, что очевидно — такие гарантии, как в хаскеле, невозможны.
3 Более того — многие вещи, которые можешь затипизировать, не имеют поддержки в жээсе, а следовательно реализуемые только костылями, например — монады. Поддерживается только yield, await. Все остальное — только костылями
AA>собстно как и большинство яп для браузеров. например, ЭЛМ, который просто подможножество хаскеля, что никак ему не мешает.
То есть, отсутствие аудитории не в счёт? Это уже преграда — хаскелоподобные языки это огромный барьер для входа, что наблюдаем в индустрии как следствие.
Здесь нет ничего про "наполовину хаскел". Речь про заимствование некоторых концепций, которые, скажем, в хаскеле мега удобны, а вот здесь — как повезёт.
Здравствуйте, Ikemefula, Вы писали:
I>>>Похоже, ты заглядываешь в ЯП чисто ради посмотреть. Что тебе с того, что тайпчек делается через строку? Это чисто вкусовщина. I>·>Ну не знаю, не совсем уж вкусовщина. Я бы предпочёл чтобы if (typeof padding === "nunber") падал сразу во время компиляции, чем тупить почему же оно не работает в рантайме. I>
I>This condition will always return 'false' since the types '"string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"' and '"nunber"' have no overlap.
Хотя как я понял это warning, программа всё равно запускается. Но уже лучше.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
I>>·>Ну не знаю, не совсем уж вкусовщина. Я бы предпочёл чтобы if (typeof padding === "nunber") падал сразу во время компиляции, чем тупить почему же оно не работает в рантайме. I>>
I>>This condition will always return 'false' since the types '"string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"' and '"nunber"' have no overlap.
·> Хотя как я понял это warning, программа всё равно запускается. Но уже лучше.
Это как настроишь. Можно и с ошибками собрать и запустить.
Здравствуйте, Ikemefula, Вы писали:
I>То есть, отсутствие аудитории не в счёт?
Ну, кто такое сказал?
I> хаскелоподобные языки это огромный барьер для входа, что наблюдаем в индустрии как следствие.
Барьер не в сложности, а в том, что никто не понимает выгоды от использования более качественного инструмента.
Аналогия с бормашиной. Помню в лохматных 90х в деревне пошел к зубному, там бор был такой древний, что куски зубов разлетались по всему кабинету.
Пару лет спустя пошел в городскую зубную и поразился разнице — бор практически пылью сверлил.
А те кто попробовал новый ЯП оставляют отзывы, опять же берем передовые ЯП, тот же Elm, ts, F# по каждому из них восхищенные отзывы про то как код становится проще и надежней.
но да, блабла программисты никогда не переведутся. Мозг устроен на экономию энергии, а человек на получение быстрой выгоды. Мало у кого из руководителей есть понимание горизонта планирования.
Что будет с проектом через 1-5-10 лет? Все хотят быстрый результат.
Здравствуйте, varenikAA, Вы писали:
I>>То есть, отсутствие аудитории не в счёт?
AA> Ну, кто такое сказал?
Это факты. У джаваскрипта, тайпскрипта есть аудитория. У флоу, хаскелоподобных языков — нету. Спроси рекрутёров, сколько вакансий требует эту кунсткамеру. Разница примерно в два порядка.
I>> хаскелоподобные языки это огромный барьер для входа, что наблюдаем в индустрии как следствие.
AA>Барьер не в сложности, а в том, что никто не понимает выгоды от использования более качественного инструмента.
Выгоду как раз понимают, с этим проще всего. Демонстрирация занимает от силы час, с перерывом на обед.
А вот научиться всем хитромудрым правилам вывода/конструирования типов — вот эту часть приходится долбить годами.
Делее — при изменении системы типов разработчику необходимо переучиваться на другой подход к проектированию, написанию кода, рефакторингу и прочим вещам. Все это так же требует значительного количества времени.
Например, самый распрекрасный статически типизированый язык раскрывает себя только вместе с другими инструментами. Например, рефакторинг можно делать чаще, ширше и глубже. А раз так, то вручную такие масштабы просто не осилить. Опаньки! И где поддержка инструментов?
И вот здесь, внезапно, система типов Flow дает дополнительный барьер, который, по факту, преодолевают только передовики. Надо вспомнить, что таких в любой индустрии менее 10%, по определению.
AA>Что будет с проектом через 1-5-10 лет? Все хотят быстрый результат.
Ротация будет всегда, а следовательно, каждый новый должен будет долбить эти типы, другого варианта просто нет.
Здравствуйте, varenikAA, Вы писали:
AA>Здравствуйте, Ikemefula, Вы писали:
I>>То есть, отсутствие аудитории не в счёт?
AA> Ну, кто такое сказал?
Ну посмотри на аудиторию F# и С#.
Суть в том, что C# развивается в разных направлениях, в том числе и функциональном и покрывает бOльшую часть F#.
А остальные изыски F# нужные ооочень малой части аудитории.
Жалко, что нельзя совмещать 2 языка в проекте. Я бы с удовольствием использовал F# для определенного круга задач.
Тот же TypeScript как раз ближе к C#.
Все таки больше используются как раз гибридные языки. Тот же котлин
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Тот же TypeScript как раз ближе к C#. S>Все таки больше используются как раз гибридные языки. Тот же котлин
Не просто гибридные, а у которых пологая кривая обучения. В противном случае естественным образом образуется фильтр, который отбрасывает бОльшую часть аудитории
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, Serginio1, Вы писали:
S>>Тот же TypeScript как раз ближе к C#. S>>Все таки больше используются как раз гибридные языки. Тот же котлин
I>Не просто гибридные, а у которых пологая кривая обучения. В противном случае естественным образом образуется фильтр, который отбрасывает бОльшую часть аудитории
Согласен. Но многие как раз и кивают на C#, что он идет в сторону усложнения за счет функциональщины.
Да кому то и питона хватает за глаза, а кому то нужны деревья выражений, Roslyn (Абстрактное синтаксическое дерево) итд
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Ну посмотри на аудиторию F# и С#
Я бы тоже, вот очень вкусно смотрится https://saturnframework.org/
И кстати Ру чат по фшарпу регулярно пополняется.
Правда там тенденция больше не к ФП, а к строгой типизации и жесткой оптимизации.
Может это мое субъективное ощущение, но иногда фшарповый бинарник обгоняет сишарповый под 5-ю корку.
прелести строгой типизации.
Лирика.
По аналогии с широкораспространенным мнением что нельзя бейсик учить первым ЯП.
Думаю надо учить так:
1. common lisp — можно прямо в школе юзать, если не заморачиваться с емаксами и системой сборки(типа скриптов в Far-е).
2. F#
3. будущий спец уже должен выбрать самостоятельно.
И что конкретно в нем тебе показалось вкусным?
AA>Может это мое субъективное ощущение, но иногда фшарповый бинарник обгоняет сишарповый под 5-ю корку.
Что значит может? Ты либо мерял, и тогда непонятно почему может, либо не мерял, тогда это не субъективное мнение, а пустой треп. И типизация тут вообще не причем, потому что исполняется не C# или F#, а один и тот же строго типизированный IL.
AA>Думаю надо учить так:
Думы твои чем то аргументированы? Или предлагаешь поговорить о религии?
НС>И что конкретно в нем тебе показалось вкусным?
Лакночиность
НС>Что значит может? Ты либо мерял, и тогда непонятно почему может, либо не мерял, тогда это не субъективное мнение, а пустой треп. И типизация тут вообще не причем, потому что исполняется не C# или F#, а один и тот же строго типизированный IL.
IL может и один, да компиляторы разные.
НС>Думы твои чем то аргументированы? Или предлагаешь поговорить о религии?
На личном, пусть и скромном опыте. Не понял причем тут религия.
В CL присутствуют все возможности, но при этом очень простой синтаксис, после него легче въехать будет в те же плюсы.
ML позволяет научится более строго выражать предметную область, обрабатывать все кейсы.
К сожалению рабочий ЯП C#. Поэтому по фану уделяю не слишком много времени этому занятию.
А вот в школе самое то было бы. А то бейсики паскали слишком сложны для новичков. внимание фокусируется на низкоуровневых деталях.
Здравствуйте, varenikAA, Вы писали:
AA>Может это мое субъективное ощущение, но иногда фшарповый бинарник обгоняет сишарповый под 5-ю корку. AA>прелести строгой типизации.
Здравствуйте, varenikAA, Вы писали:
НС>>И что конкретно в нем тебе показалось вкусным? AA>Лакночиность
А, синтаксический оверхед? Знакомо. Но есть нюанс — написание контроллеров в реальных проектах занимает 0.1% времени.
AA>IL может и один, да компиляторы разные.
И? Можешь привести пример разницы в результирующем IL?
НС>>Думы твои чем то аргументированы? Или предлагаешь поговорить о религии? AA>На личном, пусть и скромном опыте.
Ну так расскажи про опыт.
AA>Не понял причем тут религия.
При том что если нет аргументов, но ты все равно веруешь, то это называется религией.
AA>А вот в школе самое то было бы.
Почему?
AA> А то бейсики паскали слишком сложны для новичков.
F# сложнее, так как требует вывернуть мозги.
AA> внимание фокусируется на низкоуровневых деталях.
Это для школьников как раз самое интересное. Да и понимание низкоуровневых деталей тоже важно.
Здравствуйте, varenikAA, Вы писали:
AA>Лирика. AA>По аналогии с широкораспространенным мнением что нельзя бейсик учить первым ЯП. AA>Думаю надо учить так: AA>1. common lisp — можно прямо в школе юзать, если не заморачиваться с емаксами и системой сборки(типа скриптов в Far-е).
То есть — условно. А на деле детей надо учить формализовывать решение задачи, для чего давать основы работы виртуальной машины. Здесь смотрим SICP Абельсона — вроде бы крутая штука, но жизнь показала, что есть более эффективные подходы.
AA>2. F#
Смысла большого нет — сразу втыкаемся в экзотику и получаем превратные сведения о работе железа и виртуальной машины. Имеет смысл идти ровно наоборот — плавно повышать уровень абстракции, а не требовать всё знать сразу на входе.
А что бы плавно повышать уровень абстракции, надо начинать с вещей вида "нанести шампунь на волосы с небольшим количеством воды, втереть, при необходимости повторить"
Собтсвенно дети на уроках робототехники именно так и делают и результаты фантистические — в начальной школе дети могут решать задачи, на которых выпускники вузов валятся на собеседованиях.
AA>3. будущий спец уже должен выбрать самостоятельно.
Если ты учил в отрыве от виртуальной машины, то в реальной работе придется долго-долго переучиваться. Основная проблема Лиспа и Сикп Абельсона именно в этом — студенты теряют связь с реальностью и нихрена не понимают особенности железа и виртуальной машины. А отсюда понятно, почему от Сикпа отказались в пользу двух вещей А) Питон Б) Си.
Итого — оказалось, что научить функциональщине проще, чем понять железо и виртуальную машину. А раз так, то очевидно, какое знание более универсальное, а значит и более полезное.
Здравствуйте, dikun, Вы писали:
AA>>варианты есть, а типы чекаются строкой, и это только первое впечатление!
D>Это, видимо, калька со старой JS-практики.
Это не калька, а сам JS. Тайпскрипт ничего в нём не исправляет, только добавляет типы + конструкции из будущих стандартов, с небольшим опережением.
Соответственно, в рантайме типов уже нет, type erasure, и работает обычный JS, который почти идентичен коду на TS. И это большое преимущество — все дыры-проблемы можно анализировать напрямую, а не догадываться, какие чудеса может подложить транслятор-компилятор-транспайлер и в каких случаях будет хорошо, а в каких — нет.
D>typeof NaN === 'number'
D>typeof new Number(1) === 'object'
D>typeof Number(1) === 'number'
D>
D>Так что нафиг-нафиг.
Эти конструкции тебя никто не заставляет использовать. Не существует ни одной задачи, которая обязывала бы тебя использовать эти вещи. То есть, не пиши new Number(1) и у тебя не будет проблем. В разных языках с примитивами есть множество проблем, жээс тут не одинок.
Number(1) — конверсия, вполне адекватная вещь, работает вполне себе годно. Проблема в том, что далеко не все другие типы дают ожидаемый результат. Например, Array(1) и Array([1]) и Array(1,2) это родовая травма.
typeof NaN === 'number' это валидная вещь, все по спеке Double, где NaN является числом.
Собственно, все это небольшие родовые травмы, исправлять которые за наличием огромного количества легаси кода смысла большого нет.
Здравствуйте, varenikAA, Вы писали:
AA>К сожалению рабочий ЯП C#. Поэтому по фану уделяю не слишком много времени этому занятию.
Сочувствую Шарп сложный язык: без ООП и статических классов ни одной программы нельзя написать. А вот Бейсик или Паскаль позволяют сразу копать отсюда и до обеда конкретные мелкие задачи.
AA>А вот в школе самое то было бы. А то бейсики паскали слишком сложны для новичков. внимание фокусируется на низкоуровневых деталях.
Если ты сможешь 30-летнему бородатому админу (который хочет войти в айти по понятным причинам, но не знает НИЧЕГО) объяснить что такое массив — твоя жизнь прожита не зря Кроме массива — индексы, нумерация с нуля, забудь про std::vector. Те же строки, что в Бейсике, что в Паскале, что в Си (где их нет).
Предлагаешь грузить ШКОЛЬНИКОВ абстракциями высшего порядка? Да ну нафиг... Нельзя так делать! А то после этого, ИМХО, получаются инвалиды, которые про сортировку знают лишь someList.sort() — зачем так жить?! В школе или на курсах начинающих программистов нужно рассказывать базовые вещи. А уж до F# и прочей функциональщины они все дойдут сами, как дозреют или по мере необходимости.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>А, синтаксический оверхед? Знакомо. Но есть нюанс — написание контроллеров в реальных проектах занимает 0.1% времени.
Не знаю о каком оверхеде идет речь. код F# в несколько раз короче и выразительней C#. И кто му же более однозначный за счет отсутствия void(по сути это тип означающий некую неопределенность результата).
НС>И? Можешь привести пример разницы в результирующем IL?
Предлагаете мне провести сравнительный анализ кода компиляторов. Очевидного для вас мало?
НС>Ну так расскажи про опыт.
хелоуворд опыт.
Здравствуйте, varenikAA, Вы писали:
НС>>А, синтаксический оверхед? Знакомо. Но есть нюанс — написание контроллеров в реальных проектах занимает 0.1% времени. AA>Не знаю о каком оверхеде идет речь. код F# в несколько раз короче и выразительней C#.
Вот прям в несколько раз? И короче — это далеко не главная характеристика языка.
НС>>И? Можешь привести пример разницы в результирующем IL? AA>Предлагаете мне провести сравнительный анализ кода компиляторов. Очевидного для вас мало?
Ну значит я прав — религия.
НС>>Ну так расскажи про опыт. AA>хелоуворд опыт.
Здравствуйте, ути-пути, Вы писали:
I>>typeof NaN === 'number' это валидная вещь, все по спеке Double, где NaN является числом.
УП>А в спеке случайно нет, что черное — это белое?
Тебе ктото запрещает открыть спецификацию IEEE 754 ? Все языки, которые реализуют Float, double итд реализуют одно и то же.
The standard defines:
arithmetic formats: sets of binary and decimal floating-point data, which consist of finite numbers (including signed zeros and subnormal numbers), infinities, and special "not a number" values (NaNs)
Здравствуйте, ути-пути, Вы писали:
УП>В твоей цитате это лишь специальное значение, а никак не число.
Ты попутал понятие типа и значения. Тип — float, а значение — NaN.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
УП>
УП>В твоей цитате это лишь специальное значение, а никак не число.
В том то и дело, что значение. А тип определяет конкретный язык программирования. Например, язык С# и функция такого вида
void F(double x) {
...
}
Очевидно, что бы передать NaN надо вызвать так F(Double.NaN)
Соответственно, здесь обнаруживаем ровно ту же проблему — в C# NaN является значением типа Double, а следовательно и числом.
Товарищи решили прикрыться фиговым листочком и переопределили оператор сравнения, т.е. NaN == NaN всегда будет false.
О ужос! И это C# !!!!1111
Здравствуйте, ути-пути, Вы писали:
УП>·>Ты попутал понятие типа и значения. Тип — float, а значение — NaN. УП>Я попутал? "NaN является числом" я написал?
Ты из контекста выдрал и решил заняться буквоедством?
typeof NaN === 'number' это валидная вещь, все по спеке Double, где NaN является числом.
По-моему это очевидно, что человек хотел сказать, что тип значения NaN — число.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
·>Ты из контекста выдрал и решил заняться буквоедством?
·>По-моему это очевидно, что человек хотел сказать, что тип значения NaN — число.
Так косноязычие в технических дисциплинах может привести к проблемам. Почему-то в спеке, которую он процитировал, такого бреда нет.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, ути-пути, Вы писали:
УП>·>Ты из контекста выдрал и решил заняться буквоедством? УП>·>По-моему это очевидно, что человек хотел сказать, что тип значения NaN — число. УП>Так косноязычие в технических дисциплинах может привести к проблемам. Почему-то в спеке, которую он процитировал, такого бреда нет.
Человек писал не спеку, а сообщение в форум.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, Ikemefula, Вы писали:
I>Странно, почему тогда пишешь длинно, пространно, да буквами, а не зипованым бинарным кодом?
Что тут странного? Я не евангелист,насильно не собираюсь идеи насаждать.
Если даже от многобукв столько негатива, то что будет когда я кодом начну выражаться?
Здравствуйте, varenikAA, Вы писали:
AA>Что тут странного? Я не евангелист,насильно не собираюсь идеи насаждать. AA>Если даже от многобукв столько негатива, то что будет когда я кодом начну выражаться?
Здравствуйте, ути-пути, Вы писали:
I>>В том то и дело, что значение.
УП>А кто писал, что не число — это число?
В ЯП не бывает просто значений. Они всегда какого то типа в т.ч. NaN.
То есть, NaN это такое же значение, как и все остальные в Double — 64 бита плавающая запятая, то есть это Double, т.е. число. Технически. Но для этого значения переопределены некоторые операции. Вот и все.
Вот малюсенький пример (посчитать среднее время между соседними событиями лога):
сколько кода займет такое на вашем ЯП?
Желательно как и здесь в виде скрипта
#r "nuget: FSharp.Data, 3.3.3"open FSharp.Data
open System
open System.IO
type RzLog = CsvProvider<"log.csv", ResolutionFolder=__SOURCE_DIRECTORY__, HasHeaders=true>
let path fn = Path.Combine(__SOURCE_DIRECTORY__, fn)
let data = RzLog.Load(path "log.csv")
let rows = data.Rows
let report y =
rows
|> Seq.filter (fun e -> e.DateTimeOffset.Year = y)
|> Seq.sortByDescending (fun e -> e.DateTimeOffset)
|> Seq.map (fun e -> e.DateTimeOffset)
|> Seq.pairwise
let ts s =
s
|> Seq.averageBy
(fun (a: DateTimeOffset, b: DateTimeOffset) ->
let c = a - b
c.TotalMinutes)
let ms s =
s
|> Seq.map
(fun (a: DateTimeOffset, b: DateTimeOffset) ->
let c = a - b
c.TotalMinutes)
let one s =
s
|> Seq.map
(fun (a: DateTimeOffset, b: DateTimeOffset) ->
let c = a - b
c.TotalMinutes > 1.)
for i in [ 2019 .. 2021 ] do
let t = report i |> ts
let min = report i |> ms |> Seq.min
let max = report i |> ms |> Seq.max
let dt = report i |> one |> Seq.countBy (id)
let (a, b) = dt |> Seq.head
let (c, d) = dt |> Seq.skip 1 |> Seq.head
printfn $"{i} {t} {min} {max} {(a, b)} {(c, d)}"let byH =
report 2020
|> Seq.filter
(fun (a, b) ->
Seq.contains a.DayOfWeek [ DayOfWeek.Saturday; DayOfWeek.Sunday ]
|> not
&& a.Hour > 6
&& a.Hour < 22)
|> Seq.map (fun (a, b) -> (a.Hour, (a - b).TotalMinutes))
|> Seq.groupBy (fun (a, b) -> a)
|> Seq.map (fun (a, b) -> (a, b |> Seq.averageBy (fun (a, b) -> b)))
|> Seq.sortBy (fun (a, b) -> a)
for h in byH do
printfn $"{fst h} {Math.Round(snd h)}"
Здравствуйте, varenikAA, Вы писали:
AA>Вот малюсенький пример (посчитать среднее время между соседними событиями лога): AA>сколько кода займет такое на вашем ЯП? AA>Желательно как и здесь в виде скрипта
Каким образом твой код говорит чего либо про тайпскрипт? Если твой fsharp такой распрекрасный, почему же его выбросили на помойку примерно 10 лет назад?
Здравствуйте, Ikemefula, Вы писали:
I> Каким образом твой код говорит чего либо про тайпскрипт?
Он отвечал на ветку, где речь была про утверждение "код F# в несколько раз короче и выразительней C#."
I> Если твой fsharp такой распрекрасный, почему же его выбросили на помойку примерно 10 лет назад?
Здравствуйте, D. Mon, Вы писали:
I>> Каким образом твой код говорит чего либо про тайпскрипт?
DM>Он отвечал на ветку, где речь была про утверждение "код F# в несколько раз короче и выразительней C#."
В несколько раз — это вероятно взят за образец императивный код, где делается всё подряд.
Если C#, то нужна ровно одна либа — CSV, т.к. все остальное уже есть. Дальше перепишется на Linq примерно 1 в 1
I>> Если твой fsharp такой распрекрасный, почему же его выбросили на помойку примерно 10 лет назад?
DM>Миллионы мух.
Конспироложество. В индустрии всегда высокий спрос на адекватные инструменты.
Здравствуйте, Ikemefula, Вы писали:
I> Если твой fsharp такой распрекрасный, почему же его выбросили на помойку примерно 10 лет назад?
Да кто же такое сказал? Напротив каждый день сообщество растет.
Например, Марк Симан автор DI уже несколько лет как полностью перешел на фарш.
потому что он на порядок Л У Ч Ш Е ! ! !
Здравствуйте, D. Mon, Вы писали:
DM>Покажи начало "log.csv", чтобы была понятнее постановка задачи.
Полей в логе много, но я анализировал только одно поле типа DateTimeOffset.
нужно было посчитать среднее время между соседними событиями.
не обязательно использовать типы. Достаточно ReadLines () и Split("\t")
можно было конечно решить задачу и без тайпровайдера,
просто в 5 фарше наконец можно в скриптах ссылаться на гит и нугет без лишних ерзаний.
В C# до сих пор этого нет. убогий интерэктив практически невозможно использовать. фаршовый конечно тоже не айс, если сравнивать с лиспами, но уже кое-что )))
Здравствуйте, Ikemefula, Вы писали:
I> В индустрии всегда высокий спрос на адекватные инструменты.
В индустрии огромная инерция, и новые языки, которых делают полторы калеки, практически никогда не выстреливают. Языков сотни, и без серьезной корпоративной поддержки и раскрутки большинство так и остаются без пользователей, а следовательно без библиотек и утилит, а следовательно без пользователей. Стандартный замкнутый круг нового языка.
Хорошей поддержки у F# от MS обычно не было, хоть это официально и их язык.
Для нишего языка уровня OCaml, Clojure, Elm, Racket, D и т.п. F# вполне успешен.
Здравствуйте, D. Mon, Вы писали:
I>> В индустрии всегда высокий спрос на адекватные инструменты. DM>В индустрии огромная инерция,
Дело не в инерции, а в том что в подавляющем большинстве случаев у тех полутора калек отсутствуют базовые знания и навыки в проектировании языков. Если уж в мейнстрим порой пролазят какие то несуразные отрыжки. то что говорить о горах по обочинам.
DM> и новые языки, которых делают полторы калеки, практически никогда не выстреливают.
Да почти весь мейнстрим спроектирован очень небольшим количеством человек. Даже вроде бы корпоративные Джава и Шарп.
DM> Языков сотни, и без серьезной корпоративной поддержки и раскрутки большинство так и остаются без пользователей
Питон, например, или там Руби, или даже, не к ночи буде упомянут, РНР?
DM>, а следовательно без библиотек и утилит,
Опять мимо. Сейчас есть готовые рантаймы, JVM и CLR, не особо сдерживающие свободу творчества. А вместе с ними и огромные библиотеки.
DM>Хорошей поддержки у F# от MS обычно не было, хоть это официально и их язык.
Тем не менее F# доступны все дотнетные библиотеки. Т.е. дело точно не в бобине.
DM>Для нишего языка уровня OCaml, Clojure, Elm, Racket, D и т.п. F# вполне успешен.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Дело не в инерции, а в том что в подавляющем большинстве случаев у тех полутора калек отсутствуют базовые знания и навыки в проектировании языков. Если уж в мейнстрим порой пролазят какие то несуразные отрыжки. то что говорить о горах по обочинам.
Запросто. Но и наоборот бывает.
DM>> и новые языки, которых делают полторы калеки, практически никогда не выстреливают. НС>Да почти весь мейнстрим спроектирован очень небольшим количеством человек. Даже вроде бы корпоративные Джава и Шарп.
Проектируют сами языки небольшие группы людей, а вот чтобы .NET Framework сделать с такими штуками как WinForms, ASP.NET, WPF, WCF и т.д. тут нужна уже армия корпоративных индусов и много-много человеколет.
DM>> Языков сотни, и без серьезной корпоративной поддержки и раскрутки большинство так и остаются без пользователей НС>Питон, например, или там Руби, или даже, не к ночи буде упомянут, РНР?
Им всем троим уже больше 25 лет. И это 3 из 130. Если бы не довольно случайные события в их судьбе, вроде выхода выстрелившего Rails на втором десятке лет Руби или недавней волне мышиного обучения и TensorFlow, они бы так и прозябали. Собственно, Руби уже в забвение возвращается. PHP тоже в нужное время в нужном месте оказался, популярным стал вовсе не за то, что хорошо спроектирован.
Если завтра возникнет новая ниша, где самый готовый фреймворк окажется внезапно на F# или там на Nim'e, могут и они подняться на олимп мейнстрима. Это случайные процессы для языков без корпоративной поддержки.
DM>>, а следовательно без библиотек и утилит, НС>Опять мимо. Сейчас есть готовые рантаймы, JVM и CLR, не особо сдерживающие свободу творчества. А вместе с ними и огромные библиотеки.
Да, к F# это меньше относится, это я уже про новые языки в целом.
Здравствуйте, D. Mon, Вы писали:
DM>Проектируют сами языки небольшие группы людей, а вот чтобы .NET Framework
Но речь именно про языки. F#, с которго обсуждение началось, тот самый FW имеет в полном объеме. Не помогло.
DM>Им всем троим уже больше 25 лет. И это 3 из 130.
В мейнстриме 130 языков? Серьезно?
DM>Если бы не довольно случайные события в их судьбе,
Так оно про любой язык так можно сказать.
DM>Да, к F# это меньше относится
Это к нему совсем не относится.
DM>, это я уже про новые языки в целом.
Но это был твой единственный аргумент в пользу F#. А теперь ты заявляешь что он к нему не относится.
Здравствуйте, Ночной Смотрящий, Вы писали:
DM>>Им всем троим уже больше 25 лет. И это 3 из 130. НС>В мейнстриме 130 языков? Серьезно?
Кто говорит в мейнстриме? Не я. Я написал выше:
Языков сотни, и без серьезной корпоративной поддержки и раскрутки большинство так и остаются без пользователей.
Вот названные 3 языка — как раз из тех немногих, что не попали в большинство. Большинство оказываются не в мейнстриме.
DM>>Если бы не довольно случайные события в их судьбе, НС>Так оно про любой язык так можно сказать.
Именно! Поэтому не надо удивляться, что один язык стал популярным, а другой не стал. Это обычно не следствие дизайна и качества языка, а стечение множества обстоятельств.
По дефолту любой маленький (по числу юзеров) язык так и остается маленьким. Должно что-то особенное произойти, чтобы из этого круга выйти. Доступность библиотек это не единственный фактор. Есть еще и другие необходимые "бобины" — редакторы, дебаггеры, компиляторы на разных платформах, плюс нетехнические факторы, культурные.
Здравствуйте, D. Mon, Вы писали:
DM>В индустрии огромная инерция, и новые языки, которых делают полторы калеки, практически никогда не выстреливают.
Полторы калеки это как раз про жээс.
Инерция ни при чем — индустрия интенсивно поглощает необученый контингент. 10 лет назад тестировщики были без образования. Сегодня уже разработчики такие встречаются регулярно. За счет этого полным ходом идет разделение труда, что есть основа эффективности.
Вот это основная причина — за небольшой срок такой работник не успевает освоить сложный для него инструмент, т.к. по уши в проблемах заказчика и домен только небольшая часть всего этого.
DM>Хорошей поддержки у F# от MS обычно не было, хоть это официально и их язык.
Была. Язык повторил стандартный путь функционального языка — не взлетел. Стал уделом фриков.
DM>Для нишего языка уровня OCaml, Clojure, Elm, Racket, D и т.п. F# вполне успешен.
Слабая успешность. 10 лет назад крику было столько, хоть уши затыкай. Потом оказалось, что написаные на нем проекты надо переписывать, т.к. типичный инженер не успевает столько всего освоить, т.к. по уши сидит в проблемах заказчика.
При этом функциональщина проникает в массы и никакая инерция ей не мешает. Только не по указке сверху "вот вам язык, а если не умеете, смотрите парадокс Блаба"
В полный рост используется не просто функциональное, но и функциональное реактивное.
То есть, развитие идет от задач, естественным способом. Странно — те же самые инженеры без проблем понимают эти концепции и применяют каждый день. То есть, препятствие это не функциональщина, а ф-шарп и подобные вещи.
А вот те, кто этого не понимает, орут про парадоксы блаба
Здравствуйте, varenikAA, Вы писали:
I>> Если твой fsharp такой распрекрасный, почему же его выбросили на помойку примерно 10 лет назад?
AA>Да кто же такое сказал? Напротив каждый день сообщество растет.
Относительно заброшеных реликтов — да. Относительно мейнстримных, того же жээс и тээс — нет,
В каких единицах это растет, с 0.1% дорос до 0.2%? Рост в два раза!!!!!!
Scala — есть рост, видно по вакансиям и зп. F# — где все это?
10 лет назад по F# было крику чуть не из каждого утюга. И что? С тех пор функциональщина и реактивщина прочно обосновались в мейнстриме и даже в жээсе. А F# имеет ту же долю, что и тогда.
"Марк Симан автор DI" — он поменял область деятельности и одного фрика на другого
Про вакансии — раньше их было, и я даже разработчиков на F# встречал и даже на собеседованиях подымался вопрос. А щас чет никак.
Здравствуйте, varenikAA, Вы писали:
DM>>Покажи начало "log.csv", чтобы была понятнее постановка задачи.
AA>Полей в логе много, но я анализировал только одно поле типа DateTimeOffset.
OMG! Как только дойдет дело до полноценного анализатора, внятный инструмент перекроет все твое скриптование, как бык овцу.
AA>нужно было посчитать среднее время между соседними событиями. AA>не обязательно использовать типы. Достаточно ReadLines () и Split("\t")
В таком случае в тээсе будет еще и короче
AA>можно было конечно решить задачу и без тайпровайдера, AA>просто в 5 фарше наконец можно в скриптах ссылаться на гит и нугет без лишних ерзаний.
Здравствуйте, D. Mon, Вы писали:
DM>Кто говорит в мейнстриме? Не я. Я написал выше: DM>Языков сотни, и без серьезной корпоративной поддержки и раскрутки большинство так и остаются без пользователей.
Когда у языка много пользователей это называется мейнстрим, разве нет?
DM>Вот названные 3 языка — как раз из тех немногих, что не попали в большинство. Большинство оказываются не в мейнстриме.
Что логично. И в этом большинстве есть в том числе и всякие корпоративные изделия.
DM>>>Если бы не довольно случайные события в их судьбе, НС>>Так оно про любой язык так можно сказать. DM>Именно!
Тогда к чему твое противопоставление языкам одиночек корпоративных языков?
Здравствуйте, Ikemefula, Вы писали:
I>10 лет назад тестировщики были без образования. Сегодня уже разработчики такие встречаются регулярно.
Жаль ломать твою теорию, но лет 25 назад разработчиков вообще без образования или с гуманитарным образованием в процентном отношении было намного больше чем сейчас. У меня сейчас все в команде с более менее профильным высшим образованием, а, скажем, 20 лет назад я один такой был на несколько команд.
Здравствуйте, Ночной Смотрящий, Вы писали:
DM>>Кто говорит в мейнстриме? Не я. Я написал выше: DM>>Языков сотни, и без серьезной корпоративной поддержки и раскрутки большинство так и остаются без пользователей.
НС>Когда у языка много пользователей это называется мейнстрим, разве нет?
Да. И большинство языков в него не попадают, о чем я и говорю.
НС>Тогда к чему твое противопоставление языкам одиночек корпоративных языков?
Если бы не миллиард долларов, вложенных Sun'ом в джаву, если бы не мощные усилия MS по пропихиванию .NET и C#, у этих корпоративных языков скорее всего не было бы столько пользователей.
Здравствуйте, D. Mon, Вы писали:
НС>>Когда у языка много пользователей это называется мейнстрим, разве нет? DM>Да. И большинство языков в него не попадают, о чем я и говорю.
А я говорю о том, что даже в мейнстриме, несмотря на то что там языков оень мало, есть языки, созданные одиночками. Т.е. отсутствие поддержки мегакорпорациями однозначно show stopper не является.
НС>>Тогда к чему твое противопоставление языкам одиночек корпоративных языков? DM>Если бы не миллиард долларов, вложенных Sun'ом в джаву, если бы не мощные усилия MS по пропихиванию .NET и C#, у этих корпоративных языков скорее всего не было бы столько пользователей.
Здравствуйте, Ikemefula, Вы писали:
I>Scala — есть рост, видно по вакансиям и зп. F# — где все это?
Заходи в телегу, чат fsharp ru увидишь сообщество не маленькое.
I>10 лет назад по F# было крику чуть не из каждого утюга. И что? С тех пор функциональщина и реактивщина прочно обосновались в мейнстриме и даже в жээсе. А F# имеет ту же долю, что и тогда.
Какая функциональщина? Во первых в шарпе ее нет, там только отрыжка.
а во вторых, суть в самом подходе к ЯП. когда у тебя любая функция возврашает что-то кроме пустоты это сразу делает код гораздо надежней. просто по определению.
I>"Марк Симан автор DI" — он поменял область деятельности и одного фрика на другого
Ну, ты то у нас конечно круче Симана!
I>Про вакансии — раньше их было, и я даже разработчиков на F# встречал и даже на собеседованиях подымался вопрос. А щас чет никак.
Я разве говорил о дешевой популярности и монетизации?
Здравствуйте, Ikemefula, Вы писали:
I>OMG! Как только дойдет дело до полноценного анализатора, внятный инструмент перекроет все твое скриптование, как бык овцу.
конкретней. плиз!
I> В таком случае в тээсе будет еще и короче
я против ts ничего не имею, но можно и нужно Л У Ч Ш Е ! ! !
I>До жээса и тээса вам как до небес
Здравствуйте, Privalov, Вы писали:
P>Здравствуйте, varenikAA, Вы писали:
AA>>Краткость сестра таланта.
P>Антон Павлович писал немного о другом. Хорошо писать можно и на очень болтливом Коболе.
Это понятно, но я видел как падавана вводил вступор бойлерплейт на сишапре. а в шарпе достигнута гармония в этом отношении.
на других платформах может подругому.
время рассудит
Здравствуйте, varenikAA, Вы писали:
AA>варианты есть, а типы чекаются строкой, и это только первое впечатление! AA>А что будет когда увязнешь? AA>Согласны?
Здравствуйте, Ночной Смотрящий, Вы писали:
I>>10 лет назад тестировщики были без образования. Сегодня уже разработчики такие встречаются регулярно.
НС>Жаль ломать твою теорию, но лет 25 назад разработчиков вообще без образования или с гуманитарным образованием в процентном отношении было намного больше чем сейчас.
Тогда эти были единичные случаи, а сейчас это вариант нормы.
Тестировщик с любым образованием или без него, но с английским, через 2 месяца становится к станку.
Разработчику надо хотя бы год, хотя "вайти вайти" каким то образом и здесь срезают углы. Ктото же их трудоустраивает
> У меня сейчас все в команде с более менее профильным высшим образованием, а, скажем, 20 лет назад я один такой был на несколько команд.
Так надо не в своей команде статистику собирать, а на ранке труда.
Скажем, раньше спокойно брали студента 3-го или 4го курса, их было полно и можно было выбирать.
Сейчас в норме работают уже и первокурсники, и даже школьники где то чего то подрабатывают. Раньше я таких видел 2 штуки за 5 лет. Сейчас уже регулярный случай.
Здравствуйте, varenikAA, Вы писали:
I>>Scala — есть рост, видно по вакансиям и зп. F# — где все это?
AA>Заходи в телегу, чат fsharp ru увидишь сообщество не маленькое.
Мизер. Тайпскрипт появился лет на 7 позже и обогнаш фарш как стоячего. Scala за эти же годы увеличила долю многократно и влезла таки в мейнстрим. А фарш несмотря на хайп и вой вокруг него 10 лет назад ничего внятного родить не смог.
I>>10 лет назад по F# было крику чуть не из каждого утюга. И что? С тех пор функциональщина и реактивщина прочно обосновались в мейнстриме и даже в жээсе. А F# имеет ту же долю, что и тогда. AA>Какая функциональщина? Во первых в шарпе ее нет, там только отрыжка.
Ценность языковых фич переоценена — кодинг у тебя занимает процентов 10 времени. И всё. Все остальные вещи намного важнее, например, адекватное проектирование, т.е. работа с требованиями.
Далее, если надо старый код перелопачивать, узкое место это инструменты, а не функциональщина. А тут упс — пустошь Смауга Вот тебе и объяснение, что твой фарш придется переписывать на C#
Итого, как ни крути, языковые фичи не настолько ценны, как про них думают.
AA>а во вторых, суть в самом подходе к ЯП. когда у тебя любая функция возврашает что-то кроме пустоты это сразу делает код гораздо надежней. просто по определению.
Открываем книгу Криса Окасаки и читаем вместе предисловие — Окасаки утверждает, что иммутабельные структуры данных и алгоритмы, на них основаные намного более сложные. Более того, он же утверждает, что для многих простых мутабельных алгоритмов ему неведомы простые эквиваленты на функциональщине.
То есть, типичный разработчик будет или тупить неделями, или совершать другие ошибки, или воевать против языка.
То есть, для функционального языка обязательно нужен высококвалифицированый разработчик и никак иначе. А вот для функционального программирования на обычном языке все гораздо проще.
I>>"Марк Симан автор DI" — он поменял область деятельности и одного фрика на другого AA>Ну, ты то у нас конечно круче Симана!
Але, где ты видишь, что я про себя говорю? Симан поменял область деятельности. Глаза то раскрой?
I>>Про вакансии — раньше их было, и я даже разработчиков на F# встречал и даже на собеседованиях подымался вопрос. А щас чет никак. AA>Я разве говорил о дешевой популярности и монетизации?
Если фарш не появляется в вакансиях, значит спрос на него равен нулю.
Здравствуйте, Ikemefula, Вы писали:
НС>>Жаль ломать твою теорию, но лет 25 назад разработчиков вообще без образования или с гуманитарным образованием в процентном отношении было намного больше чем сейчас. I>Тогда эти были единичные случаи,
Нет, тогда единичными случаями как раз было профильное образование. В советских ВУЗах было крайне мало мест с таким образованием, и даже коммерческие не особо стремились, ибо тогда программистом было еще не модно, модно было экономистом.
I>Тестировщик с любым образованием или без него, но с английским, через 2 месяца становится к станку.
Это уже ваша, белорусская специфика, делай поправку на то что весь ваш вайти — аутсорсинг. Тут английский для карьеры совсем не обязателен. Я вот работаю в международной компании сейчас — английский в вакансиях даже не упоминается. Что довольно странно, потому что мне регулярно с соседними офисами приходится митинговать, и, что особенно весело, совсем не в режиме "сижу и делаю вид что понимаю". А уж в каком нибудь мясе на английский всем плевать.
>> У меня сейчас все в команде с более менее профильным высшим образованием, а, скажем, 20 лет назад я один такой был на несколько команд. I> Так надо не в своей команде статистику собирать, а на ранке труда.
Ну так собери.
I>Скажем, раньше спокойно брали студента 3-го или 4го курса, их было полно и можно было выбирать.
Мы и сейчас берем, если вакансии джунов есть. И даже если нет — у меня вот одного джуна, которого я выпросил и который только летом учиться закончил, сперли.
I>Сейчас в норме работают уже и первокурсники, и даже школьники где то чего то подрабатывают. Раньше я таких видел 2 штуки за 5 лет. Сейчас уже регулярный случай.
Здравствуйте, varenikAA, Вы писали:
I>>OMG! Как только дойдет дело до полноценного анализатора, внятный инструмент перекроет все твое скриптование, как бык овцу. AA>конкретней. плиз!
Кому нужен анализ логов? Если это, например, какой нибудь L2 суппорт, или сетевики, или девопсы. Первые две категории к программированию вообще никак, вторые пишут, но обычно на скриптовых языках. Соответсвенно, нужен внятный интерфейс для сбора-хранения-анализа с веб-интерфейсом.
Им что, бегать до тебя каждый раз, когда в логах чего поменяется?
Если это репорты, то для этого уже есть внятные движки, которые уже умеют внятные языки запросов.
Вобщем, как ни крути, а твоя наколеночная поделка погоды не делает.
I>> В таком случае в тээсе будет еще и короче AA>я против ts ничего не имею, но можно и нужно Л У Ч Ш Е ! ! !
I>>До жээса и тээса вам как до небес
AA>Д О К А Ж И!
Смотри сам, только не крякни в процессе
import {
add,
multiply,
} from "https://x.nest.land/ramda@0.27.0/source/index.js";
Здравствуйте, varenikAA, Вы писали:
P>>Антон Павлович писал немного о другом. Хорошо писать можно и на очень болтливом Коболе. AA>Это понятно, но я видел как падавана вводил вступор бойлерплейт на сишапре.
Какой именно бойлерплейт? Ты точно уверен что проблема была именно в языке?
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>>Жаль ломать твою теорию, но лет 25 назад разработчиков вообще без образования или с гуманитарным образованием в процентном отношении было намного больше чем сейчас. I>>Тогда эти были единичные случаи,
НС>Нет, тогда единичными случаями как раз было профильное образование. В советских ВУЗах было крайне мало мест с таким образованием, и даже коммерческие не особо стремились, ибо тогда программистом было еще не модно, модно было экономистом.
Ога. Инженеров и программированию даже в нашем захолустье в то время учили конское количество институтов и университетов. В России — еще больше.
Большинство этих людей работали в то время не по профилю — не было нормального количества рабочих мест.
I>>Тестировщик с любым образованием или без него, но с английским, через 2 месяца становится к станку.
НС>Это уже ваша, белорусская специфика, делай поправку на то что весь ваш вайти — аутсорсинг. Тут английский для карьеры совсем не обязателен.
Ты ошибся на 180 градусов
>Я вот работаю в международной компании сейчас — английский в вакансиях даже не упоминается. Что довольно странно, потому что мне регулярно с соседними офисами приходится митинговать, и, что особенно весело, совсем не в режиме "сижу и делаю вид что понимаю". А уж в каком нибудь мясе на английский всем плевать.
То есть, ты говоришь про свою контору, но почему то проблема в Беларуси
>>> У меня сейчас все в команде с более менее профильным высшим образованием, а, скажем, 20 лет назад я один такой был на несколько команд. I>> Так надо не в своей команде статистику собирать, а на ранке труда.
НС>Ну так собери.
Давно.
I>>Скажем, раньше спокойно брали студента 3-го или 4го курса, их было полно и можно было выбирать.
НС>Мы и сейчас берем, если вакансии джунов есть. И даже если нет — у меня вот одного джуна, которого я выпросил и который только летом учиться закончил, сперли.
Каменный век.
I>>Сейчас в норме работают уже и первокурсники, и даже школьники где то чего то подрабатывают. Раньше я таких видел 2 штуки за 5 лет. Сейчас уже регулярный случай.
НС>Видать ваша белорусская специфика.
И давно Россия с Украиной стали Беларусью? Польша тоже Беларусь?
Другие конторы ничем не отличаются, только делают это еще ширше, например — Епам.
Какие то отличия есть только в конторах, где проекты под завязку набиты всяким CS и матаном, здесь кардинально отличается рекрутинг. Нет образования — до свидания, и так почти во всех случаях.
Здравствуйте, D. Mon, Вы писали:
НС>>Тогда к чему твое противопоставление языкам одиночек корпоративных языков?
DM>Если бы не миллиард долларов, вложенных Sun'ом в джаву, если бы не мощные усилия MS по пропихиванию .NET и C#, у этих корпоративных языков скорее всего не было бы столько пользователей.
Конспироложество. Perl, Python, Scala — отличные примеры. А еще — JavaScript. Кто его только ни пытался вытеснить из браузера — vbscript, python, rexx, С++, C#, Java, ActionScript и прочие товарищи. А потом вышло так, что js не просто вытеснил, а убрал даже ActivX, апплеты, Silverlight, flash и прочую ересь.
С жээсом произошло страшное — он вдруг стал востребован и не просто какой то одной конторой, а вообще всеми подряд. А вот то, что выше, было уже следствием.
Здравствуйте, Ikemefula, Вы писали:
I>Ога. Инженеров и программированию даже в нашем захолустье в то время учили конское количество институтов и университетов.
Скорее всего ты моложе меня. Я учился в радиотехническом универе, и там на здоровенный ВУЗ с порядка тысячи учащихся на одном курсе предлагал про ЭВМ 4 группы по 20 человек — по группе программистов, системотехников, САПР и конструкторов ВТ. Четыре, Карл, причем одна не совсем про программирование! А, еще одна группа называлась "Вычислительные системы в экономике" — тогда экономистов тащили всеми правдами и неправдами куда только можно.
I>>>Тестировщик с любым образованием или без него, но с английским, через 2 месяца становится к станку. НС>>Это уже ваша, белорусская специфика, делай поправку на то что весь ваш вайти — аутсорсинг. Тут английский для карьеры совсем не обязателен. I>Ты ошибся на 180 градусов
Нет.
I>То есть, ты говоришь про свою контору, но почему то проблема в Беларуси
Я говорю про то что английский в РФ не обязателен, тем более для тестировщика.
I>Давно.
И где?
I>>>Скажем, раньше спокойно брали студента 3-го или 4го курса, их было полно и можно было выбирать. НС>>Мы и сейчас берем, если вакансии джунов есть. И даже если нет — у меня вот одного джуна, которого я выпросил и который только летом учиться закончил, сперли. I>Каменный век.
Нет, просто отличие продуктовой конторы от аутсорсера. Вам шашечки, нам ехать. Ехать на джунах и людях с гуманитарным образованием получается плохо за редчайшими исключениями. А вот жопочасы дяде за бугром, судя по всему, продавать получается, тем более что проверять никто не будет и можно джуна выдавать за сеньора.
I>>>Сейчас в норме работают уже и первокурсники, и даже школьники где то чего то подрабатывают. Раньше я таких видел 2 штуки за 5 лет. Сейчас уже регулярный случай. НС>>Видать ваша белорусская специфика.
I>И давно Россия с Украиной стали Беларусью? Польша тоже Беларусь?
Про Польшу ничего не знаю, Украина — такой же тотальный аутсорс, в в России это не так.
I>Другие конторы ничем не отличаются, только делают это еще ширше, например — Епам.
Белорусская контора, если не ошибаюсь. В РФ у нее конечно офисы есть, но на общем фоне это капля. И, опять же, насколько я в курсе, российские офисы от белорусских и украинских отличаются.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Скорее всего ты моложе меня. Я учился в радиотехническом универе, и там на здоровенный ВУЗ с порядка тысячи учащихся на одном курсе предлагал про ЭВМ 4 группы по 20 человек — по группе программистов, системотехников, САПР и конструкторов ВТ. Четыре, Карл, причем одна не совсем про программирование! А, еще одна группа называлась "Вычислительные системы в экономике" — тогда экономистов тащили всеми правдами и неправдами куда только можно.
Работы программистом даже для этих не хватало, что очевидно. Потому нормой было видеть как люди после нормального вуза побегав по профессиям приходили в начале нулевых переучиваться на профессию по специальности. С российским дипломом!
I>>>>Тестировщик с любым образованием или без него, но с английским, через 2 месяца становится к станку. НС>>>Это уже ваша, белорусская специфика, делай поправку на то что весь ваш вайти — аутсорсинг. Тут английский для карьеры совсем не обязателен. I>>Ты ошибся на 180 градусов
НС>Нет.
Ты смотришь в свой проект ,в свой вуз и тд. Это ничтожно мало, что бы делать вывод. Факт в том, что в 90х вакансий программиста не хаватало, что бы покрыть всех выпускников профильных специальностей. В госконторах за это много не платили, а коммерческих проектов было раз два и обчелся.
Соответсвенно такого перекоса в ЗП не было и близко.
I>>То есть, ты говоришь про свою контору, но почему то проблема в Беларуси НС>Я говорю про то что английский в РФ не обязателен, тем более для тестировщика.
Это мягко говоря не так. Тестировщики в норме часто общаются с заказчиком. Если ваш рынок закуклился, то это может объяснять конкретно ваш тренд. Но в целом англоязычных проектов на несколько порядков больше, чем русскоговорящих.
I>>Давно. НС>И где?
Ты в очередной раз хочешь, что бы я монографию написал? Я примерно лет 15 подряд проводил много собеседований в самых разных странах, на разные проекты.
НС>Нет, просто отличие продуктовой конторы от аутсорсера. Вам шашечки, нам ехать.
Это просто понты. Аутсорс — термин из 90х и 00х. Сейчас все гораздо сложнее, продуктовые аутсорсят, а аутсорсные выпускают свои продукты-сервисы. То есть, снова обращаю внимание — у тебя даже терминология из каменного века.
Далее, у тебя "продукт-аутсорс" эквивалентна "хороший-плохой", т.к. твой плач уже который год одинаковый — аутсорсы обманывают, косячат, и тд и тд. Это твоя личная проблема — как там над тобой надругались те, кого ты аутсорсами называешь.
На самом деле разница не "хорошие-плохие", а "специализированые-универсальные" или "много домена — мало домена" или "высокий риск — низкий риск" или "много матана — мало матана".
И если проект требует специализированый опыт, то устройство команды и вытекающих аспектов типа того же рекрутинга, вне зависимости от того, продукт это или не продукт.
А если универсальный, то и здесь будет примерно все одинаково.
Специализированые специалисты как правило фейлятся на собеседованиях у универсальных. Ровно как и наоборот. Одним не хватает широты, другим — глубины.
>Ехать на джунах и людях с гуманитарным образованием получается плохо за редчайшими исключениями. А вот жопочасы дяде за бугром, судя по всему, продавать получается, тем более что проверять никто не будет и можно джуна выдавать за сеньора.
Сколько ни работал , ни разу не видел "никто проверять не будет" — заказчик проверяет всегда, а сама контора крайне заинтересована, что бы заказчик получил свой заказ в сроки и надлежащем качестве. Но этом строится весь бизнес. Если ты обманул раз — не разбогатеешь, а вот постоянно обманывать — таких дураков нет.
То есть, ты пишешь какую то дичь, которая скорее всего у вас там, местечковая. Или, что скорее, выдаешь своё собственное видение.
I>>И давно Россия с Украиной стали Беларусью? Польша тоже Беларусь?
НС>Про Польшу ничего не знаю, Украина — такой же тотальный аутсорс, в в России это не так.
Судя по собеседованиям, примерно так же. Контингент в среднем более образованый, если с образованием. Если без него — ровно такой же.
I>>Другие конторы ничем не отличаются, только делают это еще ширше, например — Епам.
НС>Белорусская контора, если не ошибаюсь
Контора уже сто лет как не наша. Надо считать количество офисов и людей в конторе. В России поменьше, но это из за санкций, а не какой то местной специфики. Тем не менее, тысяч 5 точно есть.
Здравствуйте, Ikemefula, Вы писали:
DM>>Если бы не миллиард долларов, вложенных Sun'ом в джаву, если бы не мощные усилия MS по пропихиванию .NET и C#, у этих корпоративных языков скорее всего не было бы столько пользователей.
I>Конспироложество. Perl, Python, Scala — отличные примеры.
Perl мертв и живым никогда особо не был. Уж явно мертвее фарша.
Питон уже обсудили, он случайно выстрелил на волне интереса к ML спустя 25 лет от рождения. До этого был типа перла.
Скала мертва почти настолько же, насколько и F#.
Вылезла она лишь будучи единственной нормальной альтернативой джаве. Появились другие альтернативы вроде Котлина, и все, пока скала.
И главное: если один язык раскрутили за миллиард вложений, а второй набрал популярность сам, это вовсе не значит, что первый тоже смог бы стать популярным без тех вложений. Отличные примеры: сотни языков без вложений, которые популярными не стали.
Отличным примером языка с вложениями, который все равно плохо летит, был бы Dart. Много ли еще примеров? Не особо.
I>А еще — JavaScript.
Вот это уже совсем смешно. Когда у тебя монополия в крупнейшей области (браузеры), там любое говно будет популярным. Так и случилось.
I> Кто его только ни пытался вытеснить из браузера — vbscript, python, rexx, С++, C#, Java, ActionScript и прочие товарищи. А потом вышло так, что js не просто вытеснил, а убрал даже ActivX, апплеты, Silverlight, flash и прочую ересь.
Когда одно говно уже есть везде из коробки, а второе надо отдельно ставить и работает далеко не везде, тут выбор получается простой. Нет ни одного другого языка, работающего сразу во всех браузерах. А раз нету, то о чем тогда говорить.
Здравствуйте, Ikemefula, Вы писали:
I>Работы программистом даже для этих не хватало, что очевидно.
Нет, не очевидно. Работы для них хватало, они не хотели работать. Потому что, работая программистом, ты получал бы гроши, при этом надо было активно работать мозгой. Намного проще и выгоднее тогда было торговать шмотьем на рынке или устроится секретуткой/компьютерщиком в жирную контору. А программировать шли те, у кого душа к тому лежала и мозги в правильную сторону былти заточены.
обязателен.
I>>>Ты ошибся на 180 градусов НС>>Нет. I>Ты смотришь в свой проект
Нет. Я смотрю на свою компанию, на те компании в которых я работал до, на компании, в которые работают мои друзья. А вот ты судишь исключительно по ЕПАМу, в лучшем случае по аутсорсинговым компаниям. А в продуктовых компаниях ты работал?
I>Факт в том, что в 90х вакансий программиста не хаватало, что бы покрыть всех выпускников профильных специальностей.
Они сам не шли. У меня из моей группы по специальности пошли работать 3 или 4 человека из двух десятков. И вовсе не потому что они не нашли себе работы программистами, они даже не пытались.
I> В госконторах за это много не платили
Т.е. дело не в вакансиях, а в том что за это мало платили.
I>>>То есть, ты говоришь про свою контору, но почему то проблема в Беларуси НС>>Я говорю про то что английский в РФ не обязателен, тем более для тестировщика. I>Это мягко говоря не так.
В России это так.
I> Тестировщики в норме часто общаются с заказчиком.
Это если только у аутсорсеров. С заказчиками должны общаться сперва сейлзы, потом продакты. Общающийся с заказчиком тестировщих-джун — ацкий бред. Я уж не говорю о том, что если контора делает коробки, то про каких вообще заказчиков речь?
I>Если ваш рынок закуклился
Нет. Просто у нас рядовые тестировщики и программисты не беседуют с заказчиками.
I>>>Давно. НС>>И где? I>Ты в очередной раз хочешь, что бы я монографию написал?
ЧТД.
НС>>Нет, просто отличие продуктовой конторы от аутсорсера. Вам шашечки, нам ехать. I>Это просто понты.
Это факт.
I>Аутсорс — термин из 90х и 00х. Сейчас все гораздо сложнее, продуктовые аутсорсят, а аутсорсные выпускают свои продукты-сервисы.
Что в лоб, что по лбу. То что у вас тестировщики беседуют с заказчикам много говорит о ваших процессах и приоритетах.
I>Далее, у тебя "продукт-аутсорс" эквивалентна "хороший-плохой"
Фирменный стиль — разговор с голосами в своей голове?
I>, т.к. твой плач уже который год одинаковый — аутсорсы обманывают, косячат, и тд и тд.
Я такого никогда не писал. А то что написал ты — очень показательно. Показывает почему у тебя такие бурные эмоции каждый раз, когда я говорю что у аутсорса своя специфика и не надо натягивать ее на всю отрасль.
I>В России поменьше, но это из за санкций
До санкций тоже было поменьше.
I>, а не какой то местной специфики. Тем не менее, тысяч 5 точно есть.
Ну так проекты тянутся, люди наняты, есть проекты с заказчиками из России/компаний с большими офисами в России.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Какой именно бойлерплейт? Ты точно уверен что проблема была именно в языке?
Я имел ввиду излишнее увлечение наследованием в ООП, когда нужно прыгнуть пять раз по разным проектам чтобы понять логику кода.
Как ни крути, но если не считать меньшее кол-во инструментов(хотя развитие идет),в фарше все же кода на порядок меньше и он естественным образом фокусируется вокруг проблемы,
а не вокруг инфраструктуры кода.
2-м ключевым моментом является F# является то, что он заставляет все делать явно.
в C# больше вольностей. сначала это кажется хорошей идей, пока не выстрелишь себе в ногу.
вот здесь это хорошо видно: https://habr.com/ru/post/511534/
Здравствуйте, varenikAA, Вы писали:
НС>>Какой именно бойлерплейт? Ты точно уверен что проблема была именно в языке? AA>Я имел ввиду излишнее увлечение наследованием в ООП
И при чем тут язык?
AA>Как ни крути, но если не считать меньшее кол-во инструментов(хотя развитие идет),в фарше все же кода на порядок меньше
Нет, не на порядок точно.
AA>и он естественным образом фокусируется вокруг проблемы, AA>а не вокруг инфраструктуры кода.
Это потому что большая часть кода на фшарпе — баловство. На шарпе тоже код демки простой и красивый. А вот когда начинается доводка до продакшен состояния, вот тогда все и становится сложным.
AA>2-м ключевым моментом является F# является то, что он заставляет все делать явно.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>И при чем тут язык?
В основе каждого ЯП лежит та или иная концепция. В C#или java например ООП, все что делаем должно пренадлежать классу.
НС>Это потому что большая часть кода на фшарпе — баловство. На шарпе тоже код демки простой и красивый. А вот когда начинается доводка до продакшен состояния, вот тогда все и становится сложным.
Целиком и полностью согласен, но, когда код умещается на экране а не размазан по разным файлам( а фшарп позволяет описать типы домена на одном экране, в одном файле) бороться со сложностью становиться сложнее.
К конечном итоге шарп пришел спустя 10 лет к тому же — record и возможность писать методы без определения класса.
НС>Вкусовщина.
Возможно, я сам неоднократно явственно чуствовал что в одном случае идеально применим декларативный sql-подход, а иногда проще и понятней решение со словарем и циклом.
Здравствуйте, varenikAA, Вы писали:
P>>Антон Павлович писал немного о другом. Хорошо писать можно и на очень болтливом Коболе. AA>Это понятно, но я видел как падавана вводил вступор бойлерплейт на сишапре.
А что, бойлерплейт на фарше принципиально невозможен? Или этот падаван умеет на раз бойлерплейт, но только на фарше?
Тот, кто струячит бойлерплейт, он его наструячит на любом языке. Бойлерплейт появляется от неумения-нежелания заниматься конструированием-проектированием, а не от самого языка.
ничтожная часть проблем растет из самого языка. Например — числодробилки. Тут кроме как бойлерплейтом не обойтись.
И вот здесь, кстати говоря, в функциональном языке простор для бойлерплейта Смотри быструю сортировку на хаскеле — не однострочный фейк, а честную. Занимает столько же текста, как и версия С++, или даже больше.
Здравствуйте, D. Mon, Вы писали:
DM>Здравствуйте, Ikemefula, Вы писали:
DM>>>Если бы не миллиард долларов, вложенных Sun'ом в джаву, если бы не мощные усилия MS по пропихиванию .NET и C#, у этих корпоративных языков скорее всего не было бы столько пользователей.
I>>Конспироложество. Perl, Python, Scala — отличные примеры.
DM>Perl мертв и живым никогда особо не был. Уж явно мертвее фарша.
Ога. В своё время в вакансиях его было на порядок больше, чем у фарша в лучшие времена.
DM>Питон уже обсудили, он случайно выстрелил на волне интереса к ML спустя 25 лет от рождения. До этого был типа перла.
Аналогично с Перлом — в вакансиях задолго до МЛ Питон был намного популярнее фарша в лучшие времена. Именно Питон вытеснил Перл, и только много позже случился МЛ.
DM>Скала мертва почти настолько же, насколько и F#.
Ужос, надо кастомерам рассказать, а то они, дураки, продолжают открывать вакансии на Скале.
DM>Вылезла она лишь будучи единственной нормальной альтернативой джаве. Появились другие альтернативы вроде Котлина, и все, пока скала.
Конспироложество. Альтернатив было и есть пруд пруди — на JVM вагон и маленькая тележка языков.
DM>И главное: если один язык раскрутили за миллиард вложений, а второй набрал популярность сам, это вовсе не значит, что первый тоже смог бы стать популярным без тех вложений. Отличные примеры: сотни языков без вложений, которые популярными не стали.
Снова конспирология.
DM>Отличным примером языка с вложениями, который все равно плохо летит, был бы Dart. Много ли еще примеров? Не особо.
То есть, ты нам сам же рассказал, что
1. бренд и вложения не гарантируют успех
2. выстреливают и уродцы которых клепали полторы калеки
При этом ты продолжаешь утверждать, что причной всему бабло и бренд
DM>Вот это уже совсем смешно. Когда у тебя монополия в крупнейшей области (браузеры), там любое говно будет популярным. Так и случилось.
Ты сам себя опроверг. Джаваскрипт появился в Нетшкафе. Когда у него была монополия?
Проверяем твое высказываение — любое говно пусть будет "vbscript". В эпоху домнирования IE он вроде бы должен был взлететь, т.к. и монополист, и крупнейшая область и тд.
И что?
А ничего — слив. vbscript так и не взлетел, несмотря на все вливания, крики в течение 15 лет и принудительные попытки внедрить его повсюду.
I>> Кто его только ни пытался вытеснить из браузера — vbscript, python, rexx, С++, C#, Java, ActionScript и прочие товарищи. А потом вышло так, что js не просто вытеснил, а убрал даже ActivX, апплеты, Silverlight, flash и прочую ересь.
DM>Когда одно говно уже есть везде из коробки, а второе надо отдельно ставить и работает далеко не везде, тут выбор получается простой. Нет ни одного другого языка, работающего сразу во всех браузерах. А раз нету, то о чем тогда говорить.
Поначалу и жээс не работал сразу и во всех браузерах. Более того — он работал плохо и по разному даже в тех некоторых браузерах. Настолько плохо, что его вообще всерьёз не рассматривали.
Именно потому в браузер, внимание, добавили и Питон!, и REXX, и много чего еще. Всё это работало чисто и гладко в отличие от жээса. Однако же — упс, крутые языки не взлетели.
Питон это чистенький язык, почти без родовых травм сравнивая с жээс, однако же мало кто вообще знает, что он был когда то в браузере.
Про REXX знает еще меньше. И это не единственные примеры.
И что мы видим — классность, крутость языка и языковых фич сильно переоценены.
Здравствуйте, varenikAA, Вы писали:
НС>>И при чем тут язык? AA>В основе каждого ЯП лежит та или иная концепция. В C#или java например ООП, все что делаем должно пренадлежать классу.
Extension функции в C# это реализация именно этой концепции. Расширение находится в классах, но в этом случае это просто вариант неймспеса, т.к. с этим классом ты вообще ничего сделать не можешь.
В джаве такой вещи нет, а потому приходится городить огород и страдать
Кроме того, в шарпе и особенно в джаве давно уже, лет 10 или больше, активно заимствуются полезные вещи, которые функционалисты почему то считают своими собственными.
Более того — функциональное и ООП никак друг другу не противоречит. Это разные парадигмы, одна про вычисления, другая про структуру решения.
Отсюда понятно, почему есть ОО императивные, ОО функциональные, ОО логические, ОО <какие угодно>
Здравствуйте, varenikAA, Вы писали:
AA>Я имел ввиду излишнее увлечение наследованием в ООП, когда нужно прыгнуть пять раз по разным проектам чтобы понять логику кода.
В функциональном языке прыгать будешь не по наследованию, а по вызываемым функциям, итого — те же пять файлов в разных пакетах, что бы понять логику кода.
Это иллюзия, что де инверсия управления нужна только в ООП. Инверсия управления это инструмент абстрагирования.
Логгер у тебя точно так же будет приходить через инверсию управления, разница только в том, что делать это будешь какой нибудь монадой. Аудит — ровно так же. И в итоге нормальный ФП код выглядит примерно как ООП, с той разницей что для мелких вычислений в ФП больше инструментов.
Зато в ФП языке будет не хватать инструментов для структуры, просто потому, что ФП это про вычисления. А вот ООП это про структуру.
AA>Как ни крути, но если не считать меньшее кол-во инструментов(хотя развитие идет),в фарше все же кода на порядок меньше и он естественным образом фокусируется вокруг проблемы, AA>а не вокруг инфраструктуры кода.
Это иллюзия. На порядок — это сильно субъективно. Ты сравниваешь заведом плохой код на шарпе с хорошим кодом на фарше.
AA>2-м ключевым моментом является F# является то, что он заставляет все делать явно. AA>в C# больше вольностей. сначала это кажется хорошей идей, пока не выстрелишь себе в ногу. AA>вот здесь это хорошо видно: https://habr.com/ru/post/511534/
Наибольшее количество проблем в асихронщине это не код, а ошибки в решении конкретной задачи. То есть, если решение кривое, то как ни обкладывай его кодом, ничего хорошего не выйдет.
Здравствуйте, Ikemefula, Вы писали:
I>Проверяем твое высказываение — любое говно пусть будет "vbscript". В эпоху домнирования IE он вроде бы должен был взлететь, т.к. и монополист, и крупнейшая область и тд. I>И что? I>А ничего — слив. vbscript так и не взлетел, несмотря на все вливания, крики в течение 15 лет и принудительные попытки внедрить его повсюду.
Тут МС сам виноват, что IE и js поддерживал, а вот vbs кроме IE не поддерживал никто. Выкинули бы они его поддержку и жрали бы все сейчас vbscript как миленькие.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Тут МС сам виноват, что IE и js поддерживал, а вот vbs кроме IE не поддерживал никто. Выкинули бы они его поддержку и жрали бы все сейчас vbscript как миленькие.
Я вот смотрю на яблоко и гугл. Они у себя творят, что хотят, а МС постоянно антимонопольщики нагибали.
Тогда доля IE была выше 90%
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Ночной Смотрящий, Вы писали:
I>>Работы программистом даже для этих не хватало, что очевидно.
НС>Нет, не очевидно. Работы для них хватало, они не хотели работать. Потому что, работая программистом, ты получал бы гроши, при этом надо было активно работать мозгой. Намного проще и выгоднее тогда было торговать шмотьем на рынке или устроится секретуткой/компьютерщиком в жирную контору. А программировать шли те, у кого душа к тому лежала и мозги в правильную сторону былти заточены. НС>обязателен.
На самом деле программистов было довольно много, но было мало коммерческих проектов. И в коммерческие проекты первым делом уходили программисты с госконтор, а не абы какие геологи без инженерного образования.
То есть, всё как в старину — первые коммерческие проекты тупо снимали сливки. Более этого, это продолжалось где то до середины нулевых, пока не начался дикий рост ЗП.
Вот тогда пошел поток "вайти вайти"
Как бы ты ни выкручивался, а в 90х не было "вайти вайти" которые штамповали в разы больше чем университеты. А эти "вайти вайти" как то ухитряются трудоустроить своих выпускников.
НС>Нет. Я смотрю на свою компанию, на те компании в которых я работал до, на компании, в которые работают мои друзья.
>А в продуктовых компаниях ты работал?
Удивительно короткая память. Повторяю — не менее 10 лет чисто продуктовые проекты — коробки и кастомизация этих коробок под заказчика.
> А вот ты судишь исключительно по ЕПАМу, в лучшем случае по аутсорсинговым компаниям.
Все ровно наоборот. Епам это "один из".
Современный мир это распределенная разработка. Есть коробки, есть сервисы, есть заказной софт, есть обслуживание энтерпрайза.
Коробки могут быть разрабатываться распределенно, есть обслуживание энтерпрайза, где все ко-локейтед.
Есть специализированые проекты, есть универсальные.
А у тебя только одна дихотомия — честные продукты, и аутсорс который продаёт жопочасы джуна вместо сеньора и заказчик-дурак, который ничего проверить не в состоянии.
На самом деле 90..99% продуктов имеют огромные сложности с доходностью. А раз так, то именно они хватают и джунов, вместо сеньоров, и даже гуманитариев, абы хоть как то на плаву удержаться.
И именно эти продукты аутсорсят разработку в Индию и куда угодно.
Все просто — энтерпрайз задирает ЗП до небес, а 90% продуктов далеко не эльдорадо. Доходные только 10% и то, с натяжкой.
I>>Факт в том, что в 90х вакансий программиста не хаватало, что бы покрыть всех выпускников профильных специальностей.
НС>Они сам не шли. У меня из моей группы по специальности пошли работать 3 или 4 человека из двух десятков. И вовсе не потому что они не нашли себе работы программистами, они даже не пытались.
Смотря где. Отсюда ясно, что когда появились проекты с хорошим заработком, туда в первую очередь пошли инженеры.
I>> В госконторах за это много не платили НС>Т.е. дело не в вакансиях, а в том что за это мало платили.
Смотря какие вакансии — в коммерческих платили хорошо и гуманитариев туда не брали.
НС>В России это так.
Собеседования это не подтверждают Ваши ЗП не в твою пользу. надо полагать, тестировщики дураки, раз работают на низкую ЗП не пользуясь английским
I>> Тестировщики в норме часто общаются с заказчиком.
НС>Это если только у аутсорсеров.
Ога, у вас там сейлзы решают степень готовности продукта? Ужос!
>С заказчиками должны общаться сперва сейлзы, потом продакты. Общающийся с заказчиком тестировщих-джун — ацкий бред.
ОМГ! Заказчик есть всегда, вне зависимости от того, продукт, или нет. Просто один отдел заказывает разработку у другого. Назначается продукт-овнер и это и есть тот самый заказчик. Чьей конторе он принадлежит, вообще непринципиально.
Контора может спокойно вывести тестирование куда ей угодно, например — в свой офис в другой стране. Это ничем не отличается от "аутсорса"
Более того — 90% продуктов вынуждены аутсорсить и хватать геологов-гуманитариев, что бы компенсировать проблемы с доходностью.
>Я уж не говорю о том, что если контора делает коробки, то про каких вообще заказчиков речь?
Это говорит о твоём опыте. Например, коробки частенько адаптируется под энтерпрайзного заказчика. Но даже и без этого, если продукт разрабатывается в разных странах, один из департментов фактически является заказчиком и выставляет своего представителя.
I>>Если ваш рынок закуклился НС>Нет. Просто у нас рядовые тестировщики и программисты не беседуют с заказчиками.
И это сильно зря — упускают ценный опыт. Именно через общение с заказчиком люди понимают цели проекта и тд. В противном случае неизбежно будет "сломаный телефон"
НС>>>Нет, просто отличие продуктовой конторы от аутсорсера. Вам шашечки, нам ехать. I>>Это просто понты.
НС>Это факт.
Это похоже на конкретно твои обиды. Ты уж извини, но ты похож на воинствующего фанатика, которого высекла аутсорсная контора в начале нулевых да еще и посадила на низкую ЗП.
I>>Аутсорс — термин из 90х и 00х. Сейчас все гораздо сложнее, продуктовые аутсорсят, а аутсорсные выпускают свои продукты-сервисы.
НС>Что в лоб, что по лбу. То что у вас тестировщики беседуют с заказчикам много говорит о ваших процессах и приоритетах.
И снова твои болячки. Рядовые посещают основные митинги, в основном слушают и говорят, когда их спросят, могут задавать вопросы.
Тем самым набираются опыта.
При этом принимать решения не могут. И естетсвенно, они присутствуют не на всех митингах. Архитектурные, бюджеты, стаффинг и тд — они туда не ходят.
А вот родмап, фичи, статус — ходят все.
В этом случае старшие разработчики будут работать, а не пересказывать новости.
Парадокс, но всё это я тебе уже писал много раз, но ты уверенно "забываешь" Вещаешь себе из 90х и ничего не слышишь.
I>>Далее, у тебя "продукт-аутсорс" эквивалентна "хороший-плохой"
НС>Фирменный стиль — разговор с голосами в своей голове?
С твоих слов — типичный аутсорс только и делает, что обманывает заказчика, имеет плохие процессы, никудышнее качество решений
I>>, т.к. твой плач уже который год одинаковый — аутсорсы обманывают, косячат, и тд и тд.
НС>Я такого никогда не писал.
Какое жалкое отрицание:
"Вам шашечки, нам ехать. " — вот это утверждение ты уже отрицаешь. Смысл этой фразы про шашечки тебе самом ясен?
"жопочасы дяде за бугром, судя по всему, продавать получается, тем более что проверять никто не будет и можно джуна выдавать за сеньора"
Вот здесь ты пишь про обман аутсорсерами заказчика-дурака
Похоже, сейчас ты уже готов отрицать отрицание
>А то что написал ты — очень показательно. Показывает почему у тебя такие бурные эмоции каждый раз, когда я говорю что у аутсорса своя специфика и не надо натягивать ее на всю отрасль.
Это ведь с твоих слов в аутсорсе "можно джуна выдавать за сеньора". А я утверждаю, что это явление примерно одинаково по всей индустрии в силу отсутствия внятных требований к уровню квалификации.
Ты разницу то понять в состоянии?
I>>, а не какой то местной специфики. Тем не менее, тысяч 5 точно есть.
НС>Ну так проекты тянутся, люди наняты, есть проекты с заказчиками из России/компаний с большими офисами в России.
Кроме Епама в России работает много контор. Далеко не всё в России под санкциями.
Здравствуйте, Serginio1, Вы писали:
НС>>Тут МС сам виноват, что IE и js поддерживал, а вот vbs кроме IE не поддерживал никто. Выкинули бы они его поддержку и жрали бы все сейчас vbscript как миленькие. S>Я вот смотрю на яблоко и гугл. Они у себя творят, что хотят, а МС постоянно антимонопольщики нагибали. S>Тогда доля IE была выше 90%
У мекрософта была очень агрессивная политика — они сами шли на конфликты и планировали риски типа "хер с ними, будем судиться через 5 лет и заплатим миллиард, а сейчас заработаем 10"
Этим и объясняется обилие антимонопольных исков и исков вообще.
Здравствуйте, Ночной Смотрящий, Вы писали:
I>>Проверяем твое высказываение — любое говно пусть будет "vbscript". В эпоху домнирования IE он вроде бы должен был взлететь, т.к. и монополист, и крупнейшая область и тд. I>>И что? I>>А ничего — слив. vbscript так и не взлетел, несмотря на все вливания, крики в течение 15 лет и принудительные попытки внедрить его повсюду.
НС>Тут МС сам виноват, что IE и js поддерживал, а вот vbs кроме IE не поддерживал никто. Выкинули бы они его поддержку и жрали бы все сейчас vbscript как миленькие.
Дело не только в ИЕ — его вообще пытались насаждать буквально везде. "выкинули бы" — вот в это трудно поверить, и это невозможно проверить, то есть, это непроверяемая гипотеза Гипотетически, выбрось они жээс, хром бы появился раньше и быстрее сдул ИЕ. Или Нетшкап сдул бы IE еще до старта. Или так — Микрософт догоняла бы и лет через 10 вынуждена была бы вставить жээс
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, Serginio1, Вы писали:
НС>>>Тут МС сам виноват, что IE и js поддерживал, а вот vbs кроме IE не поддерживал никто. Выкинули бы они его поддержку и жрали бы все сейчас vbscript как миленькие. S>>Я вот смотрю на яблоко и гугл. Они у себя творят, что хотят, а МС постоянно антимонопольщики нагибали. S>>Тогда доля IE была выше 90%
I>У мекрософта была очень агрессивная политика — они сами шли на конфликты и планировали риски типа "хер с ними, будем судиться через 5 лет и заплатим миллиард, а сейчас заработаем 10"
I>Этим и объясняется обилие антимонопольных исков и исков вообще.
По сравнению с Яблоком и гуглом МС няшечки. Можешь на комп установить любое приложение не из магазина.
То, что работало даже по XP и сейчас работает под Win 10. Гугл с яблоком творят, что хотят и никто им не указ.
С каждой версией постоянно нужно что то править ибо старый код не работает.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, D. Mon, Вы писали:
DM>Perl мертв и живым никогда особо не был. Уж явно мертвее фарша.
Тем не менее в индексе TIOBE перл есть, а фшарпа — нету.
DM>Питон уже обсудили, он случайно выстрелил
DM> на волне интереса к ML спустя 25 лет от рождения.
Он и раньше был довольно популярен, популярнее фшарпа так точно.
DM>Скала мертва почти настолько же, насколько и F#.
А это вот просто ложь. Погугли вакансии, скалы там явно больше нуля, в отличие от фшарпа. Ну и в Котлин тоже совсем не миллиарды вложили.
DM>И главное: если один язык раскрутили за миллиард вложений, а второй набрал популярность сам, это вовсе не значит, что первый тоже смог бы стать популярным без тех вложений.
Кто знает. Я вот не могу вспомнить, чтобы язык с миллиардом сам по себе был совсем фиговый. Даже если отбросить принадлежность — джава, шарп, го сами по себе отличные языки.
DM> Отличные примеры: сотни языков без вложений, которые популярными не стали. DM>Отличным примером языка с вложениями, который все равно плохо летит, был бы Dart. Много ли еще примеров? Не особо.
А много вообще таких языков? Не особо.
I>>А еще — JavaScript.
DM>Вот это уже совсем смешно. Когда у тебя монополия в крупнейшей области (браузеры), там любое говно будет популярным. Так и случилось.
Здравствуйте, Ikemefula, Вы писали:
I>Гипотетически, выбрось они жээс, хром бы появился раньше и быстрее сдул ИЕ.
Ну ты как буд то МС тех времен не знаешь. Совсем его они бы не выбросили, просто поддерживали в режиме "пока жареный петух не клюнет", а заодно напихали бы пачку своих расширений.
Тут проблема не в этом, а в том что МС сделал ставку на ActiveX, и что js, что vbs их не интересовали.
Здравствуйте, Ikemefula, Вы писали:
I>На самом деле программистов было довольно много, но было мало коммерческих проектов.
Да не так уж и мало. Многие современные российские конторы начинали уже тогда — 1С, Abbyy, Яндекс, Парус, Аскон и т.п. Плюс было огромное количество мелких конторок, пишуших свои зарплаты, бухгалтерии. В каждом более менее крупном заводе или банке был свой отдел разработки с доморощенными продуктами. В том городе гдя я учился свой софт писали даже пивзавод и небольшая сеть аптек. Летом в год окончания ВУЗа мне рекрутеры телефон оборвали, при том что жил я в городе с населением чуть более 100К, а не в Москве. Работы для программистов было полно. Вот с оплатой сложнее, но тогда по любой специальности кроме бухгалтера и охранника с оплатой было сложно.
I>То есть, всё как в старину — первые коммерческие проекты тупо снимали сливки. Более этого, это продолжалось где то до середины нулевых, пока не начался дикий рост ЗП. I>Вот тогда пошел поток "вайти вайти"
Да нет в РФ вообще этой культуры вайти. Это ваша специфика. Здесь никогда IT сектор не был объектом притяжения огромных масс необразованного населения.
>>А в продуктовых компаниях ты работал? I>Удивительно короткая память. Повторяю — не менее 10 лет чисто продуктовые проекты — коробки и кастомизация этих коробок под заказчика.
Это у тебя короткая память. Аутсорсер это аутсорсер, и не надо сюда нести чушь, которой ваши хрюши заманивают гребцов. Я дядя взрослый и этот булшит у меня на ушах не задерживается.
I>Коробки могут быть разрабатываться распределенно, есть обслуживание энтерпрайза, где все ко-локейтед. I>Есть специализированые проекты, есть универсальные.
Дело не в этом, а в том кому принадлежит продукт. От этого, знаешь ли, зависят приоритеты владельцев конторы.
НС>>Они сам не шли. У меня из моей группы по специальности пошли работать 3 или 4 человека из двух десятков. И вовсе не потому что они не нашли себе работы программистами, они даже не пытались. I>Смотря где.
О, смотря где. Прогресс.
НС>>Т.е. дело не в вакансиях, а в том что за это мало платили. I>Смотря какие вакансии — в коммерческих платили хорошо и гуманитариев туда не брали.
Теоретизируешь? Именно в коммерческие и брали. Как раз в госконторы в РФ без образования не брали.
НС>>В России это так. I>Собеседования это не подтверждают
Собеседования в ЕПАМ?
I> Ваши ЗП не в твою пользу. надо полагать, тестировщики дураки, раз работают на низкую ЗП не пользуясь английским
В российском ЕПАМ зарплаты больше чем у других? Рили?
I>>> Тестировщики в норме часто общаются с заказчиком. НС>>Это если только у аутсорсеров. I>Ога, у вас там сейлзы решают степень готовности продукта? Ужос!
Вот опять твой bias. Степень готовности продукта решают те кто продуктом владеет. У аутсорсера, понятно, надо идти к заказчику. А вот у продуктовой конторы решает сама контора и люди внутри нее.
>>С заказчиками должны общаться сперва сейлзы, потом продакты. Общающийся с заказчиком тестировщих-джун — ацкий бред. I>ОМГ! Заказчик есть всегда, вне зависимости от того, продукт, или нет. Просто один отдел заказывает разработку у другого.
И тут тебе надо вспомнить про то что речь про требование английского.
I>Это похоже на конкретно твои обиды.
Нет, это похоже на очередные твои беседы с голосами в голове.
Здравствуйте, Ikemefula, Вы писали:
I>Extension функции в C# это реализация именно этой концепции.
Это сахар не особо полезный. Внутрь класса он не позволяет залезть, так что как ни крути а внутренее состояние больше мешает.
Вот в F# записи именно такие — никакого скрытого состояния, по честному так сказать.
I>>Этим и объясняется обилие антимонопольных исков и исков вообще. S> По сравнению с Яблоком и гуглом МС няшечки. Можешь на комп установить любое приложение не из магазина.
Это палка о двух концах. В 90х и 00х это было круто. А вот сейчас это уже тупик.
S>То, что работало даже по XP и сейчас работает под Win 10. Гугл с яблоком творят, что хотят и никто им не указ. S>С каждой версией постоянно нужно что то править ибо старый код не работает.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Тем не менее в индексе TIOBE перл есть, а фшарпа — нету.
индекс популярности языковых запросов показывает сложность ЯП а не популярность в с смысле крутости.
в F# настолько все логично и просто насколько возможно, я уже приводил пример с асинхронностью. в C# все можно сделать правильно и неправильно,
выражения F# форсят все делать правильно. там даже отладка не нужна(сказывают)))
Здравствуйте, varenikAA, Вы писали:
AA>Это сахар не особо полезный.
Это очень полезный сахар.
AA>Внутрь класса он не позволяет залезть
И в этом его прелесть.
AA>Вот в F# записи именно такие — никакого скрытого состояния, по честному так сказать.
В результате фшарп более ограничен и менее удобен на практике. Шарпом пользуются, и фшарп никому не нужен, кроме любителей поиграться в чистоту концепций.
Здравствуйте, Ikemefula, Вы писали:
S>>То, что работало даже по XP и сейчас работает под Win 10. Гугл с яблоком творят, что хотят и никто им не указ. S>>С каждой версией постоянно нужно что то править ибо старый код не работает.
I>Не боись, в мс это тоже понемногу заканчивается
Не совсем. .Net Framework не ломается. .Net Core это уже другой продукт и код нужно аккуратно переносить.
А в том же андроиде результат метода зависит от версии. Приходится смотреть, что это за версия и вызывать другой метод.
Трудно совместимость сделать?
И посмотришь код там куча сравнений версий. А новая версия каждый год.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Ночной Смотрящий, Вы писали:
I>>То есть, всё как в старину — первые коммерческие проекты тупо снимали сливки. Более этого, это продолжалось где то до середины нулевых, пока не начался дикий рост ЗП. I>>Вот тогда пошел поток "вайти вайти"
НС>Да нет в РФ вообще этой культуры вайти. Это ваша специфика. Здесь никогда IT сектор не был объектом притяжения огромных масс необразованного населения.
А теперь смотрим вместе в гугле "курсы программирования москва" и обнаруживаем... "вайти вайти" в еще большем масштабе, больше, чем во всей Беларуси вместе взятой
Сейчас ты снова отрицать отрицание начнешь? Смотрю, ты в ударе
I>>Удивительно короткая память. Повторяю — не менее 10 лет чисто продуктовые проекты — коробки и кастомизация этих коробок под заказчика.
НС>Это у тебя короткая память. Аутсорсер это аутсорсер, и не надо сюда нести чушь, которой ваши хрюши заманивают гребцов. Я дядя взрослый и этот булшит у меня на ушах не задерживается.
Еще раз — "не менее 10 лет чисто продуктовые проекты". Международная продуктовая контора, всё как у тебя. И при этом у меня — аутсорс, а у тебя нет?
Похоже, во всем мире только одна продуктовая — та где ты работаешь.
Похоже, ты уже в третий раз будешь отрицать отрицание
И кстати, ты не объяснил, каким образом 90% продуктовых решают проблемы с доходностью. джун-геолог-гуманитарий вместо сеньора Чудом, не иначе.
I>>Есть специализированые проекты, есть универсальные.
НС>Дело не в этом, а в том кому принадлежит продукт. От этого, знаешь ли, зависят приоритеты владельцев конторы.
Кому принадлежит продукт в международной продуктовой конторе? И какой магией владелец контролирует офисы в других странах-городах?
I>>Смотря какие вакансии — в коммерческих платили хорошо и гуманитариев туда не брали.
НС>Теоретизируешь? Именно в коммерческие и брали. Как раз в госконторы в РФ без образования не брали.
То есть, три четверти потока шли абы куда, но только не на высокие ЗП?
НС>>>В России это так. I>>Собеседования это не подтверждают
НС>Собеседования в ЕПАМ?
В ЕПАМ у меня знакомые. Большинство знакомых как раз вне этого епама, что вобщем очевидно. Большую часть сведений я получил на собеседованиях, коих было, мягко говоря, дохрена и в разных странах.
I>> Ваши ЗП не в твою пользу. надо полагать, тестировщики дураки, раз работают на низкую ЗП не пользуясь английским
НС>В российском ЕПАМ зарплаты больше чем у других? Рили?
Я пишу про английский, а ты читаешь это как Епам ЗП подтягиваются в соответствии со спросом. Даже если ваш внутренний рынок большой, он все равно будет двигаться в сторону мирового, поскольку среди тестировщиков дураков нет получать маленькую ЗП. Т.е. ради ЗП побольше никто не побрезгует английским. А раз так, то и другие работодатели будут уравнивать ЗП, вне зависимости, на каком языке они говорят — русском, английском, немецком и матерном.
I>>Ога, у вас там сейлзы решают степень готовности продукта? Ужос!
НС>Вот опять твой bias. Степень готовности продукта решают те кто продуктом владеет.
Представляю — садится продакт и сам нажимает на кнопки и так месяц кряду. Или все же делегирует тестировщикам? У вас первое или второе?
>У аутсорсера, понятно, надо идти к заказчику. А вот у продуктовой конторы решает сама контора и люди внутри нее.
И снова голос из 90х. Нету того аутсорса, про который ты говоришь. И продуктовые и непродуктовые делают это одинаково. Уже давно конторы делятся по другим признакам.
Готовность продукта определяет продукт-овнер при помощи подразделения QA. Всегда и везде, независимо от продуктовости конторы. Где ты его разместишь — дело десятое. Не доверяешь — дублируй ближе к менедменту. Только какой смысл работать с теми, кому не доверяешь?
Проблема с доверием может возникнуть и в продуктовых конторах, которые расположены в одном офисе и даже в одной комнате. А может успешно решаться в распределенной разработке.
I>>ОМГ! Заказчик есть всегда, вне зависимости от того, продукт, или нет. Просто один отдел заказывает разработку у другого. НС>И тут тебе надо вспомнить про то что речь про требование английского.
А в международной компании на каком языке говорят? Ну, как по твоему?
Здравствуйте, Ночной Смотрящий, Вы писали: НС>В результате фшарп более ограничен и менее удобен на практике. Шарпом пользуются, и фшарп никому не нужен, кроме любителей поиграться в чистоту концепций.
О вкусах не спорят. В фарше есть ООП полноценное, а вот в шарпе нет полноценного ФП.
Мне бы вашу уверенность.
Скрытый текст
open System
open System.IO
open Microsoft.AspNetCore.Builder
open Microsoft.AspNetCore.Cors.Infrastructure
open Microsoft.AspNetCore.Hosting
open Microsoft.Extensions.Hosting
open Microsoft.Extensions.Logging
open Microsoft.Extensions.DependencyInjection
open Giraffe
// ---------------------------------
// Models
// ---------------------------------
type Person =
{ Name: string
Age: int }
member it.AsString() = $"{it.Name} {it.Age}"module Person =
let create name age = {
Name = name
Age = age
}
// ---------------------------------
// Views
// ---------------------------------
module Views =
open Giraffe.ViewEngine
let layout (content: XmlNode list) =
html [] [
head [] [
title [] [ encodedText "g1" ]
link [ _rel "stylesheet"
_type "text/css"
_href "/main.css" ]
]
body [] content
]
let partial () = h1 [] [ encodedText "g1" ]
let index (model: Person) =
[ partial ()
p [] [ model.AsString() |> encodedText ] ]
|> layout
// ---------------------------------
// Web app
// ---------------------------------
let indexHandler (name: string, age : int) =
let model = Person.create name age
let view = Views.index model
htmlView view
let webApp =
choose [ GET
>=> choose [ route "/" >=> indexHandler ("World", 42)
routef "/hello/%s/%i" indexHandler ]
setStatusCode 404 >=> text "Not Found" ]
// ---------------------------------
// Error handler
// ---------------------------------
let errorHandler (ex: Exception) (logger: ILogger) =
logger.LogError(ex, "An unhandled exception has occurred while executing the request.")
clearResponse
>=> setStatusCode 500
>=> text ex.Message
// ---------------------------------
// Config and Main
// ---------------------------------
let configureCors (builder: CorsPolicyBuilder) =
builder
.WithOrigins("http://localhost:5000", "https://localhost:5001")
.AllowAnyMethod()
.AllowAnyHeader()
|> ignore
let configureApp (app: IApplicationBuilder) =
let env =
app.ApplicationServices.GetService<IWebHostEnvironment>()
(match env.IsDevelopment() with
| true -> app.UseDeveloperExceptionPage()
| false ->
app
.UseGiraffeErrorHandler(errorHandler)
.UseHttpsRedirection())
.UseCors(configureCors)
.UseStaticFiles()
.UseGiraffe(webApp)
let configureServices (services: IServiceCollection) =
services.AddCors() |> ignore
services.AddGiraffe() |> ignore
let configureLogging (builder: ILoggingBuilder) =
builder.AddConsole().AddDebug() |> ignore
[<EntryPoint>]
let main args =
let contentRoot = Directory.GetCurrentDirectory()
let webRoot = Path.Combine(contentRoot, "WebRoot")
Host
.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(fun webHostBuilder ->
webHostBuilder
.UseContentRoot(contentRoot)
.UseWebRoot(webRoot)
.Configure(Action<IApplicationBuilder> configureApp)
.ConfigureServices(configureServices)
.ConfigureLogging(configureLogging)
|> ignore)
.Build()
.Run()
0
НС>В результате фшарп более ограничен и менее удобен на практике.
Неудобно? реализация интерфейса по месту:
// create a new object that implements IDisposable
let makeResource name =
{ new System.IDisposable
with member this.Dispose() = printfn "%s disposed" name }
Здравствуйте, varenikAA, Вы писали:
I>>Extension функции в C# это реализация именно этой концепции.
AA>Это сахар не особо полезный.
Герберта Саттера ты не читал или читал, но не понял.
>Внутрь класса он не позволяет залезть, так что как ни крути а внутренее состояние больше мешает.
В том то и дело, что внутри класса должно быть только то, что минимально необходимо для реализации самого простого набора операций, поддежки инвариантов. Ну, может, оптимизаций каких.
Все. Больше ничего быть не должно. Ничего. Еще раз — ничего. И снова — ничего.
Все, что реализуемо через паблик интерфейс, должно быть вне класса.
Вот это современное ООП. А то, о чем ты пишешь, это ООП 70х. И то, уже тогда на твою идею смотрели с сомнением. Например — Алан Кей, он точно смотрел бы на тебя с подозрением
Далее, если понадобилась новая операция, через паблик не реализуемая. Не надо добавлять в интерфейс всё целиком. Добавляешь нечто минимальное, крохотное. И вся операция снова окажется снаружи.
Это же элементарно — ну не надобавляет никто в Double "площадь треугольника методом Герона". И в треугольник никто не добавляет такую операцию. И в массив векторов тоже никто такую операцию не добавляет.
Её добавляют в неймспейс Geometry, в виде свободной функции c соответствующим именем. Потому, что a, b и c это стороны, а далеко не факт ,что треугольник у тебя определяется именно сторонами. Может быть просто точка и два вектора. А может быть тебе надо найти площадь между какими то фигурами и нет никакого смысла создавать промежуточный треугольник.
Вру, конечно про "в треугольник никто не добавляет такую операцию". ДОбавляют. Такие как ты, а потом орут, что ООП их подвело
AA>Вот в F# записи именно такие — никакого скрытого состояния, по честному так сказать.
И это отстой Вот завел ты рекорд типа "секунды-милисекунды-микросекунды-наносекунды" шоб быстрее да попроще, а через года-два-десять понадобились хитрые упражнения.
Все твои внешние функции, а других у тебя нет, используют эти поля напрямую, каждая по своему. То есть, все твой код замёрз. Сначала протух, а потом замёрз. Разморозишь — начнет смердеть.
Например, новые упражнения для конверсии в другие типы данных ломают стройную картинку.
Как это решается в ООП — делаешь старые поля вычисляемыми, а механику переводишь на секунды-наносекунды. Вуаля — работают и старые, и новые.
А вот как это чудо с рекордами повторить — а никак, только бегать с воплями по офисам и напоминать "эй, ребатя, функции где есть вот такой паттерн вызовов других функций, их больше не используйти!!!!!1111"
I>Вру, конечно про "в треугольник никто не добавляет такую операцию". ДОбавляют. Такие как ты, а потом орут, что ООП их подвело
Я про ООП ничего не говорил плохого, внимательней читайте. речь об ограниченности отдельных яп (ts, c#) перед другими (f#, common lisp).
I>А вот как это чудо с рекордами повторить — а никак, только бегать с воплями по офисам и напоминать "эй, ребатя, функции где есть вот такой паттерн вызовов других функций, их больше не используйти!!!!!1111"
Что за бред?
Здравствуйте, varenikAA, Вы писали:
I>>Вру, конечно про "в треугольник никто не добавляет такую операцию". ДОбавляют. Такие как ты, а потом орут, что ООП их подвело AA>Я про ООП ничего не говорил плохого, внимательней читайте. речь об ограниченности отдельных яп (ts, c#) перед другими (f#, common lisp).
То есть, это не ты писал вот это
">Внутрь класса он не позволяет залезть, так что как ни крути а внутренее состояние больше мешает."
Кто тогда с твоего аккаунта написал эту ахинею? Внутреннее состояние мешает в том случае, если у тебя есть нарушение инкапсуляции.
Это происходит в двух случаях
1. когда ты открыл всё для всех, т.е. случай record
2. когда ты добавляешь сразу в основной класс все подряд, не глядя, например в треугольник добавляешь опреацию "площадь методом герона"
Типа — метод работает только с А, значит добавим его сразу в А. И это и есть фиаско.
Случай 2 описал Герберт Саттер. Ссылку я дал. Осилить не можешь, да?
I>>А вот как это чудо с рекордами повторить — а никак, только бегать с воплями по офисам и напоминать "эй, ребатя, функции где есть вот такой паттерн вызовов других функций, их больше не используйти!!!!!1111" AA>Что за бред?
Элементрано — record это в чистом виде нарушение инкапсуляции, что я тебе и продемонстрировал. И это так вне зависимости от ЯП.
Здравствуйте, Ikemefula, Вы писали:
DM>>И главное: если один язык раскрутили за миллиард вложений, а второй набрал популярность сам, это вовсе не значит, что первый тоже смог бы стать популярным без тех вложений. Отличные примеры: сотни языков без вложений, которые популярными не стали.
I>Снова конспирология.
Вот у тебя заело. Давай я на каждое твое "конспирология" буду отвечать "идиотизм". Не видно, чтобы ты знал смысл слова "конспирология". Ни о каких заговорах ведь речи нет, скорее тут социология, банальная экономика и набор случайностей.
DM>>Отличным примером языка с вложениями, который все равно плохо летит, был бы Dart. Много ли еще примеров? Не особо.
I>То есть, ты нам сам же рассказал, что I>1. бренд и вложения не гарантируют успех I>2. выстреливают и уродцы которых клепали полторы калеки
Да. Не гарантируют. Но вероятность успеха повышают с 1/100 до 1/2 где-то. Смотри статистику.
I>При этом ты продолжаешь утверждать, что причной всему бабло и бренд
Нет. Я говорю про множество случайных факторов.
DM>>Вот это уже совсем смешно. Когда у тебя монополия в крупнейшей области (браузеры), там любое говно будет популярным. Так и случилось.
I>Ты сам себя опроверг. Джаваскрипт появился в Нетшкафе. Когда у него была монополия?
Причем тут нетскейп? Я говорю про монополию языка в его нише последние 25 лет по сути. Дико популярным он стал тоже не сразу, уже в нулевых.
I>Проверяем твое высказываение — любое говно пусть будет "vbscript". В эпоху домнирования IE он вроде бы должен был взлететь, т.к. и монополист, и крупнейшая область и тд.
Он работал во всех браузерах? Не было там никакой монополии и распространенности.
I>>> Кто его только ни пытался вытеснить из браузера — vbscript, python, rexx, С++, C#, Java, ActionScript и прочие товарищи. А потом вышло так, что js не просто вытеснил, а убрал даже ActivX, апплеты, Silverlight, flash и прочую ересь.
DM>>Когда одно говно уже есть везде из коробки, а второе надо отдельно ставить и работает далеко не везде, тут выбор получается простой. Нет ни одного другого языка, работающего сразу во всех браузерах. А раз нету, то о чем тогда говорить.
I>Поначалу и жээс не работал сразу и во всех браузерах. Более того — он работал плохо и по разному даже в тех некоторых браузерах. Настолько плохо, что его вообще всерьёз не рассматривали. I>Именно потому в браузер, внимание, добавили и Питон!, и REXX, и много чего еще. Всё это работало чисто и гладко в отличие от жээса. Однако же — упс, крутые языки не взлетели.
Это в каком браузере питон был встроен? И в каком не было JS? Какие-то удивительные вещи говоришь.
I>И что мы видим — классность, крутость языка и языковых фич сильно переоценены.
Да. Я тоже считаю, что на популярности языка они мало сказываются. А сказываются совсем другие факторы. Поэтому и не стоит ругать F# за непопулярность.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Тем не менее в индексе TIOBE перл есть, а фшарпа — нету.
В этом чудесном индексе Visual Basic выше JS, а вся такая живая Скала и великий TypeScript ниже D и Пролога.
Как пишущему на D мне это льстит, конечно, но с серьезным лицом на такой рейтинг смотреть сложно.
НС>Кто знает. Я вот не могу вспомнить, чтобы язык с миллиардом сам по себе был совсем фиговый. Даже если отбросить принадлежность — джава, шарп, го сами по себе отличные языки.
Кому и кобыла невеста. Шарп ладно, но джава и го...
DM>> Отличные примеры: сотни языков без вложений, которые популярными не стали. DM>>Отличным примером языка с вложениями, который все равно плохо летит, был бы Dart. Много ли еще примеров? Не особо.
НС>А много вообще таких языков? Не особо.
Именно! Корреляция вложения-успех в результате довольно хорошая.
I>>>А еще — JavaScript. DM>>Вот это уже совсем смешно. Когда у тебя монополия в крупнейшей области (браузеры), там любое говно будет популярным. Так и случилось. НС>Не было никакой монополии у нетшкафа, это не IE.
Здравствуйте, D. Mon, Вы писали:
DM>В этом чудесном индексе Visual Basic выше JS, а вся такая живая Скала и великий TypeScript ниже D и Пролога. DM>Как пишущему на D мне это льстит, конечно, но с серьезным лицом на такой рейтинг смотреть сложно.
Тем не менее фшарпа там нет совсем.
НС>>Кто знает. Я вот не могу вспомнить, чтобы язык с миллиардом сам по себе был совсем фиговый. Даже если отбросить принадлежность — джава, шарп, го сами по себе отличные языки. DM>Кому и кобыла невеста. Шарп ладно, но джава и го...
Вот эта фраза отлично отражает разницу подходов. Ты с вареником явно больше с эстетической точки зрения рассматриваете, а я больше с практической. С практической точки зрения джава и го — хорошие языки, годные. А вам оно — кобыла.
DM>>> Отличные примеры: сотни языков без вложений, которые популярными не стали. DM>>>Отличным примером языка с вложениями, который все равно плохо летит, был бы Dart. Много ли еще примеров? Не особо. НС>>А много вообще таких языков? Не особо. DM>Именно!
Что именно?
DM> Корреляция вложения-успех в результате довольно хорошая.
Здравствуйте, varenikAA, Вы писали:
AA>О вкусах не спорят.
Ты первый начал об этом спорить. Я тебе сразу сказал что это вкусовщина и религия, но ты продолжил.
AA>В фарше есть ООП полноценное, а вот в шарпе нет полноценного ФП.
И что? Я уж не говорю о том что сперва неплохо бы дать определение полноценному ФП.
К чему ты эту простыню кода привел? Если не учитывать скобочки — код на шарпе будет примерно таким же.
Здравствуйте, varenikAA, Вы писали:
НС>>В результате фшарп более ограничен и менее удобен на практике. AA>Неудобно?
Неудобно. Тебе уже говорили, что есть алгоритмы, которые с мутабельным стейтом намного проще и быстрее получаются. В шарпе я могу это использовать, в ФП — нет. Есть легаси-код и сторонние библиоетки, с которыми у фшарпа иногда бывает боль, а в C# проблем нет. Я понимаю, любителям чистоты концепций до этого дела нет, но когда речь о практическом инструменте это имеет значение.
AA> реализация интерфейса по месту:
Здравствуйте, varenikAA, Вы писали:
I>>Вру, конечно про "в треугольник никто не добавляет такую операцию". ДОбавляют. Такие как ты, а потом орут, что ООП их подвело AA>Я про ООП ничего не говорил плохого, внимательней читайте
Мы то внимательно читаем
AA>Это понятно, но я видел как падавана вводил вступор бойлерплейт на сишапре.
НС>Какой именно бойлерплейт? Ты точно уверен что проблема была именно в языке?
AA>Я имел ввиду излишнее увлечение наследованием в ООП
НС>И при чем тут язык?
AA>В основе каждого ЯП лежит та или иная концепция. В C#или java например ООП, все что делаем должно пренадлежать классу.
А вот ты, похоже, решил уж совсем откровенно помухлевать.
I>>А вот как это чудо с рекордами повторить — а никак, только бегать с воплями по офисам и напоминать "эй, ребатя, функции где есть вот такой паттерн вызовов других функций, их больше не используйти!!!!!1111" AA>Что за бред?
Инкапсуляция таки нужна. И то что вместо объектов ты ее сделаешь в виде замыканий сути не поменяет.
Здравствуйте, varenikAA, Вы писали:
AA>Неудобно? реализация интерфейса по месту: AA>
AA>// create a new object that implements IDisposable
AA>let makeResource name =
AA> { new System.IDisposable
AA> with member this.Dispose() = printfn "%s disposed" name }
AA>
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Что именно? DM>> Корреляция вложения-успех в результате довольно хорошая. НС>Не увидел никакой корреляции пока.
Грубо говоря:
Языков с большими вложениями корпораций: 10, успешных из них: 7.
Языков без таких вложений: 150, успешных: 12.
Данные простые. Дальше кто-то может делать выводы, а кто-то будет писать "конспирология".
Здравствуйте, D. Mon, Вы писали:
DM>Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>Тем не менее в индексе TIOBE перл есть, а фшарпа — нету.
DM>В этом чудесном индексе Visual Basic выше JS, а вся такая живая Скала и великий TypeScript ниже D и Пролога. DM>Как пишущему на D мне это льстит, конечно, но с серьезным лицом на такой рейтинг смотреть сложно.
В F# тип makeResource был выведен автоматически на основе возвращаемого значения.
Это позволяет делать алгоритмы более обобщенными. https://youtu.be/K2d3Efgpos8
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, varenikAA, Вы писали:
I>>>Вру, конечно про "в треугольник никто не добавляет такую операцию". ДОбавляют. Такие как ты, а потом орут, что ООП их подвело AA>>Я про ООП ничего не говорил плохого, внимательней читайте НС>Мы то внимательно читаем НС>
AA>>Это понятно, но я видел как падавана вводил вступор бойлерплейт на сишапре.
НС>>Какой именно бойлерплейт? Ты точно уверен что проблема была именно в языке?
AA>>Я имел ввиду излишнее увлечение наследованием в ООП
НС>>И при чем тут язык?
AA>>В основе каждого ЯП лежит та или иная концепция. В C#или java например ООП, все что делаем должно пренадлежать классу.
НС>А вот ты, похоже, решил уж совсем откровенно помухлевать.
В чем? я просто сказал, что в ООП много инфраструктурного кода, который мешает понимаю сути задачи. и что композиция всегда лучше воспринимается чем наследование.
I>Кроме того, в шарпе и особенно в джаве давно уже, лет 10 или больше, активно заимствуются полезные вещи, которые функционалисты почему то считают своими собственными.
Похоже на парадоск БЛАБЛА, джава наше всё!
Теже алгебраические типы, когда они появятся в C#|java? реализовать их на ООП это тихий ужас.
AA>В F# тип makeResource был выведен автоматически на основе возвращаемого значения.
А какой там будет выведен тип у name?
AA>Это позволяет делать алгоритмы более обобщенными. https://youtu.be/K2d3Efgpos8
А конкретно? Я не хочу часовое видео смотреть.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
·>А какой там будет выведен тип у name?
любой подходящий, если используется printfn "%s" name, %s — это строка.
в 6 версии будут еще вариантные аргументы как в ts. тогда вообще C# никогда не догонит по выразительности.
AA>>Это позволяет делать алгоритмы более обобщенными. https://youtu.be/K2d3Efgpos8 ·>А конкретно? Я не хочу часовое видео смотреть.
Чел описал логику игры конвея не указав не единого типа, т.е. полностью обобщенный и без указания размера поля и кол-ва измерений.
Т.е. он может работь и с 2 и 3 мерными ячейками.
В императивном стиле такое сложно придумать, а тут оно получилось можно сказать автоматом.
Нужно лишь правильно выбирать инструменты.
Если привык забивать гвозди сапогом это не значит что это лучшее решение, не так ли?
Здравствуйте, varenikAA, Вы писали:
НС>>Не нужна. AA>Ну да,
Ну да
AA> есть же решарпер.
При чем тут решарпер? Там где реализация мелкая — нужно использовать лямбду. А там где не мелкая — не надо делать ее по месту. Эта какашка была востребована в джаве потому что там лямбд не было и вместо лямбд использовали мелкие интерфейсы.
Здравствуйте, varenikAA, Вы писали:
AA>·>А какой там будет выведен тип у name? AA>любой подходящий, если используется printfn "%s" name, %s — это строка.
Object что-ли?
AA>>>Это позволяет делать алгоритмы более обобщенными. https://youtu.be/K2d3Efgpos8 AA>·>А конкретно? Я не хочу часовое видео смотреть. AA>Чел описал логику игры конвея не указав не единого типа, т.е. полностью обобщенный и без указания размера поля и кол-ва измерений.
Это может и нормально для кода, который занимает пол экрана, но для более менее хитрых проектов без типов плохо. Писать обобщённые функциональные всемогутеры это удел молодых.
AA>Т.е. он может работь и с 2 и 3 мерными ячейками. AA>В императивном стиле такое сложно придумать, а тут оно получилось можно сказать автоматом. AA>Нужно лишь правильно выбирать инструменты. AA>Если привык забивать гвозди сапогом это не значит что это лучшее решение, не так ли?
Гвозди можно забивать чем угодно, лишь бы сломать не жалко было. А вот когда нужно работу работать, то нуегонах.
Вроде давно уж нашли баланс — ООП на глобальном уровне и ФП локально, внутри реализации методов.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, varenikAA, Вы писали:
AA>Чел описал логику игры конвея не указав не единого типа, т.е. полностью обобщенный и без указания размера поля и кол-ва измерений. AA>Т.е. он может работь и с 2 и 3 мерными ячейками.
О да, фирменный стиль адептов ФП — приводить в качестве доказательства крутости абсолютно бесполезный в практическом плане код.
AA>Нужно лишь правильно выбирать инструменты.
О да. Если вам нужно решить задачи бизнеса — берете шарп. А если стоя в ластах и в гамаке — тут нужн фшарп.
AA>Если привык забивать гвозди сапогом это не значит что это лучшее решение, не так ли?
А если имея молоток все вокруг воспринимать гвоздями — это лучшее что ли?
Здравствуйте, varenikAA, Вы писали:
I>>Кроме того, в шарпе и особенно в джаве давно уже, лет 10 или больше, активно заимствуются полезные вещи, которые функционалисты почему то считают своими собственными.
AA>Похоже на парадоск БЛАБЛА, джава наше всё!
Здравствуйте, varenikAA, Вы писали:
I>>Элементрано — record это в чистом виде нарушение инкапсуляции, что я тебе и продемонстрировал. И это так вне зависимости от ЯП.
AA>Вот это поворот! Кто-то только что доказывал, что все делается на расширениях. AA>а тут на тебе!
Читаем вместе:
"внутри класса должно быть только то, что минимально необходимо для реализации самого простого набора операций, поддежки инвариантов. Ну, может, оптимизаций каких."
Так ты внимательно прочитай, что это. Это не замена классов, как ты предполагаешь, а инструмент для создания простых типов. Кто за инвариантом следить будет? Опаньки!
Здравствуйте, varenikAA, Вы писали:
AA>В чем? я просто сказал, что в ООП много инфраструктурного кода, который мешает понимаю сути задачи.
Что ты называешь инфраструктурным кодом?
>и что композиция всегда лучше воспринимается чем наследование.
Тут надо вспомнить, что и композиция, и наследование, и много чего другого относится к ООП. А у тебя, похоже, только второе.
Такие вещи, как public, import, export, module, package, namespace относятся к модульному программированию, которое, внимание, часть ООП.
Как только тебе придумалась композиция, агрегирование, делегирование — это ООП. Интерфейс — снова ООП. Поведение, взаимодействие — снова ООП.
А вот к функциональному относится не так уж и много — замыкание да функция. А вот такие вещи, как монады находятся на самом деле гораздо ближе к ООП, нежели к ФП. Ко-монады — это вообще переизобретение ООП в чистом виде
Здравствуйте, D. Mon, Вы писали:
DM>>>И главное: если один язык раскрутили за миллиард вложений, а второй набрал популярность сам, это вовсе не значит, что первый тоже смог бы стать популярным без тех вложений. Отличные примеры: сотни языков без вложений, которые популярными не стали.
I>>Снова конспирология.
DM>Вот у тебя заело. Давай я на каждое твое "конспирология" буду отвечать "идиотизм". Не видно, чтобы ты знал смысл слова "конспирология". Ни о каких заговорах ведь речи нет, скорее тут социология, банальная экономика и набор случайностей.
Ты выдаёшь непроверяемые утверждения. У тебя всё или всё само, или всё случайно, или великие и могучие силы. Это и есть конспирология.
I>>То есть, ты нам сам же рассказал, что I>>1. бренд и вложения не гарантируют успех I>>2. выстреливают и уродцы которых клепали полторы калеки
DM>Да. Не гарантируют. Но вероятность успеха повышают с 1/100 до 1/2 где-то. Смотри статистику.
Ты забыл ссылку на статистику
I>>При этом ты продолжаешь утверждать, что причной всему бабло и бренд DM>Нет. Я говорю про множество случайных факторов.
То есть — непроверяемое утверждение.
I>>Ты сам себя опроверг. Джаваскрипт появился в Нетшкафе. Когда у него была монополия?
DM>Причем тут нетскейп? Я говорю про монополию языка в его нише последние 25 лет по сути. Дико популярным он стал тоже не сразу, уже в нулевых.
Если ты говоришь про 25 лет и про монополю, то Нетшкаф точно при чем. Надо бы тебе историю подучить
Монополия у него появилась далеко не сразу — был плавненький рост популярности вместе с ростом возможностей.
У него во все времена была куча конкурентов, как языков, так и технологий.
I>>Проверяем твое высказываение — любое говно пусть будет "vbscript". В эпоху домнирования IE он вроде бы должен был взлететь, т.к. и монополист, и крупнейшая область и тд.
DM>Он работал во всех браузерах? Не было там никакой монополии и распространенности.
А ты, в курсе, да!
vbscript работал в браузере >90% пользователей
был языком скриптования в самой винде — WMI
во многих приложениях благодаря WSH
во многих приложениях благодаря 3rd-party версиям
на нем можно было струячить бакенд — ASP
на нем можно было скриптовать IIS
можно было струячить эмбеддед код — WinCE
И даже писать десктоп приложения — HTML Applications
И что? А ничего.
I>>Именно потому в браузер, внимание, добавили и Питон!, и REXX, и много чего еще. Всё это работало чисто и гладко в отличие от жээса. Однако же — упс, крутые языки не взлетели.
DM>Это в каком браузере питон был встроен? И в каком не было JS? Какие-то удивительные вещи говоришь.
Это уже извини, я не помню. Больше 20 лет прошло. Где то тогда я начинал колупать этот Питон.
DM>Да. Я тоже считаю, что на популярности языка они мало сказываются. А сказываются совсем другие факторы. Поэтому и не стоит ругать F# за непопулярность.
Его никто за это не ругает — я предлагаю просто принять как факт отсутствие популярности и мизерную нишу.
Здравствуйте, Ikemefula, Вы писали:
DM>>Да. Не гарантируют. Но вероятность успеха повышают с 1/100 до 1/2 где-то. Смотри статистику. I>Ты забыл ссылку на статистику
А у меня и нет ссылки. Это задание творческое, предполагает самостоятельный поиск.
I>>>Ты сам себя опроверг. Джаваскрипт появился в Нетшкафе. Когда у него была монополия? DM>>Причем тут нетскейп? Я говорю про монополию языка в его нише последние 25 лет по сути. Дико популярным он стал тоже не сразу, уже в нулевых. I>Если ты говоришь про 25 лет и про монополю, то Нетшкаф точно при чем. Надо бы тебе историю подучить
25 лет назад уже были IE и Opera, если что. И чем был по сути JScript в IE?
I>Монополия у него появилась далеко не сразу — был плавненький рост популярности вместе с ростом возможностей. I>У него во все времена была куча конкурентов, как языков, так и технологий.
Можно примеров? Какой еще язык был во всех браузерах (не только IE) и способный делать то, что делал JS?
Была Java, но заточенная в кусок страницы, так же как и Flash потом.
I>>>Проверяем твое высказываение — любое говно пусть будет "vbscript". В эпоху домнирования IE он вроде бы должен был взлететь, т.к. и монополист, и крупнейшая область и тд.
DM>>Он работал во всех браузерах? Не было там никакой монополии и распространенности.
I>А ты, в курсе, да! I>vbscript работал в браузере >90% пользователей
Т.е. работал только в одном браузере, так и запишем. Дальше можно не смотреть.
Гугл тоже пытался Dart в браузер встроить. Остальные не поддержали. Итог известен.
I>Так ты внимательно прочитай, что это. Это не замена классов, как ты предполагаешь, а инструмент для создания простых типов. Кто за инвариантом следить будет? Опаньки!
И что? я показал, что C# впитывает в себя возможности F#, потому что типы очень нужны всем! и алгебраические типы данных нужны,
и то возвражение которое здесь мелькало, что при их использовании будет усложняться логика в корне не верен, просто при использовании примитивных типов данных,
как и принято в ООП C# обрабатываются только очевидные кейсы, а 99,9% пускаются на самотек(пока пользователь не создаст инцидент).
но проблема C# в том, что он изначально задумался как ООП, и поэтому построен не на вычисляемых выражениях (основа ФП), а на инструкциях.
отюда невозможность кратко выразить моделируемую систему.
Здравствуйте, varenikAA, Вы писали:
I>>Так ты внимательно прочитай, что это. Это не замена классов, как ты предполагаешь, а инструмент для создания простых типов. Кто за инвариантом следить будет? Опаньки! AA>И что?
Не вижу ответа на вопрос — кто же в рекордах будет за инвариантом следить. Если ты не можешь ответить — так и пиши.
> я показал, что C# впитывает в себя возможности F#, потому что типы очень нужны всем!
C# никакого отношения к фаршу не имеет. В нем потиху реализуют вещи, которые известны за десятилетия до фарша.
> и алгебраические типы данных нужны,
повторяй почаще. Нужны — это когда есть семейство задач, которые востребованы значительной частью мейнстрима. ты же ничего не говоришь про задачи, а рассказываешь про актуальность какого то инструмента.
При этом забываешь сказать, что проектирование и планирование имеет намного бОльшее влияние, нежели все языковые фичи вместе взятые.
AA>и то возвражение которое здесь мелькало, что при их использовании будет усложняться логика в корне не верен, просто при использовании примитивных типов данных, AA>как и принято в ООП C# обрабатываются только очевидные кейсы, а 99,9% пускаются на самотек(пока пользователь не создаст инцидент).
Статистику, похоже, ты придумал прямо во время написания сообщения. Кейсы — это про проектирование. Если ты их не выявил, то с какого перепугу они вообще в коде появятся?
О чем я тебе и говорю — проектирование имеет намного большее влияние.
AA>но проблема C# в том, что он изначально задумался как ООП, и поэтому построен не на вычисляемых выражениях (основа ФП), а на инструкциях.
Ты путаешь императивный и объектно-ориентированый. У тебя это слова синонимы.
Императивный — про вычисления.
Объектно ориентированый — про структуру решения.
ООП никак не противоречит ни ФП, ни многозадачному программированию, ни логическому. А у тебя ровно наоборот. Более того — ты уже давно дошел до фанатизма, т.к. с твоих слов ООП это плохо, а ФП это хорошо
Здравствуйте, D. Mon, Вы писали:
DM>>>Да. Не гарантируют. Но вероятность успеха повышают с 1/100 до 1/2 где-то. Смотри статистику. I>>Ты забыл ссылку на статистику
DM>А у меня и нет ссылки. Это задание творческое, предполагает самостоятельный поиск.
А я вижу совсем другое
I>>Если ты говоришь про 25 лет и про монополю, то Нетшкаф точно при чем. Надо бы тебе историю подучить
DM>25 лет назад уже были IE и Opera, если что. И чем был по сути JScript в IE?
Если ты даже википедию открыть не можешь, что тут уже говорить. Посмотри про войны браузеров и какую роль играл там Нетшкаф. Это основной конкурент ИЕ в те времена. Выход ИЕ4 — 97й год, самый разгар этой войны. Спустя 2 года Нетшкаф закончился.
2021 — 25 = 1996, то есть, за год до выхода IE4
I>>Монополия у него появилась далеко не сразу — был плавненький рост популярности вместе с ростом возможностей. I>>У него во все времена была куча конкурентов, как языков, так и технологий.
DM>Можно примеров? Какой еще язык был во всех браузерах (не только IE) и способный делать то, что делал JS?
А почему это должен быть именно язык? Апплеты на джаве это прямой конкурмент c ещё более широкими возможностями. Флеш — снова прямой конкурент.
DM>Была Java, но заточенная в кусок страницы, так же как и Flash потом.
Именно. И долгое временя доминировали именно такие технлогии, а жээс потиху рос и набирался сил. Примерно до конца нулевых на жээс никто всерьёз не смотрел. Даже когда в Микрософте выросла команда Outlook Web Application, которая дала миру XmlHttpRequest, всё равно ничего не изменилось.
Потребовалось еще много лет, для борьбы с тем же VBScrirpt, аплетами, флешами и прочей ересью.
То есть, Гугл запилил свой Gmail когда жээс уже был довольно взрослой технологией.
I>>vbscript работал в браузере >90% пользователей
DM>Т.е. работал только
Язык распространяется не из за браузерности, как тебе кажется. У vbs и без браузеров была очень широкая сфера применения. Более того — найти хелп на чем то кроме vbs было вообще говоря затруднительно.
Но вот не жаждал на нём никто писать, ну никак. И отсутствие его в других браузерах это не причина, как ты думаешь, а следствие.
То есть, ты скипнул все аргументы, как будто они ничего не значат Так себе подход к обсуждению.
Здравствуйте, varenikAA, Вы писали:
I>>Так ты внимательно прочитай, что это. Это не замена классов, как ты предполагаешь, а инструмент для создания простых типов. Кто за инвариантом следить будет? Опаньки! AA>И что? я показал, что C# впитывает в себя возможности F#
Да. Основательно их переосмыслив. И? Это как то делает фшарп лучше?
AA>, потому что типы очень нужны всем!
Да ты прям КО.
AA> и алгебраические типы данных нужны,
Нужны. Но сфера их применения очень узкая. Даже РМ удается воткнуть в реальный код нечасто, а уж у АлгТД если и есть применение за пределами написания компиляторов, то его очено и очень немного.
Да и вообще, АлгТД это куда больше ООП концепция, которую ты постоянно ругаешь, а не ФП. Просто исторически оно больше в ФП языках присутствует, так как увязано с развитым РМ.
AA>как и принято в ООП C# обрабатываются только очевидные кейсы, а 99,9% пускаются на самотек(пока пользователь не создаст инцидент).
Опять какой то бездоказательный бред, уж извини.
AA>но проблема C# в том, что он изначально задумался как ООП, и поэтому построен не на вычисляемых выражениях (основа ФП), а на инструкциях.
То что он построен не на вычисляемых выражениях — не проблема. Ни один чистый ФП язык пока не стал ни мейнстримом, ни даже близко. Те, у кого есть адекватное восприятие реальности — задумаются. Фанаты — будут искать заговор или обвинят 95% программистов в тупости.
AA>отюда невозможность кратко выразить моделируемую систему.
А не надо тупо моделировать реальные системы, не доводит до добра.
Здравствуйте, Ночной Смотрящий, Вы писали:
AA>>отюда невозможность кратко выразить моделируемую систему.
НС>А не надо тупо моделировать реальные системы, не доводит до добра.
В любой реальной задаче всегда более двух значений.
классика:
enum DoorState { Open , Close }
Пока смотрится шикарно, а что дальше?
Открытая дверь может скрипеть, двигаться, закрываться на замок и не на замок.
Опытный оопэшник создаст базовый класс и реализует наследников, но в си подобном языке это превратится в такую кашу.
Знаю сейчас ввели выражение switch, но это на мой взгляд опрометчиво, т.к. теперь есть инструкция и выражение имеющий разный смысл.
если же ограничится перечислением, то данные и состояние будут разорваны, что опять же не упрощает задачу.
не говорю что яп типа F# это пуля. но синтаксис их гораздо проще для выражения вот таких задач и не только т.к. компайлер также проверяет учтены ли все условия.
а в 6 версии после ввода вариантных типов как тайпе код станет еще лаконичней.
можно называть это как угодно(ООП, ФП, TDD), но это реально работает
type OpenDoor =
{ Angel: float }
type LockState =
| Lock
| UnLock
type Door =
| OpenDoor
| Close of LockState
| Moved
//let f x = match x with OpenDoor -> ();;
//-----------------^
//stdin(11,18): warning FS0025: Незавершенный шаблон соответствует данному выражению. К примеру, значение "Close (_)" может указывать на случай, не покрытый шаблоном(ами).
Здравствуйте, varenikAA, Вы писали:
AA>>>отюда невозможность кратко выразить моделируемую систему. НС>>А не надо тупо моделировать реальные системы, не доводит до добра. AA> AA>В любой реальной задаче всегда более двух значений.
Значений чего?
AA>классика:
AA>
AA>enum DoorState { Open , Close }
AA>
AA>Пока смотрится шикарно, а что дальше? AA>Открытая дверь может скрипеть, двигаться, закрываться на замок и не на замок.
Ну вот сразу, с ходу, типичная ошибка. Ты пляшешь от описания объектов, а это путь в ад (если мы, конечно, не симуляцию пишем). Начинать надо от юзкейсов.
AA>Опытный оопэшник создаст базовый класс и реализует наследников
Опытный оопэшник начнет с выяснения этих самых юзкейсов. А безумные иерархии будет только начинающий выстраивать. Времена Гради Буча давно прошли, ейчас никто так не занимается проектированием классов.
Я тебе одну простую вещь скажу — программные модели должны отталкиваться не от того как можно декомпозировать реальный мир, а от того какая моель будет наиболее удобна для того фукнционала, который требуется воплотить в программном коде, так что никакого DoorState в программе вообще может не быть.
AA>не говорю что яп типа F# это пуля. но синтаксис их гораздо проще для выражения вот таких задач
Каких таких? Ты задачу даже не описал. "Открытая дверь может скрипеть" это нифига не задача.
Здравствуйте, varenikAA, Вы писали:
AA>Пока смотрится шикарно, а что дальше? AA>Открытая дверь может скрипеть, двигаться, закрываться на замок и не на замок.
В универе, помню, преподаватель говорил:
- В чем отличие математики от кибернетики?
— В математике ты делаешь то что можно, так, как нужно. А в кибернетике ты делаешь то, что нужно, так, как можно.
Программы — это не теоремы, которые существуют сами по себе. Программа нужна для решения какой-то задачи, и надо ее делать так, чтобы оптимально решить эту конкретную задачу. И возможности языка программирования это только один из факторов, зачастую даже далеко не самый важный.
Здравствуйте, varenikAA, Вы писали:
НС>>Тем не менее в индексе TIOBE перл есть, а фшарпа — нету. AA>индекс популярности языковых запросов показывает сложность ЯП а не популярность в с смысле крутости.
А зачем запрашивать сведения по мёртвому языку? Perl-археологов больше, чем программистов на F#?