Здравствуйте, 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"
Что за бред?