Яка мова програмування є переоціненою? Діліться думками!

Спільното, поговоримо про мови програмування, можливості яких багато хто схильний переоцінювати?

Дехто вважає, що це Python та Java, які користуються популярністю у початківців (особливо, якщо це була не тільки перша, а й остання мова, яку вивчали спеціалісти). Багатьох приваблює низький бар`єр входу Ruby, і зрештою від неї очікують більшого масштабу, ніж вона може мати. А когось ніяк не може переконати велика кількість недоліків PHP.

Як вважаєте, яка мова програмування є переоціненою, і чому саме вона?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn

Найкращі коментарі пропустити

scala переоцінена як general purpose мова програмування.
пропускаю критику підтримки бібліотек, sbt, всрату IDE, міграцію на scala 3, академічність, токсичність комʼюніті і тд, про це уже понаписали більш кваліфіковані і цілком собі авторитетні адепти самої скали не раз.

на обʼєктивність не претендую, тут виключно мої субʼєктивні враження. з одного боку одна й та сама мантра про можливості ʼлаконічнава і виразітєльнава сінтаксіса с мощной сістємой тіповʼ в рядах фан клуба одерскі а з іншого репозиторії які після 5го коміту перетворюються на звалище рєбусів в стилі ʼшто ти блд такоє?ʼ бо кожен перший мамкін функціональщік вважає своїм священним обовʼязком присунути в код макросом, імплісітом або ще чимось модним во славу сатани. тут то і виявляється що цей ʼвиразний і лаконічний сінтаксісʼ крутий коли пишеш хеловорлд або свій черговий мєга корисний велосипед в одне рило. а от в команді код швидко стає мєсівом щедро посипаним операторами різного рівня упоротості, методами через пробіл (+100500 до виразітєльності, гарантірую ето!), обʼєктами компаньйонами, partial функціями і іншими ніштяками ʼбагатого синтаксисуʼ. статична типізація мало чим допомагає при читанні такого коду, інтроспекція коду бібліотек нагадує brainfuck. читабельність write only кода рівня Perl з функціональним присмаком — мистецтво робити прості речі складними. може десь в рокет саєнсі вся ця ʼмощность і гібкостьʼ виправдана, але тягнути таке в ентерпрайзи це постріл собі в ногу. починачи з найму і закінчуючи підтримкою цієі творчості душевно хворих потім.

справедливості заради можна спробувати писати код ʼпопрощєʼ і без жесті, щоб на пів шишечки фукціонально і не впадаючи в маразм ʼля пасани я одною строчкою зробивʼ але так не завжди і не всюди вийде та і який тоді сенс в цьому самому ʼбагатому синтаксисіʼ якщо є більш прагматичні і практичні мови з нижчим порогом входу?

з точки зору рядового програміста можна стримати блювотні позиви і витратити якийсь час, щоб обмазатись, покурити мануалів і звикнути до всього вищеперечисленого. зрештою є ж любителі хоббі хорсінга або ще яких стрьомних занять, стати просвєтльоним адептом церкви святого мартіна, і спробувати комерційно тєрєбонькати монади але це задоволення нижче середнього бо роботи не так, щоб прямо вагон і тєлєжка, більше штучні і нішеві вакансії, сумнівний return of investment. на редіті був цілий тред річної давності де адепти плакались,що бездушний менеджмент не хоче витрачати сотні нєфті на підтримку скала 2 /міграцію на скала3 і взагалі вони переписують або починають нові проекти на go, kotlin, typescript і прости господи java/springboot — от жалко пацана.

для адептів : само собою, я нічого не розумію, я токсичний ніасілятор, у мене ООП головного мозку і термінальна стадія java(ніт, але якщо комусь так легше то на здоровʼя), потрібне підкреслити. ваш код на скала точно не такий як я описую, в ньому поєднується перфекціонізм іммутабельності, краса чистих функцій, відсутні сайд ефекти а імперативщики просто не в силах оцінити функціональну парадигму

Який інструмент є переоціненим — обценьки, ножівка по металу чи може хрестова викрутка? І чому саме він?

1C І навіть не тому що русня. Відверто не розумію що люди роблять у цьому болоті. Максимально закрита платформа із повністю із нуля створеними кривими велосипедами. Там наприклад навіть git не можна юзати (ну добре, можна, але це дуже не зручно) і є своя система контролю версій.

«А когось ніяк не може переконати велика кількість недоліків PHP» — Хотілося б почути про цю велику кількість недоліків, бо поки ви мене не переконали, а лише кинули слова на вітер.

Але для того, щоб був конструктив у моєму коментарі, викладу кілька пунктів, які для мене важливі при виборі мови, і це стосуватиметься лише комерційної розробки:

0. Сфера застосування
1. Парадигма програмування, рівень абстракції, синтаксис
2. Спільнота та стабільна екосистема
3. Легкість навчання та доступність розробників
4. Масштабування та обслуговуваність

Ну і звичайно, якщо ви спочатку не забустрапите MVP на кількох мовах, які на вашу думку вам підходять, не протестуєте і не проведете бенчмаркінг того, що вийшло, не оціните кількість boilerplate коду,
тоді рано чи пізно в вашій голові з’явиться ідея, що дана мова «переоцінена».

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Функціональщина будь-яка

мені здалось, чи в ПХП найменший антирейтинг в коментарях?

javascript і всі її похідні-обгортки. світ точно би був кращим, якби жаваскрипту не існувало)

Dart, Elixir і Kotlin.
Незрозуміло, які проблеми вони намагаються вирішити. Їх очікує доля D і CoffeeScript.

Kotlin став мовою за замовчуванням для Android, Darth — для flutter. Тобто обидві мови підтримуються Google з тією самою ціллю, що і Apple створює і підтримує Swift та LLVM, а Microsoft C# та .NET. Це спосіб технологічної конкуренції, щоб продавати саме свої рішення — які будуть певним чином не сумісні з рішеннями конкурентів. Apple навіть з’єднання роблять які не відповідають індустріальним стандартам, щоби не можна було використати якись кабель не фірмений.
У D фактично не пішло, саме тому що Digital Mars не знайшли комерційну нішу для мови, тобто мова програмування створена заради мови. Якщо би вони її поставляли із якимось QT або wxWidets принаймні то був би якими сенс. А так звісно сенс лише в ентузіазмі. Багато в чому Rust — те саме. Elixir як і предок Erlang — як і предок Prolog, це абсолютно нішева історія.
Якщо ви уважно подивитесь кого шукають у вкладках «робота», то побачите, що насправді про мову програмування там не йдеться — просто по мові зручно робити фільтр.
Якщо шукають Java — насправді шукають програміста який знається на розробці Web серверної частини на Spring Framework. Python — те саме з Django і дуже часто штучний інтелект із Tensorflow чи PyTorch. JavaScript — бекенд на Node, або Frontend частіше усього на React, рідше Angular зовсім рідко Vue.
Тобто мова програмування навіть не другорядна, це третьо рядне — за мовою йде стек програмних технологій для вирішення відповідних бізнес питань.

Багато в чому Rust — те саме.

От щодо Rust не погоджуся, бо як раз його декларують як «більш безпечний та стандартизований C++». Не знаю, наскільки ці обіцянки відповідають дійсності, але якщо це дійсно так, то Rust має шанси поступово витіснити «плюси» (тим більше, що він начебто має гарну інтероперабельність з ними)

Саме з такою комерційною ідеєю на ринок виводили : D, Go Lang та низку інших мов. D по повній розкручували такі метри як Андрій Александреску та Скот Маєрс. І де зараз D — фактично там де же і Rust. На Go lang написаний Kubernetes та Docker тобто впровадити якось мову вдалось, при тому спеціалісти насправді не дуже то раді через низку обмежень та гірший за С++ оптимізацію яку роблять компілятори, меншу кількість бібліотек тощо.
Пошукайте зараз роботу на Rust, принаймні на міжнародному ринку.
В усіх FAANG — мова С++ буде в переліку тих на яких ви маєте знатись, на посаді software engineer.

10 років тому було те саме. Поки хоча б одна корпорація його не почне як умовний Котлін просувати про це казати можна з великим скепсисом.

polars — один із успішний прикладів використання rust. Це альтернатива pandas (python-лібка для даних). Основний selling point — x5-10 по швидкості.

Опа, а шо як в порівнянні з vaex? Ті наче понти колотять зіро копі полісі і рам менеджментом

Не пробував, але бенчмарки показують х2 швидкості порівняно з vaex на більшості операцій (крім мердж)

ось тільки це не с++,
класів там нема. такого потужного метапрограмування теж.
хіба як заміна с. і то питання.
навіть зі тулчейн зі звичайним С під конкретну залізку не завжди вчасно оновлюється

Ні, як раз Rust для мене виглядає більше як заміна C++, бо теж саме контейнерно-орієнтоване програмування. Головна структура даних у Сі це інтруїзівні двозв’язні циклічні списки, які на Rust реалізувати досить складно (бо порушується правило що на об’єкт може бути лише одне посилання за яким можна його змінювати).

А от контейнер, який володіє кожним окремим елементом, це як раз парадигма Rust та C++.

Знову ж таки в Rust є досить потужна система трейтів. Не кажути про повний по Т’юрінгу препроцессор, що просто інший рівень перед C++.

Ну а ООП... ADT особливо мені подобається більше, виглядає більш контрольованим. Ну а практика така, що ти працюєш в конкретній екосистемі та не дуже часто займаєшся архітектурою класів тощо, тобто різниця не дуже велика. Ну замість наслідування буде сума типів, і що?

Прив’язка до одного фреймворка/платформи це вірна смерть для мови: Objective-C, ColdFusion, Objective Pascal, Vala.
З нових мов виживуть лише TypeScript, Rust і Go. Dart та Elixir мертвонароджені. Kotlin ще трохи поборсається в своїй ніші, потім буде викинутий на користь якоїсь Java 30.

Ну власне С теж почали усі використовувати, тому що UNIX — а не тому що це добра мова програмування. Так під потреби системної розробки — С якраз і був зробленим, як то кажуть «те що треба» і при цьому можна з легкістю прострелити собі ногу (якщо нема інструментів зі статичної перевірки коду, санітайзерів тощо). А головна і ключова відмінність С++ від різних Go та Rust — це якраз великий рівень сумісності із С, відповідно і з системним API і з низкою системних бібліотек на будь які випадки життя.
А коли вам треба написати величезну кількість оберток, що для Rust, що для Go lang щоб писати мінімально комерційно придатну програму — це збільшує ціну. І виходить — що мова існує лише заради мови.
Rust активно продвигається комерційно Mozilla Foundation — колишніми Netscape, фактично теж з ціллю продавати Firefox OS. Доки ми мало що знаємо про платформу, просто так підти зараз в магазин і купити якись пристрій на платформі навідміну від Android чи iOS ми не можемо. Відповідно — мова мало то кому і потрібна, станом на сьогодні. Ніхто не шукає Rust програмістів бо запускає якусь бізнес аплікацію.

тому що UNIX

Тому що не Assembler. Якщо писали на ньому, то зрозумієте.

що мова існує лише заради мови

Так заради неї. І не тільки. Ще компілятор в даному випадку і екосистема.

Старий софт не буде жити вічно, його також треба підтримувати. І нові розробники не захочуть це робити, вони захочуть все переписати, рано чи пізно, використовуючи нові парадигми.
Час настав. Питання лише, чи достатньо змін приніс новий інструмент, щоб вибити з ринку старожилів.

Варто відмітити, що перша версія UNIX бала написана якраз на ассемблері. На C її розкрутили, після того як Річі зробив перший дієздатний компілятор і почав переписувати певні модулі. Таким чином Річі та Томпсон отримали першу в світі операційну систему яку було відносно просто портувати проміж різними апаратними реалізаціями, бо ядро було видділенно від платформою залежного коду. Відповідно не треба було переписувати програми. Так саме через це С доволі близький до асемблера, хоча як порівняти скажімо з Pascal то особливої різниці і не буде. Особливо коли порівняти Kernighan and Richie C, а не більш сучасними С99 і тим більше С11.
Таким чином на перших порах без UNIX C по факту був нікому не цікавим. Це вже потім стався бум, і власне він швидше стався зусиллями Microsoft та Borland.

Ну власне С теж почали усі використовувати, тому що UNIX

Ну так раст тепер в ядрі лінуксу. В віндовс 11 також і частину модулів переписують/али.

Лінус Торвальдс став приймати в репозіторій драйвери пристроїв написані на Rust. Про переписування нічого не чув. А так спробуйте написати простеньке ядро ОС і зрозумієте, що там і С багато в яких випадках — це оверхед чато буває. Ядро дуже асемблерна штука, власне чудово видно на самому ядрі лінукса де під кожну архітектуру по суті окрема папка а далі але пішли більш вискокорівневі штуки типу підтримки формату ELF, віртуальні файлові системи, самі файлові системи типу EXT4 і тому подібне. І там С достатньо виходить. Так скажімо ядра типу L4 написані на С++, та той код навіть важче читається.

ну і скілкьи його там?
в лінус некст біля 98% с коду,
далі йдуть скрипти, мейкфайли і асемблер під різні платформи.
расту так мало, що він навіть не висвічується як щось статистично нежваливе

Ну так раст тепер в ядрі лінуксу.

Не в ядрі, а збоку біля ядра для збірки out-of-tree модулів.
news.ycombinator.com/item?id=37477205

No, the only rust code accepted into any released kernels is basic framework infrastructure so that someday, maybe, in the future, real functionality could be written in rust.

There are many out-of-tree examples of rust kernel code, but as of right now, none have been merged.

Це слова Greg Kroah-Hartman — другої людини після Лінуса в проекті.

Доречі пам’ятаю їх обіцянки по Dart та Flutter
Наче Android вже от от помре і з’явиться якась нова операційка (вже і назви не пам’ятаю) і там Dart буде нативною мовою.

Elixir вирішує проблему масштабування і fault-tolerance.
Також дозволяє швидко і безболісно писати функціональний код на веб сервері, якщо комусь подобається функціональне програмування.
Наведіть мені приклади мов, які справляються з цими задачами краще.

Elixir вирішує проблему масштабування і fault-tolerance.

Це вирішує не Elixir, а ерлангівська віртуальна машина
Elixir туди привносить «рубішний» синтаксис (багатьом подобається) і макроси (кажуть, що вони там класні)

Програмування є переоціненим. Воно було вчора, зараз треба вміти тренувати нейромережі.

— Конструктори сайтів/мобільних/десктопних аплікацій намагались у різний час вбити тих чи інших фронтендерів
— BPMS/BRMS/ще якісь там xMS намагались вбити бекенд розробку

Зараз мовні моделі кажуть що вбьють усіх. Подивимось

Щось програмісти досі живі.

Цей chatGpt вже нервує. Відмовляється бровзити в інтернеті, щоб перевірити щось, каже — не можу. Я: та шо ти брешеш, я ж сам бачив як ти вчора бровзив. Він: вибачте, але я як ШІ-модель не можу...

Щоб збирати дані і деплоїти ті нейромережі, програмування таки треба.

Однозначно Scala.
У 2013-м році її повсюдно називали «вбивцею Java». У підсумку вона зараз займає дуже скромне місце на ринку з 1%, і навіть Kotlin її випередив у популярності.

Python — тому що дуже погана зворотня сумісність, погане відслідковування модулів та залежностей. Деякі речі було взято від Perl, але працює по іншому. Я можу помилятись в деталях, але коли вперше познайомився з Python, маючи при цьому досвід роботи з Perl, був шокований тотальним пиз...цем який відбувався у Python. Знайомство відбулось на базі запиту про перевезення порталу на Django старої версії і цей переїзд на інший сервер у мене зайняло приблизно 3 місяці, бо багато речей навіть в версії Python 2.7 були не сумісні. Тонка і потужна робота Perl, в якому для мене все було логічно, вірно і гарно побудовано, повністю відрізнялось від хаосу у Python.
Python пішов вгору свого часу — бо на ньому робили DropBox і засновник Python добре здружився з Google,яки доклав зусиль у розвиток цієї мови.

Go — особисто зтикався з ним пару раз, багато хто каже про його багатопоточну роботу, дуже крутезну швидкість роботи на великому наватаженні, але три проекти на яких я працював з ним — не показали крутості, ба більше — на одному проекті Go не показав себе краще за php та C++, бо проект було куплено — він був написаний на C++, потім його переписали на php, а потім на Go. Мені як адміну проекту було видно скільки ресів було потрібно на одному і тому самому трафіку, функціоналі для різних мов.

JS — дуже не подобається все що стосується JavaScript але альтернатив схоже немає (або я не знаю). Важкий, memory leak, встановлення залежностей від розробників робить розмір проекту іноді просто неадекватним, білд проекту потребує неадексватно багато CPU/RAM ресурсів (потрібно стартувати окремий сервер для білду), більшість розробників з якими я зтикався — які пишуть фронт/бек на JS не мають адекватного розуміння з мовою та її можливостями, не взмозі адекватно поставити ТЗ зі зборки та деплойменту проекту, костилі у вигляді pm2 restart за розкладом, бо пам’ять витікає, розширятись по ресах дозволу немає, шукати де саме витік немає часу і бажання....

Я можу помилятись в деталях, але коли вперше познайомився з Python, маючи при цьому досвід роботи з Perl, був шокований тотальним пиз...цем який відбувався у Python.

П...ць це в Perl. В Python як раз нема тих десятків проблем Perl через які збігли з нього майже всі.

У Python вагон своїх проблем, але порівняно з Perl це дуже неплохий варіант.

Тонка і потужна робота Perl,
Python пішов вгору свого часу — бо на ньому робили DropBox і засновник Python добре здружився з Google,яки доклав зусиль у розвиток цієї мови.

«Невозбранно взоржал» (tm)

збігли з нього майже всі.

Як мені казав лід однієї команди, всі з ким він свого часу вчився в уніпері Perl здавали ридаючи, бо не зайшов їм. Ото може і збіжали. Я писав з колоколні сисадміна і рагульність пітона з точки зору адміна мене досі вражає.

«Невозбранно взоржал» (tm)

З чого саме — з PCRE які не від пітона пішли ? :)

PS ваше право з чого ржати, чи не ржати. Я навів свої аргументи, важливі для мене як для адміна і проти них ви нічого не скзалаи окрім ефемерного

десятків проблем Perl

бо зворотня сумісність це як на мене що має бути хоча б в рамках однієї версії бібліотек.

PPS гарного дня, вступати в баталії стосовно хто крахе пітон чи перл не буду :)

колись давно мені подобався перл. я й досі програмування як магію сприймаю, а з перлом то точно магія. НАмалював верблюда чи черепаху ascii артом — а воно працює ще й щось робить корисне. магія

Я навів свої аргументи, важливі для мене як для адміна

Моя оцінка _і_ як адміна _і_ як програміста.
Деякі рідкі переваги Perl для «однорядковиків» у стилі вбудованого m/.../ миттєво щезають, коли навіть в адмінській роботі переходиш на два екрани.

гарного дня, вступати в баталії стосовно хто крахе пітон чи перл не буду :)

ап ту ю :)

Да, Perl и Tcl — два примера, как из шелла (bash, sh, etc.) замыкаются до завершённой логики. Причём метод Tcl мне нравится немного больше... хотя он и менее эффективен в среднем.

Основная проблема как раз в том, что подход Tcl и Python масштабируется изначально с самых простых уровней, даже если их самих надо заметно многословнее писать. А вот у Perl есть минимум два стиля — для одноэкранных скриптов и для больших проектов, и переход от первого ко второму это куча марудной возни.

Я писав з колоколні сисадміна і рагульність пітона з точки зору адміна мене досі вражає.

Доволі сильна заява. Бачив я той код, що пишуть сисадміни та девопси. Переважно люди пробували натягнути сову на глобус і дивувались, чого працює не так як треба.

З того що я бачив від людей, котрі плювались на пайтон — передали список в функцію, всередині його модифікували, вийшли назад, а дані кудись пропали! Або писали клас без заголовку класу, тобто почали з `def __init__()` і дивувались, чого код не запускається. Або ще із смішного — написали дві функції, в кожній об’явили по локальній змінній з однаковою назвою і дивувались, чого під час виконання в другій функції значення не те, яке вони привласнили в першій. Чи пробували «модифікувати» кортеж всіма можливими способами (.add, .append, .extend, .update — всюди кляті помилки і що вони означають ні бум бум, бо то щось незрозумілою англійською).
Лайно, а не мова. ©

Для непідготовлених простіше та зручніше пайтона мабуть нічого немає, враховуючи його нормальний візуально незамусорений сішними дужками синтаксис та екосистему.

Бачив я той код, що пишуть сисадміни та девопси.

Читайту уважно те, про що писав я і не потрібно домислювати про «код від адмінів та девопсів».

Знайомство відбулось на базі запиту про перевезення порталу на Django старої версії і цей переїзд на інший сервер у мене зайняло приблизно 3 місяці, бо багато речей навіть в версії Python 2.7 були не сумісні.

Це не має жодного відношення до

Переважно люди пробували натягнути сову на глобус і дивувались, чого працює не так як треба.

Бо завдання було перенести з сервера на сервер, а не переписати.

Все інше у ваших висловах не має відношення до мови — то відношення до невміння банального функціонального програмування.

Для непідготовлених простіше та зручніше пайтона мабуть нічого немає, враховуючи його нормальний візуально незамусорений сішними дужками синтаксис та екосистему.

у нас тут розмова не про зручність, а переоціненність. Той факт що низький порог входу — створю велику кількість шлаку в цій мові, бібліотеках тощо.

сішними дужками синтаксис та екосистему

ну так в ті часи коли юзали Perl/C/C++/Asm — була розробка, були продукти, було бажання зманатись за швидкість роботи коду, за його розмір. Легкі рішення призовдять до того, що з’являються Python/JS — де розробники не взмозв оптимізувати свій код, не розуміють що таке memory leak — тому що ніколи не працювали з деструкторами )))

PS додам ще від себе і це просто на 100% imho — достатнь пригадати ситуацію з срачем стосовно master-slave у Python.

PPS авжеж python девелопер буде ображатись на подібні речі і я це розумію, як і розумію вашу захисну реакцію у вигляді нападу.

Go — особисто зтикався з ним пару раз, багато хто каже про його багатопоточну роботу, дуже крутезну швидкість роботи на великому наватаженні, але три проекти на яких я працював з ним — не показали крутості, ба більше — на одному проекті Go не показав себе краще за php та C++, бо проект було куплено — він був написаний на C++, потім його переписали на php, а потім на Go. Мені як адміну проекту було видно скільки ресів було потрібно на одному і тому самому трафіку, функціоналі для різних мов.

oh man

напевно проблему була не в Го, а в тому, хто на неї переписував)

хто зна, я не можу перевірити рівень, але факт був і не на одному проекті...

Про Python та Perl це прям сильно. Ну Deep Learning чомусь вашу переоцінку не розділяє:)

Враження, що більшість коментаторів просто висловлюються свій хейт, не наводячи аргументів.
Про переоціненість (як і про недооціненість) можна говорити тільки у порівнянні з чимось,
тобто коли щось цінують вищє, ніж більш (на вашу думку) якісну альтернативу.

Так C++ є переоціненим, бо має купу кращих альтернатив (D, Rust, Zig, Odin / etc).
Також Java в усьому (крім кількості юзерів) поступається Kotlin
Basic, вже майже забутий зараз, але у свій час був дуже переоцінений, як перша мова (бо майже будь яка інша мова була краща і простіша).

але ж і ви теж не навели аргументів.

але ж і ви теж не навели аргументів.
є переоціненим, бо має купу кращих альтернатив

Але ж аргумент, і дещо кращій, ніж у вас.
Ви висловили незадовїолення, але з чим саме ви не згодні?

тим, що «ваши аргумєнти нє аргумєнти»
у фраз «мені не нравиця пітон» і «с++ переоцінений бо є багато кращих» — аргументація одного рівня. І якщо

Враження, що більшість коментаторів просто висловлюються свій хейт, не наводячи аргументів.

то і у вас немає аргуменів.

Більше того, впевнений, що автор згенерував свій коментар штучним інтелектом, причому найпростішим)

Також Java в усьому (крім кількості юзерів) поступається Kotlin

Тоді поясніть, інтелектуальний ви наш, чому за 12 років свого існування Kotlin так і зміг досягти (я вже не кажу перевершити) популярності Java?

інтелектуальний ви наш,

я б міг розрорнуто пояснити, але ви не та людина, яка заслуговує на відповідь.

Так дивлячись на якій саме платформі. На серверну розробку Kotlin особливо й не претендував (хоча спроби були). Проте, під Android — це зараз мова вибору мабуть в 99% випадків.

Я також трохи накину...функціональщина, Closure та інше lisp-подібне

Ну по-перше Clojure.
Як розробник на Clojure можу погодитися, але частково.
Його дуже гарно продають, багато відомих коцептів втюхують як ноу-хау, але в кінці все в впирається в динамічну типізацію.

Якщо розглядати Clojure як конкурента мовам з динамічною типізацією, то для мене це краще що впринципі існує. Дуже круто переосмислені відомі з ООП патерни та концепти, мега ком’юніті, дуже продумані бібліотеки бібліотеки, відносно (nodejs) стабільна екосистема. Код писати мега швидко і зручно. Але чим більше застосунок і команда розрозтається тим крихкішою стає кодова база. Що, впринципі, притаманно усім мовам програмування з динамічною типізацією.

За іншу функціональщину категорично не згоден. Мрію, що колись всі проекти будуть на OCaml чи F#.

Код писати мега швидко і зручно. Але чим більше застосунок і команда розрозтається тим крихкішою стає кодова база

Disclaimer: do not use Clojure

А хіба clojure.org/about/spec не допомагає? Чи вона рідкість в реальних проектах?

Чомусь подумав про R, яка наче й була створена для Data Science та ML, але дуже рідко використовується навіть в академічних колах. R видається складнішою для навчання, ніж Python, особливо для вирішення нетривіальних задач, в чому я взагалі не вбачаю сенсу: якщо основний акцент зроблено на наукову спільноту (що в цілому не передбачає надвисоких навиків програмування), мова має бути якнайпростішою.
Є ще Scratch для дітей, в якому я теж не вбачаю особливого сенсу; мабуть, доцільніше відразу переходити на Python з невеликим порогом входження, що відразу покаже, що таке мова програмування без абстрактного Scratch-а.

R так, багато говорили, але мало використовували. Microsoft ще мабуть не мало бабла вбухали в R#, але вихлопу не було. Така собі мертвонароджена мова, яку багато хто намагався реанімувати
Scratch тут не згоден. Він добре заходить для молодших класів. Не будуть же у першому класі вивчати Python. Тому свою нішу він займає по праву

скорее, недоиспользованный. Не понятый. Задавленный питоном. Универские лабы не дают понятия о языке. Да и сами преподы редко идут дальше быстрого прототипирования. Пишут длинные портянки итп. Упаковать свою вермишель в пакет и упростить дальнейшую жизнь себе и людям — редко.

Он не лучше. Просто другой. Но свои наработки — как минимум не хуже.

Часто використовуєте (якщо так, то де)? Питаю з цікавості, бо якось не чув позитивного досвіду застосування R :) Мені теж поки не зайшов

Ежедневно. Разработка, дебаггинг пакетов. Геоданные (sf).

Всі мови крім С є переоціненими.

Ви ж не на співбесіді на C-вакансію, щоби такі думки висловлювати без аргументів.

С потворно переоцінений.

Ну вона прям на хайпі зараз.
Дуже багатьом із мого оточення вона подобається.
Особисто я коли бачу цей синтаксис то прям кров із очей. Але ж кожному своє

А можете розгорнути «пародію»? Цікаво з вашого досвіду, що ви пробували і вам не зайшло.

Пародія на обробку помилок:

if err != nil {
    fmt.Println(err)
}

Пародія на filter/map/reduce/some/every/contains та інші корисні функції для роботи з колекціями:

found := false
for i, v := range someSlice {
	if v == searchString {
		found = true
		fmt.Println("The slice contains", searchString, "at index", i)
		break
	}
}

Пародія на лямбда функції:

 
answer := sort.Search(100, func(i int) bool {
  fmt.Printf("Is your number <= %d? ", i)
  fmt.Scanf("%s", &s)
  return s != "" && s[0] == 'y'
})

Пародія на дженеріки:
~10 років розповідали що дженерік «не нужон». Але таки додали. Деякі люди кажуть що криво. Мені не хочеться перевіряти.

Пародія на автоматичне закриття відкритих ресурсів:

file, err := os.Create(fileName)
if err != nil {
     return err
}
defer file.Close()

Пародія на type safety:
До дженеріків всі юзали interface{} де тільки можна і навіть зараз ще дохера коду з interface{}.
stackoverflow.com/...​l-and-nil-interface-in-go
freshman.tech/...​s/go/nil-vs-empty-slices

P.S. 25 років тому golang виглядав би досить пристойно. А зараз це просто пародія на сучасні мови. Навіть жаба краще за го.

Я після Scala/Java/Groovy/Ruby etc
Думав так само. 100%

І спеціально перейшов на Go, щоб ось ці всі упередження перевірити. Багато років тому таку ж мотивацію мав, щоб спробувати Scala.

Ділюся своїм досвідом, дуже суб’єктивно, Стокгольмськйи синдром і все таке.

1. Після Скала колекцій, коли я писав дата процесінг як пайплайн — то в Го я все мушу руцями. Спершу видається тьма і капець. Але я можу в будь який проект припертися (їх в мене багацько) і зрозуміти, що тут діється. Тобіж, проста, як двері, мова має вагомі перевари в супроводі і онбоардінгу нових тіпочків.
1.а) Я це порівнюю зі Скалою. Бо якщо там (Scala) також ми пиляли все без фреймворків — то якщо нові тіпи не шарили в Scalaz/Cats — то було дуже важко їх залучити. Їм ще треба було пройти курс бійця в FP.
1.б) На рахунок Java — то в моєму оточенні Java == Spring, а Спрінг я не переношу. Були проджекти/тіми на Vert.x чи Quarkus, але це по-приколу. Хочеш Джаву — маєш ложкою і Спрінг їсти. Я вже не кажу, що Спрінг доти класний доки щось не навернеться, і доводиться з лупою роздупляти хто кого заінджектив.

Коротше — в Го все прозоре і працює як молоток.

2. В Го мені подобається
— крос-компіляція під різні платофрми
— ліба для тестування (з коробки), профайлінгу і бенчмарків (P.S. профайлінг на JVM круче)
— статичні бінарі — це топ, якщо хтось скаже що в JVM є Graal — я посміюся, поки-що бінарі які генерить Graal досить великі (коли я перевіряв 2 роки тому, хз що там зараз)
— швидкість компіляції

3. Не потрібнo тягнути з собою білд тули а ля Maven, Gradle i SBT. Маленький Makefile вирішує більшість задач (звичайно є випадки коли треба упоротися).

4. На рахунок стандартних закидів щодо
4.а) errors — мене воно взагалі ніколи не парило, просто норм праює. Хз чого всіх плющить
4.б) interfaces — тут є плюси і мінуси. плюси — не треба прив’язувати інтерфейс і реалізацію; це саме є і мінусом. Завдяки прикольним інтерфейсам в Го можна крутити лаконічний DI без DI контейтерів — і все тіп-топ.
4.в) історія з конкурентністю — просто топ, просто і працює. нема про що розказувати — треба пробувати самим
4.г) дженеріки — так — після Скали я тут мучився що капець. Але на поточному проекті — були окремі випадки де їх було реально треба. І так — джереріки в Го — це прикол. Хз чи їх будуть активно юзати. Час покаже.

В Го ком’юніті тіпи просто пиляють круті проєкти на «гівно мові» і всі «літає». Нема цих понтів з типами і монадами. Просто закотили рукави і забумбелили щось круте.

В Скала ком’юніті як не конфа то новий вєлік з ТaglessFinal чи ще якісь ініші FP-шняги. Воно дуже все дивне.

Мені Scala як мова дуже подобається, але навколо мови є багато різних штук: екосистема, люди, стратегічний напрямок розвитку. І тут виникає багато питань.

Чи можу я сказати, що за мені Го подобається що капець -ні. Але ця коняка їде далеко і без упину.

У всіх людей є упередження допоки вони не попишуть код в проді і поки не доведеться траблшутити щось на якомусь фреймворку. Скільки я бачив девів на Spring які дупля не б’ю як воно все під капотом працюю.

Ви мені краще скажіть як ви живите з цим в проді?

Інколи nil не nil. Golang виводить «Null References: The Billion Dollar Mistake» на новий рівень коли if x != nil не працює і треба робити мегакостилі з рефлекшином.
Просто геніальний дизайн мови! БРАВО!

package main
import "fmt"
func main() {
	var i1 interface{} = nil
	var p *string = nil
	var i2 interface{} = p

	// nil не nil
	fmt.Printf("%v %v\n", i1 == nil, i2 == nil) // виводить: true false
}

Фіг вгадаєш на який масив вказує твій слайс.
Просто геніальний дизайн мови! БРАВО!

package main
import "fmt"
func main() {
	s1 := make([]int, 1, 2)
	s2 := s1

	s1[0] = -1
	s2 = append(s2, 1)

	fmt.Printf("s1: %v\n", s1) // s1: [-1]
	fmt.Printf("s2: %v\n", s2) // s2: [-1 1]

	s1[0] = -2
	s2 = append(s2, 2)

	fmt.Printf("s1: %v\n", s1) // s1: [-2]
	fmt.Printf("s2: %v\n", s2) // s2: [-2 1 2]

	s1[0] = -3
	s2 = append(s2, 3)

	fmt.Printf("s1: %v\n", s1) // s1: [-3]
	fmt.Printf("s2: %v\n", s2) // s2: [-2 1 2 3]
}

не маю жодного уявлення про go і бачу синтаксис взагалі вперше, але по першому фрагменту так здається, що пан не розрізняє reference від pointer.

Шановний якщо ви

не маю жодного уявлення про go і бачу синтаксис взагалі вперше

то не треба писати чого не розумієте.

Я і без вас знаю чому воно так працює. Моє питання було

як ви живите з цим в проді?

І це питання було до того хто використовує го, а не до того мимо проходив.

Це гарні приклади.

Основна проблема в тому, що це інший підхід і люди до цього не звикли, не інтуїтивно і юзерам потрібно розбиратися, що таке interface{}, slice’s len vs. cap.

Користувачам потрібно почитати доки і не вестися на «простоту» мови, бо як ви вказали вище, є нюанси.

Але таке ж саме можна сказати про будь-яку мову. Завжди знайдуться приколи про які треба знати і десь почитати.

Ну я коли приперся в Scala чи тикав Haskell — то також розбирався чого воно працює так, а не інакше.
Чи ці нюанси можуть прилетіти нізвідки? — 100% чи це гарний дизайн? — якщо не читати спеку — то на перший погляд не дуже. Для себе я завжди пам’ятаю, що слайси — це view на array, а інтерфеси мають два значення і тоді не все таке печально.

Ви мені краще скажіть як ви живите з цим в проді?

Ніколи не мав з цим проблем. Може рятують тести, код-рев’ю і лінтери, а може ще мій час епічного фейлу не прийшов і все попереду.

---

Мені особисто не хочеться вести полеміку мова X гівно — бо є проблема «ABC». Якщо мені щось не подобається — не використовую.

Для мене не усе залежить від мови (я писав вище і про інші критерії). Наприклад, Go не найкраща мова і вона завжди в мене асоціюється з молотком — працює просто, але не для всіх.

Scala — топчик, але я би її не брав в нові проекти, бо є фактори, які я і ком’юніті змінити одномоментно не можуть. От і парадокс — я не використовую мову, яка мені дуже подобається. Реальність і прагматизм вносить зміни. Релігійним до інструменту (а Go — це інтсрумент) я бути не можу.

Інший приклад — Python. Я використовува завжди для автоматизації Ruby, я був прихильником цієї «свободи» і відверто не любив (тошнило від них) патонівські відступи і багато нюансів в дизайні мови (і досі мене це курвить), але я тепер викиристовую тільки Python, бо це прагматизм і здоровий глузд.

Надав нище посилання, можливо комусь буде цікаво почитати.
---
1. Why is my nil error value not equal to nil?
ref: go.dev/doc/faq#nil_error

Why is my nil error value not equal to nil?

Under the covers, interfaces are implemented as two elements, a type T and a value V. V is a concrete value such as an int, struct or pointer, never an interface itself, and has type T. For instance, if we store the int value 3 in an interface, the resulting interface value has, schematically, (T=int, V=3). The value V is also known as the interface’s dynamic value, since a given interface variable might hold different values V (and corresponding types T) during the execution of the program.

2. Go Slices: usage and internals
ref. go.dev/blog/slices-intro
Тут є пояснення щодо length and capacity

А не здається що є якась біда у динамічній типізації?
Там фактично монопольне положення зайняли дві мови, на яких намагаються створити буквально усе. І нічого цікавого там вже давно не з’являлось.
Усі інші не розвиваються або зайняли дуже нішеве положення. Як наприклад lua, яку я вважаю самою недооціненою мовою

Ну... скоріше за усе, що там важко винайти щось нове, усі мови +/- дають однакові можливості, тому переможе мова, де більше екосистема (пакети, ...) Як з цим у Lua?

Написати нову динамічну мови можна за вихідні, але які переваги вона дасть?

Був переоціненим в свій час Pascal, маю на увазі кінець 90-х поч. 00-х.

В 1983 фірма Borland випустила на ринок Turbo Pascal (компілятор і першу IDE як таку), по ціні $49,99 ($158 в сьогоднішніх цінах). За перший місяць продажів було продано на загальну суму $150 000 ($473 000 в сьогоднішніх цінах) — WWW і сучасних моделей продажів взагалі ще не існувало, це було нечувано — банк арештував рахунки та почав перевірки по підозрі на шахрайство. За перші два роки продажів було продано 300 тисяч копій, це перевершило усі показники усіх компаній які працювали з мікро-компьютерами тих років. За якістю (в епоху до інтернет, stack overlow тощо коли програмісти працювали з документацією і тим що є) це була неперевершена ніким на той час середа програмування, якісно документована інтуїтивно зрозуміла, мала підсвітку синтаксису, вбудований асемблер тощо.
Фірма Borland пішла до закату коли головний розробник Turbo Pascal та Delphi — Андерс Хейлсберг був переманений Microsoft і відповідно перетягнув за собою більшість ключових розробників. Там вони створили C# .NET та TypeScript. Це одна з найвідоміших кадрових атак в історії ІТ, коли конкурента компанією яка діяла методами монополії Джона Рокфелера, було знищено через кадрову атаку. З рештою та політика призвела до відсторонення Білла Гейтца судом від керування компанією і її примусового антимонопольного розділення. Стіва Балмера як відомо згодом було звільнено радою директорів і він зганьбився публічною істерикою.

Класна розповідь!
Дякую!

Не знаю як можна переоцінити Паскаль, якщо для більшості людей тут і у світі загалом він був першою мовою? Йому навіть тіки за академічність можна балів накинути

отож, Python треба було викладати в школі і університеті.

Низзя. Не было его в 1996-м ещё.

en.wikipedia.org/...​on_(programming_language

First appeared 20 February 1991; 33 years ago

Просто в ті часи він «ходив у коротких штанцях» і до кінця 90-х про нього мало хто чув

Йому навіть тіки за академічність можна балів накинути

Pascal, мабудь, вштовхнув у маси структурне програмування, але у Smalltalk та ML, які з’явились на кілька років пізніше, академічності більше на кілька порядїків.

для більшості людей тут і у світі загалом він був першою мовою?

Це прикро, бо «більшость людей» його вчила не у 70х коли він з’явився, а у 90х-00х, коли вже були багато кращі альтернативи.

scala переоцінена як general purpose мова програмування.
пропускаю критику підтримки бібліотек, sbt, всрату IDE, міграцію на scala 3, академічність, токсичність комʼюніті і тд, про це уже понаписали більш кваліфіковані і цілком собі авторитетні адепти самої скали не раз.

на обʼєктивність не претендую, тут виключно мої субʼєктивні враження. з одного боку одна й та сама мантра про можливості ʼлаконічнава і виразітєльнава сінтаксіса с мощной сістємой тіповʼ в рядах фан клуба одерскі а з іншого репозиторії які після 5го коміту перетворюються на звалище рєбусів в стилі ʼшто ти блд такоє?ʼ бо кожен перший мамкін функціональщік вважає своїм священним обовʼязком присунути в код макросом, імплісітом або ще чимось модним во славу сатани. тут то і виявляється що цей ʼвиразний і лаконічний сінтаксісʼ крутий коли пишеш хеловорлд або свій черговий мєга корисний велосипед в одне рило. а от в команді код швидко стає мєсівом щедро посипаним операторами різного рівня упоротості, методами через пробіл (+100500 до виразітєльності, гарантірую ето!), обʼєктами компаньйонами, partial функціями і іншими ніштяками ʼбагатого синтаксисуʼ. статична типізація мало чим допомагає при читанні такого коду, інтроспекція коду бібліотек нагадує brainfuck. читабельність write only кода рівня Perl з функціональним присмаком — мистецтво робити прості речі складними. може десь в рокет саєнсі вся ця ʼмощность і гібкостьʼ виправдана, але тягнути таке в ентерпрайзи це постріл собі в ногу. починачи з найму і закінчуючи підтримкою цієі творчості душевно хворих потім.

справедливості заради можна спробувати писати код ʼпопрощєʼ і без жесті, щоб на пів шишечки фукціонально і не впадаючи в маразм ʼля пасани я одною строчкою зробивʼ але так не завжди і не всюди вийде та і який тоді сенс в цьому самому ʼбагатому синтаксисіʼ якщо є більш прагматичні і практичні мови з нижчим порогом входу?

з точки зору рядового програміста можна стримати блювотні позиви і витратити якийсь час, щоб обмазатись, покурити мануалів і звикнути до всього вищеперечисленого. зрештою є ж любителі хоббі хорсінга або ще яких стрьомних занять, стати просвєтльоним адептом церкви святого мартіна, і спробувати комерційно тєрєбонькати монади але це задоволення нижче середнього бо роботи не так, щоб прямо вагон і тєлєжка, більше штучні і нішеві вакансії, сумнівний return of investment. на редіті був цілий тред річної давності де адепти плакались,що бездушний менеджмент не хоче витрачати сотні нєфті на підтримку скала 2 /міграцію на скала3 і взагалі вони переписують або починають нові проекти на go, kotlin, typescript і прости господи java/springboot — от жалко пацана.

для адептів : само собою, я нічого не розумію, я токсичний ніасілятор, у мене ООП головного мозку і термінальна стадія java(ніт, але якщо комусь так легше то на здоровʼя), потрібне підкреслити. ваш код на скала точно не такий як я описую, в ньому поєднується перфекціонізм іммутабельності, краса чистих функцій, відсутні сайд ефекти а імперативщики просто не в силах оцінити функціональну парадигму

А які тоді ФП-мови, по вашому, краще за Скалу?

Scala — мульті парадигмена, а не чисто функціональна мова. З чисто функціональних мов — дідусь Lisp і наприклад Haskel.
Lisp — та ще штука прямо скажемо, як на мене на ассемблері менша трудомісткість програмування.
А з Haskel — адепти носяться так само як і зі Scala.
Об’єктивна реальність імперативний підхід в програмуванні є домінуючим. Проблема функціонального підходу — він складний для розуміння людиною, є поріг входу суттєвий, складно розробляти і підтримувати код командою з людей різної кваліфікації і т.д. Зазвичай народ на таких мовах часто більше випендрюється з можливостей мови, прокручуючи хитроумні конструкції , аніж вирішує практичну задачу, хоча і на С++ наприклад теж. Венцем аж занадто хитроумної мови напевно є Perl — де люди визнають, що часто буває не розуміють код який самі написали тиждень тому.

З чисто функціональних мов — дідусь Lisp

Lisp ніколи не був «чисто функціональною», хоча я хз про який саме Lisp тут мова.
Common Lisp — більше OOP ніж FP (так там багато дужок і тд), але писати Lisp і Haskell поряд — це «богохульство».

Венцем аж занадто хитроумної мови напевно є Perl — де люди визнають, що часто буває не розуміють код який самі написали тиждень тому.

Perl — The only language that looks the same before and after RSA encryption.

водночас, на с++ — цитую, "

а от в команді код швидко стає мєсівом щедро посипаним операторами різного рівня упоротості

— таке при адекватному процесі ревʼю неможливе. На с++ можна (і потрібно) писати в стилі як писала б дитина і код тоді залишається простим і читабельним.

Зазвичай народ на таких мовах часто більше випендрюється з можливостей мови, прокручуючи хитроумні конструкції

Так в скала й цього (можливостей мови) немає. Після того ж котлін або расту, просто диву даєшся наскільки незручно й складно, наприклад, працювати з тими ж Optional + Future/Promise. Й замість того щоб забити й написати вже як є, не в одну строку, деякі не здаються, а пишуть нову кончену абстракцію типу monad transformer. Те що навіть в так ненависному багатьма JS робиться дуже простими async/await та ?. оператором, які й джун має розуміти, тут приправляють власним велосипедом й називають це «функціональне програмування, тобі не зрозуміти, це для розумних дядьок».

Коли мова провокує написання велосипедів — це я вважаю максимально хєрове effort/reward співвідношення. Бо фреймворк можна потім притягнути в новий проект, а велосипеди в яких ти колупався увесь цей час — ні. Golang доречі теж таку хворобу має, але там хоча б ці велосипеди набагато легше й швидше зрозуміти.

Так в скала й цього (можливостей мови) немає. Після того ж котлін або расту, просто диву даєшся наскільки незручно й складно, наприклад, працювати з тими ж Optional + Future/Promise.

Disclaimer: не писав на Kotlin I Rust.

Якщо взяти Scala (без Scalaz, Cats, ZIO ect) і банальні базові монади Future, Option, etc. то маючи одну просу абстрацію можна замінити Kotlin ?: на Option. Якщо треба іншу фігню, яка потенційно має бути порожня — то такий самий принцип. Я так розумію в Kotlin таке вже з ? не розрулиш? Це ж стосується колекцій в Скала.

На рахунок Раста — то я швидко глянув і них є
— std::option::Option (ref doc.rust-lang.org/...​d/option/enum.Option.html)
— either::Either (ref docs.rs/...​t/either/enum.Either.html)
то чому Раст (як мова) відрізняється в цих моментах від Scala, які ви навели вище.

P.S. Раст відрізняється, але мене саме цікавлять ваші приклади ^^^^.

Казати, що усі в Скала пишуть на Transformers, etc це перебір.
Основні sub-communities/approaches:
1 — Scala as Java++
2 — Scala Lightbend style (подібне до 1)
3 — Scala Typelevel
4 — Scala ZIO (== 3)

---
мені особисто Scala 3 привнеcла більше невизначеності ніж було до того. Мейнтейнери бібліотек напряглися, люди дрейфуйють зі Scala2 не тільки в напрямку Scala3, а й в сторону Java 21+, Kotlin, Go, your-choice.

Свого часу всі хейтили Скалу бо в неї implicits. Це той самий аргумент, що казати «Rust гівно бо там напряжний borrow-checker». За моїми спостереженнями часто найбільше хейтять ті хто нічого не пробував писати на Скалі (підстав іншу мову) — бо зараз так модно. Це можна сказати про інші тренди в ІТ — просто ми такі є.

В Скалі дуже дивне ком’юті з довгою історієї срачів, які я споглядаю з відром попкорну.
Мова дуже класна, але є тіпи, які упорюються, і фігачать абстракції для банальних речей. Якщо в команді є прагматики і FP-пуристи — то буде біда.

Зазвичай народ на таких мовах часто більше випендрюється з можливостей мови, прокручуючи хитроумні конструкції , аніж вирішує практичну задачу,

Тут я трохи не згоден. Якщо взяти Haskell та його екосистему cabal, то вона, як на мене, не гірше за можливостями ніж python, а то і якісніше. Це при тому, що кількість контриб’ютерів відрізняється на порядки. Але так, більшість програмістів або занадто тупі, щоб працювати на такому рівні абстракції, або ліниві, щоб це освоїти.

Окрім Scala популярність набирають:
— F# якщо пишите на .Net
— OCaml захопив розум людей в твіттері
— Elixir для тих хто писав на Ruby

Питання кількості робочих місць

Elixir для тих хто писав на Ruby

Ем... А що між ними спільного, щоб досвід з однією чимось міг допомогти з іншою?

Ну це вже в стилі Чарльза Хоара та Ніклауса Вірта. Другий при житті сильно критикував таким чином С++ який він був змушений вивчати щоб допонти сину в навчанні, указавши, що там через С занадто багато «не потрібних» та шкідливих речей які проникли туди з Algol 68. По масі речей, там є здорова критика.
А так можете глянути на Ruby і побачити куди можна зайти з імперативним синтаксисом launchschool.com/...​ruby/read/loops_iterators
Тим не менше Scala знайшла нішу в BigData — Apache Spark, Play Framework і т.п. Тобто як спеціалісти вважають мову необхідним для володіння інструментом — виходить не так вже і переоцінена.

1,5 людини на бігдаті і 0.5 на плей це не ніша

Так в грошах треба міряти. Брокерів та Маклерів на біржі теж сильно меньше ніж слюсарів чи водіїв. Так для аутстафінга — напевно не рентабельно, навіть як брати по $120 на годину і вище, навідміну від Frontend/Backend.

Ну наприклад плей це також фронтенд/бекенд

якщо ви уважно читали оригінальний комент то там можна побачити що все сказане стосується ентерпрайза і скала як general purpose мови з обмовкою що можливо в ʼрокет саєнсіʼ/нішевих сегментах це і не так. ви наводите бігдата — ну так це і є ніша, можливо там і потрібен спеціалізований інструмент, я не компетентний щоб обговорювати бігдату так що пардон, нічого сказати не можу. там же було написано, що в цілому при докладені певних зусиль писати на скалі в фп стилі можна але не дуже є де. попита нема бо злі капіталісти не бачать особливої цінності в такому продвинутому інструменті. не дуже розумію як ви сюди вірта з критикою с++ притягли, на городі бузина в києві дядько. з приводу рубі і імперативності — ну так це straw man fallacy, ви приписали мені те чого я не казав і приводите аргумент проти вашого ж твердження, але я ніяк не означив своє ставлення до функціонального програмування як такого, окрім сарказму в останньому абзаці. якщо вам так буде зручніше я переформулюю в одне речення все сказане вище: я ОСОБИСТО вважаю що скала поганий і переоцінений вибір для ентерпрайз рішень оскільки переваг менше ніж недоліків. але якщо і цього мало і ви хочете обʼєктивності то ось вам ооцінка від світоча із скала тусовочки:

Scala is failing because it has not met the needs of industry. With Scala 3, it has taken many steps backward, lost the trust of many companies, contributors, and developers, and shows signs that it will not learn from these mistakes and will never prioritize industry over academia.

twitter.com/...​tatus/1654895956163264514

degoes.net/...​es/splendid-scala-journey

Я читав комент. Просто в мене розуміння трохи інше, воно відповідає індустрії. Справа в тому що як користувачеві так і бізнесу глибоко всерівно на якій мові програмування написаний той чи інший софт. Не однаково — який тип програм, під яку бізнес область пишеться і є відповідний професійний досвід в ІТ команди. У тих чи інших бізнес нішах є ті чи інші інструменти якими користуються переважна кількість спеціалістів, тому бізнес масштабується і спеціалісти в теорією є взаємозамінними (на практиці не факт, бо мова програмування то може процентів 30% максимум).
Якщо бізнес домен з математичної статистики та аналізу данних, для того що зветься по американські Business Intelligence та Big Data — так там Scala часто є домінуючою мовою програмування, крім якої ще треба володіти Apache Spark і що насправді важливо теоретичними знаннями з мат статистики та бізнесу і досвідом роботи.
А універсальна чи не універсальна мова за великим рахунком не має значення. Скажімо на С++ можна писати web застосунки, як серверну так і клієнтську частину через Web ASM — але дуже мало хто це робить. Так само ви можете програмувати на JavaScript / Type Script — але Node та Frontend це часто повністю різні спеціальності.

ви ще раз підтвердили що скала нішева мова яка має популярність в біг дата, я ще раз напишу що мені важко щось коментувати бо я далекий від біг дати. в 2016 скалу продавали як better java, в 2024 java is better java, kotlin успішно наздоганяє, а scala втратила цю частину ринку судячи з усього назавжди, залишившись нішевим інструментом. ви кажете скала годний інструмент для ваших задач, я вам вірю. за межами вашої ніші цей інструмент мʼяко кажучи уже не користується популярністю але все ще має фльор і репутацію чогось елітарного, але все менше і менше. ви можете звичайно думати так як ввжаєте за потрібне, мене мало обходить, що в інторнеті знову хтось не правий, обʼєктивна реальність від цього мало поміняється

Насправді скалу рекламують на моїй пам’яті з 2005, тоді коли особисто я почав вперше писати на Java 1.4 І відверто кажучи на той момент і справді Scala була значно продвинішою за Java, в якій не було ані дженерік тайпів, ані коваріант ретюрна, аутобоксінга, foreach циклів, потоки були файберами до версії 1.6, try with resource, multiple catch блоків, stream api і багато чого ще.
На сьогоднішній момент якщо порівнювати Scala та сучасну Java 21 long term — то швидше Scala менш функціональна. А починаючи з 8-ї Java усі пишуть у функціональному стилі, а я наприклад ще раніше почав через Guava. Крім того в Java та Spring через Aspect підтримується парадигма мета програмування, яка пришвидшує виробничисть праці програміста в десятків разів. Так — що скала так не стрельнула, як власне і Groovy бо Java дуже суттєво підтягнулась.
Разом з тим в 9-й версії частково зламали зворотню сумісність і по факту це перестало бути проблемою лише з 11-ю версією. А також політика Oracle і на сам перед судова тяжба з Google за Android дуже негативно вплинула на усю технологію. Google вже позбавляється Java де може, міняючи на : Kotlin, Node та Go lang. Це при тому, що технічно і мова програмування і платформа справді продвинулись далеко вперед.

1.

Насправді скалу рекламують на моїй пам’яті з 2005, тоді коли особисто я почав вперше писати на Java 1.4

Це голоcна заява. Оскільки Scala до ver. 2+ була реальне повільне R&D гівно і Scala 2 вишла 2006 (ref github.com/...​scala/releases/tag/v2.0.0, Mar 12, 2006).
Book «Programming in Scala, First Edition» published December 10, 2008 www.artima.com/pins1ed — ця книжка виштовхнула Scala в паблік.
Перший популярний фреймвор Lift запаблішили о 2007 році (In 2007, David founded the Lift Framework open source project, ref www.liftweb.net/team)

Що я хочу сказати — що дата дата 2005 рік дуже натягнути, хіба що ви в той час в EPFL в лабі з Мартіном ковбасили.

2.

На сьогоднішній момент якщо порівнювати Scala та сучасну Java 21 long term — то швидше Scala менш функціональна.

Ця заява настільки дивна, що капець. Навидіть аргуменіти, приклади, тощо.
Java (мова) по дизайну застрягла дуже глибоко в дупі і казати, що

Scala менш функціональна

без аргументації то є кріндж. Якщо взяти до уваги що всі «революційні» фічі Java Scala мала 10-15 років тому.

3.

Google вже позбавляється Java де може, міняючи на : Kotlin, Node та Go lang.

Воу воу. А це просто капець. Надайте офіційний лінк або щось вагоме, інсайдери кажуть інші речі

В цілому згоден, працюю в бігдаті зі скалою
Для спарку функціональщина типу ZIO, сats etc. не юзається,
скалу юзають як покращену версію джави і тільки тому що спарк на ній написаний
Але, з того що я бачу, зараз тенденція в бігдаті іде в сторону пайтона,
Бо, датасаєнс то майже завжди пайтон, а на скалі через спарк не зараниш пайтон ML моделі
+ в пайтона значно меньший попрог входу

З Tensoflow наприклад ви можете усе запустити на JVM та відповідно : Java, Scala, Groovy чи Kotlin — бо Google зробили інтерфейс — що потрібно було для Android.
Інша справа хто це буде робити? Якщо де факто більшість спеціалістів по роботі з ML використовують саме Python рідше C++ www.tensorflow.org/jvm/install
А взагалі то ML фреймверків для Java предостатньо, при чому з GPU акселерацією і т.п. Найвідоміший deeplearning4j.konduit.ai
Та візьміть будь яку книгу чи Tutorial з ML — там буде Python або MATLAB/OCaml (numpy власне з бібліотеки matlab і зроблений, програмісти би швидше використовували BLAS API) Поглиблення в штучний інтелект, каже що це не стільки про програмування скільки про прикладну математику.

так. кастомний імплісіт — то дупний біль. А ще можна згадати Акка з його анмаршалом. Або спроби зробити кастомний сервіс в Акка хатетепе.

Ти апелюєш до токсичності скала комʼюніті, в той же час твій комент і квінтесенцією хейтерства.

читайте уважно : я ПРОПУСКАЮ критику токсичності комʼюніті бо це уже було обговорено не раз в самому ж комʼюніті. я всього лише висказав свою приватну думку і вона може бути скільки завгодно токсичною і хейтерською, тому що цілком можливо я і є токсичний хейтер. а може і ні, вам з боку видніше. в останньому абзаці оригінального коменту виберіть те що більше підходить або додайте своє якщо бажаєте перейти на особистості.

Ото ти стелиш. Випий таблетки, заспокойся)

обовʼязково візьму до уваги ваше любʼязне побажання, дуже дякую за турботу.

Гарно написано, вам треба літературою займатися, або хоча б блог вести, популярність гарантовано.

Не згоден з вами:

> кожен перший мамкін функціональщік вважає своїм священним обовʼязком присунути в код макросом

В лібах має своє місце. Зазвичай вони малі, і їх можна зрозуміти. Але як часто ви заходити в код Хібернейту, Джанго чи Ктору? Якщо бібліотека написана легко для використання, і є притомний мануал — рідко. Так само можна сказати про рефлексію і Спрінг.
У Rust println макросом реалізований. І шо?

> якщо є більш прагматичні і практичні мови з нижчим порогом входу?

Постійно повторюю — як мова Scala простіше за Java.

> спробувати комерційно тєрєбонькати монади

На Скалі спокійно можна писати без знання що таке монада. Java, Rust, Kotlin — йдуть по шляху Scala, і додають фічі які в ній є. Ktor явно надихався Akka-Http. В Java з*являється паттерн матчінг і рекорди.

> пасани я одною строчкою зробив

Мені прикро, що вам попадалися такі люди на проектах. Код на Скалі рідко коротше коду на Котліні або Пітоні, а в більшості випадків такий самий. Я за 6 років Скали бачив таке тільки один раз.

> обʼєктами компаньйонами

Інша назва static. В Kotlin так само було.

У Скали є проблеми, але вони не на стільки жаливі, як ви описали.
Скільки часу програмували на Скалі? І у яких роках?

наведені вами аргументи резонні хоч і не з усім згоден, але менше з тим, не бачу сенсу сперечатись. повторюся — на обʼєктивність я і не претендував. розцінюйте як хочете.

якщо вам дійсно цікаво, то мій комерційний досвід, на щастся, короткий і недавній, залучений я був без згоди, просто поставлений перед фактом. якби він вимірювався в роках я, мабуть, за інерцією їв би кактус далі. а так з радістю його перервав з власного бажання. в основному через невідповідність затрачених зусиль до кількості потенційних вакансій. що б там не було, якщо є попит, то стулиш пиздак і будеш обмазуватись — погорював, запхнув ʼвкусовщінуʼ туди, де їй саме місце і працюєш. наркоманський синтаксис штука хоч і неприємна але другорядна і більше про звичку, а от щодо доцільності, то скала просто не може відповісти на одне єдине питання — ʼшоб шо?ʼ

ну да, якщо відкинути жовч і сміхуйочки, то всі описані казні єгипетські не варті прокуреного нігтя порівняно з головною проблемою. з відсутністю хоч якоїсь чіткої перспективи і місця на ринку, нішеві проекти з якоюсь крихітною часткою в базарний день це мимо каси. при чому це не те, що я придумав бо через власне хейтерство сплю і бачу як траурна процесія понесе флешку з дистрибутивом на кладовище в сусідню з Perl могилу, хтось буде плакати а всі інші ʼхором плюнуть на етого філінаʼ©. ні, питання висить в повітрі і між самих світочів скали ніякого особливого бачення нема та і судячи з усього не буде

Світочі Скали як раз говорять, що все добре. Хайп пройшов, ріст маленький, але стабільний і кожен рік. Джаву і Пітон навряд вдасться наздогнати будь-кому. Хіба що Раст займе нішу С++, десь у майбутньому, не точно.

Мені три вакансії Скали на Київ не подобається. Але дуже подобається компанія, в котрій працюю, і дуже не подобалось писати на Спрінг+Хібернейт. Бай зе вей, в нас наймають без досвіду Скали, аби той досвід був. Одиничні компанії готові піти на таке.

«Шоб шо» — оце дуже класне питання. Якщо розглядати програмування чисто як заробіток, з 9 до 5, то Скала точно не та мова. Це скорше для тих, хто шукає шляхи зробити свій код більш сек*юрним, кому подобається експерементувати, нові підходи в розробці, та й ФП вцілому. Треба визнати — не все спрацьовує як задумано. Акка, сбт — це перше що мені приходить в голову.
За усі інші мови, котрі йдуть цим шляхом, на жаль не платять, або не в наших широтах. Комерційні проекти на Хаскелі та Еліксирі існують. Є варіант писати вдень на Java за гроші, а по ночах на OCaml, такого багато на твічі. Закінчується зазвичай з появою сім*ї.

Ви знову повторили про «наркоманський синтаксис») Не імпортуйте cats. Це проблема між стільцем і клавіатурою. Команда заімпортувала — хай пише в описі вакансії, або вчить ньюкамера. Мова дозволяє робити страшні речі, with great power comes great responsibility :)
Найбільш слизькі місця виправили в Скала 3. Міграція простіша ніж в Пітоні, і частіше не про Скалу як таку.
Хороші штуки зі Скали тащать в інші мови, бо вони працюють, класні і зручні. Саме Скала показала, що це можливо зробити на JVM. Для Java ком*юніті ми лабораторія, котра перевіряє гіпотези. Для компаній — можливість об*єднати людей, котрим цікаво. А код за нас скоро і так буде писати ChatGPТ, по нашому опису і з нашим рев*ю :)

Я пишу цю довгу відповідь, оскільки бачу як вам було боляче. Зазвичай, такі яскраві описи швидко поширюються, а дописи кому подобається — ігнорують. Мені буде прикро, якщо ваш коментар відверне новачка, котрому могло сподобатись, але прочитавши, не наважиться навіть спробувати.

боляче це голосно сказано, ну да ладно

>Світочі Скали як раз говорять, що все добре. Хайп пройшов, ріст маленький, але стабільний і кожен рік
ага, і графіки показують як надої і процент жиров у маслі підріс. тільки по вакансіях(не тільки Київ) видно що ʼстабільність как на кладбіщєʼ. що їм ще казати? наташа, ми всьо уронілі? в 2016 у нас був пік хайпу і варіанти зайняти всю нішу jvm а зараз ми носимося з новим синтаксисом і фічами яких ніхто не просив, як дурень з цвяшком і не маємо куди це все приткнути?

> Якщо розглядати програмування чисто як заробіток, з 9 до 5, то Скала точно не та мова.
вот ето вот оно самоє, в кінці кінців всі рано чи пізно приходять до заробітку а поекспериментувати можна у свій вільний час з чим завгодно — хоч з скалою хоч з розфарбовуваням фігурок з вархамер.

>Хороші штуки зі Скали тащать в інші мови
this, в основному уже все необхідне витягли, прагматично адаптували і пішли далі

>Мені буде прикро, якщо ваш коментар відверне новачка
при трьох з половиною вакансіях на Київ навряд чи мій коментар зможе на щось суттєво вплинути, при таких розкладах новачки навряд чи будуть інвестувати у вивчення та і сумнівно що хтось буде зацікавлений цих самих новачків наймати.

в кінці кінців всі рано чи пізно приходять до заробітку а поекспериментувати можна у свій вільний час з чим завгодно

З такою логікою ми б всі зараз писали на Коболі)

якщо ви вже звели до абсурду, то я теж піднакину. ви так кажете кобол, як ніби це щось погане.

в якомусь сенсі так воно і є, правда замість кобола старпьорска java хоч і сильно підрихтована в стилі ʼстільно, модно, молодьожноʼ бо риночок вирішив так.

По джаві, згоджусь, але я не про це.

Не з’являлись би нові мови, і ринок поступово не змінювався. І як винайшли кобол, так би га ньому всі і писали. Там доречі нещодавно нова версія вийшла

ну це вже straw man fallacy, ваш аргумент проти вашого ж аргументу. я ніде не виступив противником нових мов чи їх появи. конкуренція завжди добре, в цю саму java завезли свіжих фіч саме за рахунок конкуренції, інакше не було б навіть восьмої версї.

усі мови, які використовують латиницю )

коли (на спектрумі) пробував програмувати ЕСЛИ ... ТО... ИНАЧЕ... тоді це було інтуїтивно зрозуміло... всім...

англійська — нерідна мова, інтуітивно незрозуміла

To brzmi dziwnie dla kazdego Polaka lub Czecha :)

formatirovat_eto_govno(’sudo rm -rf /’)

包 主

進口 備 "備"

函式 主() {
     備.印行("你好,世界!")
}

от і я про що... народ просто соромиться кирилиці... типовий комплекс меншовартості 🤔

Причому якщо навіть Китайці мають такий комплекс то що про нас казати

Ми орієнтуємося на західний ринок, йдемо в ЄС, де кирилиця сприймається як китайські ієрогліфи.

якби в країні була сотня програмістів, і вони б працювали у західних компаніях... питання б не було....

але зараз абсолютно інша ситуація...

Інформатику вивчають ледь не з першого класу...
ІТ вже кругом... у кожній хаті, у кожній кишені...

Тобто є величезний внутрішній ринок...

І от є більшість україномовних громадян, яким та латиниця нафіг не потрібна...

Є потреба у інтуїтивно зрозумілих мовах програмування...
ЯКЩО... ТО... ІНАКШЕ... і т.д.

Величезний внутрішній ринок — пан без гугля назве 5 успішних прибуткових(!!!) внутрішніх продуктів? Та 1с по великому рахунку ніхто не замінив і міняти не особливо і спішить 🤣

ms windows, office...
у всіх є ?
вони платні?
куди йдуть гроші?

А коли я пропустив той святий момент, що майки стали українською компанією 😅 Те що в Україні купили півтора ліцензійного офісу і віника ще не робить Україну великим ринком 🤣

1) на яку загальну суму українці купили ПЗ у 2021 році ? 🤔
(на всі операційні системи)

2) на яку суму могли б купити, якби те ПЗ було кращим ?

3) які суми українці витрачають на вивчення англійської мови ?
(починаючи з 1 класу...)

хіба це не гроші на вітер ?

Імпортозамєщєнієм повіяло 🤣 Ще треба обовʼязково свій скрєпний інтернет — як назвем ?
Ну і свіжішими даних не знайшов але якщо брати по 2% то ну ~30% ліцензія 😅 Ринок несеться стрімітєльним домкратом www.epravda.com.ua/...​18/09/19/640732/index.amp

даних не знайшов

якщо нема даних, як ти можеш щось стверджувати ? )

Ну то приведіть обʼєм ринку ПЗ раз ви такі впевнені, що він є ...

ну от приміром, я в цьому році витратив у гугл плеї гривень 200 мабуть...

Java, явно переоцінена. Притому багато Java продуктів подаються наче всі мають розумітись на Java-термінології, і їх девайси входять до того мільярду, який може запускати Java

В че що за девайс який «не може запускати Java» ? Інша справа — що скажімо Apple просто не допустить до App Store, щось що зроблено не на їх технологіях і не по їх специфікаціях. Умовно як не Swift чи в крайньому випадку якийсь React Native — фіг тобі, а не бізнес. З цим треба рахуватись.

Мені здається шо навпаки, джава як раз топ за свої гроші. А от все що було створено за останню декаду-дві — просто хайпово переоцінені мови

На яких ще мовах ви програмували, з чим порівнюєте?

На java написано багато ентерпрайзу це був дефакто стандарт — гадаєте ті хто обирали java помилялись і потрібно було вибрати щось інше?

Чи можете пояснити/аргументувати?
На Java написано величезну кількість бібліотек/фреймворків/інструментів, які були потім портовані на інши мови/платформи.
Не було б Java — у нас був би бідніший інструментарій.

Java популярна не тому що така прекрасна мова, а тому що в неї влили величезну кількість грошей. І якщо вже чесно, то більшість ліб/фреймів з’явилося не від кращого життя, а більшість все ж портували га Джаву, а не навпаки. Якщо цікаво, можу аргументувати

Загально відомою переоціненою мовою виявився Algol 68 — комітет який мав створити стандарт зі спрощеної мови, натомість зробив занадто складну бо в мову додавали усе нові фітчі на вимогу різних членів великого комітету. Але окремі члени комітету — Чарльз Хоар та Ніклаус Вірт не згодні з методами роботи комітети, зробили «стартап» групу і створили саме спрощений варіант відому як Pascal.
«There are only two kinds of languages: the ones people complain about and the ones nobody uses» Bjarne Stroustrup

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

Там по факту не те щоби фігня, просто мова зроблена під потреби конкретної компанії і власне вони багато в чому будуть ідентичними з будь яким інтернет гігантом. Перше — прибрали ексепшени, друге прибрали потоки, третє прибрали поліморфізм, четверте прибрали ручне керування пам’яттю. Тобто вирішили вирішувати проблеми в яких статистично виникає максимальна кількість балів через помилку програміста — шляхом де комісії такої можливості з мови. Отримали мову меньше універсальну скажімо за Java чи С++, помірно великою трудоємкістю програмування і додатковими накладними тратами в бінарному коді. Натомість меньше вірогідність виникнення помилок, які власне можуть виявляти санітайзери.

Мені здається, то просто непогане нішеве рішення, яке розпочали пихати всюди куди ні лінь

Співавтор мови Брайан Керніган в інтервью DOU dou.ua/...​kernighan-on-programming зазначив, що мета зробити мову на заміну С++ занадто амбітна. Лише у самого Googlе до 10 мільйонів строк коду на С++ і ніхто їх не буде переписувати лише з ціллю переписати.
Тим не меньше Docker та Kubernetes написані на Go Lang. Хоча деякі частини як то crun — клон підсистеми runc показують, що в деяких речах як то ядра систем критичні по performance краще писати саме на С і оптимізувати, бо перевага може бути в 20 разів. Разом з тим усе інше, де важлива скоріше швидкість розробки не так вже і принципово — Go, Rust, D або Java, C# чи навіть Perl, Ruby, Python, Ocaml, Lua і т.п.
Трудомісткість програмування на С доволі велика, на С++ звісно краще і як на мене приблизно одне і те саме за : Go, Rust та D. Суттєво гірше за Java та С# або JavaScript/TypeScript.

Лише у самого Googlе до 10 мільйонів строк коду на С++ і ніхто їх не буде переписувати лише з ціллю переписати.

Нема проблем, якщо можна переходити по частинах.

І хто сказав, що у гугла C++? У них «C++ без винятків без RTTI» (і ще без багато чого давно є в C++11 і пізніше).

ише у самого Googlе до 10 мільйонів строк коду на С++ і ніхто їх не буде переписувати лише з ціллю переписати.

В одном только хромиуме 12 млн линий плюсов.
gist.github.com/...​d18f571#file-chromium-scc

Який інструмент є переоціненим — обценьки, ножівка по металу чи може хрестова викрутка? І чому саме він?

Хрестова викрутка.
Torx об’єктивно кращій за Phillips

А хрест свого часу був кращим за плаский шліц. Але ж backward compatibility і у фізичному світі ніхто не відміняв.

Так з’явився Pozidriv який кращий за філіпс. Хоча краще б його не було, бо всі його крутять філіпсом, а якщо його крутити філіпсом — то він гірший ніж філіпс. Так і живем.

Теж зривається часом :-)

От в слюсарних роботах цієї проблеми немає,
тоді, коли в «IT» це часто: обценьки — це тепер наш корпоративний інструмент! Він зручний для користування для початківців, багато хто його тримав в руках, тому ми використовуватимемо його для забивання цвяхів, закручування (або також забивання) шурупів, відкручування гайок (й не дай боже хтось візьме динамометричний ключ для того, щоб затягти гайку з потрібним моментом — ні-ні (то страшний, небезпечний інструмент, яким мало хто знає як користуватися (й дорогий до того ж)

От в слюсарних роботах цієї проблеми немає

В слюсарній справі все рівно так, як Ви описали. І закручують, і забивають ... і мікрометра можуть замість струбцинки використати.

Кухонний ніж в руках «майстра» є переоціненим, бо він може замінити всіх

обценьки, ножівка по металу чи може хрестова викрутка

«А когось ніяк не може переконати велика кількість недоліків PHP» — Хотілося б почути про цю велику кількість недоліків, бо поки ви мене не переконали, а лише кинули слова на вітер.

Але для того, щоб був конструктив у моєму коментарі, викладу кілька пунктів, які для мене важливі при виборі мови, і це стосуватиметься лише комерційної розробки:

0. Сфера застосування
1. Парадигма програмування, рівень абстракції, синтаксис
2. Спільнота та стабільна екосистема
3. Легкість навчання та доступність розробників
4. Масштабування та обслуговуваність

Ну і звичайно, якщо ви спочатку не забустрапите MVP на кількох мовах, які на вашу думку вам підходять, не протестуєте і не проведете бенчмаркінг того, що вийшло, не оціните кількість boilerplate коду,
тоді рано чи пізно в вашій голові з’явиться ідея, що дана мова «переоцінена».

Недоліки насправді є
0. Слабка типізація, що навіть призвело до виникнення над язиків типу Huck аля TypeScript
1. Обробка запитів виключно в моделі — один запит один потік, складності в підтримці і ціни підтримки високо-навантажених сайтів
2. Securuty — треба чітке налаштування
3. Performance — до 7 версії включно усе не дуже і по CPU і по RAM, хоча на рівні Node.
4. Не оптимальний дизайн багато legacy конструкцій
Переваги
0. Низький поріг входу
1. Доступність LAMP стеку і низка ціна володіння
2. Обширна екосистема
3. Велике суспільство розробників, багато якісних і усяких курсів і навчальних матеріалів
4. Заворотня сумісність, ніяких Python 2 та Python 3 чи Java 9 проблем.

4. Заворотня сумісність, ніяких Python 2 та Python 3 чи Java 9 проблем.

А-ха-ха-ха..... шутнік
Звичайно, що ніяких проблем типу Python 2 і 3, бо у PHP своя фішка — там навіть мінорні версії можуть мати зворотні несумісності

складності в підтримці і ціни підтримки високо-навантажених сайтів

саме тому купа хайлад сайтів на РНР, і в цілому значна більшість сайтів в світі на РНР (дякуючи вордпресику в тому числі нажаль)

в тому числі адалт/афілейтки всякі трафіко продавалки/рекламні мережі — де трафіку в ХХХХХ разів більше ніж на нікому не потрібному корпоративному блозі який переводять на суперПуперНекстРюакт в пориві опитмізації ХЗ чого і для чого =)

ось вам вакансії світової адалт імперії aylo.com/...​nt&location=All Locations

РНР і ларавелька (з сімфи доречі я так зрозумів вони мувнулись на ларавельку)

p.s. ніколи в адалті не працював — і вам не раджу.
Але вивчати стеки/підходи цікаво бо там таки трафіку ого-го.
Взагалі майже все в вебі рухалось з і для ціеї сірої тематики =)

ціни підтримки РНР коду значно дешевше ніж інших — банально через ціну і кількість спеціалістів

а інфра — так в кінечному ітозі все упрется в базу чи ще в щось

є купа сайтів які працють рокам на РНР5 і ок -)
якщо розробники тоді були адекватними то проекти працють покім роками і ніяка секюріті муха їх не куса )

Ну в навантажених проектів з рештою проблеми з PHP. Facebook взагалі пишуть власний діалект, який замість інтерпретації спочатку компілюється в код на С++, а потім вже з нього роблять бінарники. Як на мене це вже костилі та ізврат максимального рівня, хоча зрозуміло нащо такі костилі — величезна кодова база з якоюсь треба щось робити бо обладнання коштує силену грошей. Нічого не чув про власні компілятори з Java в С++ у : Amazon, Ebay та інших. Єдині хто усе на Go lang, Node та Kotlin міняють, це Google і усі знають чому, бо Oracle з них хоче бабла.
Так усе відносно — напевно для старту власного інтернет проекту для початку найбільш розумний вибір саме LAMP стек. Умовно взяв — WordPress, Drupal чи Joomla і швидко отримав результат, відносно дуже дешево. І до тих пір доки не пішли десятки тисяч запитів в секунду — а як казав Гай Кавасакі «Це дуже класно коли в стартапі взагалі виникли проблеми масштабування — бо я чудово знаю, що робити з цим, у більшості стартапів така проблема взагалі ніколи не виникає цього добитись с точки зору бізнесу вкрай не просто», ніяких проблем нема.
А так навіть у e Commerce Tier 2 — хто до нех доріс — ту саму Magento наприклад чи самописне щось на PHP, змушено міняють на Java — бо не тримає воно навантаження і не розширюється з купою інтеграцій, яких може бути 80 і більше.

В будь якому навантаженому проекті ви в щось та упретесь рано чи пізно, і будете розвязувати цікаві інжинерні задачі.
Але до того ще тре дожити — дай боже щоб 1 з 10 проектів які «мали стати лідером ринку» до цього доживали.

В більшості випадків веб-у кешування/редіси/еластіки/оптимізація роботи з БД вам допоможе.
Сам же РНР і аплікейшн ноди чудово скейлятся і при нормальній архітектури проблема в РНР в вас буде останьою в беклозі.
Ціна заліза/клаудів наразі не така і дорога наразі.

А так навіть у e Commerce Tier 2 — хто до нех доріс — ту саму Magento наприклад чи самописне щось на PHP, змушено міняють на Java

Розетка на РНР якщо не помилюсь, і он навіть марки продавати виходило з рузьким военним короблем який йде.... ))

Magento

— ну тут самі винні =)

Та ХЗ, такі рішення по технологіям зазвичай приймають на рівні CTO, а часто і CEO. І дуже часто логіка відмінна від розуміння програмістів з процесу, логіка бізнесу зовсім інша. Той самий Magento наприклад — просто класно Sales Adobe по працювали, комісійні і т.п. — от у людей і стоїть воно. Потім міняють і не факт насправді, тому що дійсно є якість технічні проблеми, а не бізнес так вирішив бо наприклад задовбало, що їх на паровозики з ліцензійних виплат запустили і почали сосати суттєві гроші. Або хтось прочитав — що AWS і мікросервіси то стильно, модно молодіжно і вмовив стекхолдерів вкластись і т.д. Тобто дуже добре по працювали сейли Amazon. Та часто справді так і є — що система застрягає архітектурно і не може вирішити проблеми підтримкі бізнесу, через ліміти технології. Ті самі розробники розетки — часто жалілись, що не можуть реалізувати через брак можливостей технології половину того, що бажали би дизайнери та бізнес. Щоправда в більшості випадків вони жалілись на можливості браузера ніж серверної частини.

Rozetka юзаэ Terrasoft/Creatio які дотнет та JS, якщо не помиляюсь :)

Майже кожна мова/технологія коли її вкручують на хвилі хайпу/трендів бездумно аби було про що на кофі розказати «як ми переходили на nextRuGoove.BET =)»
може не дати і близько того що від неї очікувалось і як її продавали.

Технології як вино — мають настоятись.
А молоде вино може бити в голову, може стати шедевром, а може бути оцетом =)
і доведется вилити всю партію

Жаваскріптери, заплющіть очі...
JavaScript

жаваскріпт він як один ес — шо ж дєлать, як альтернатив немає?

Тут є пропозиції навіть із реалізацією — WEB ASM та писати на Java, мові яка від початку зроблена під байткод, аплети та віртуальну машину. Див teavm.org

Коли ми розмовляємо про переоціненість, то виникає питання очікувань. І тут різні очікування, різні оцінки. Тому як на мне питання немає сенсу взагалі.

Я би скоріше виділив клас ширпотребних мов програмування типа Python, C#, Java, які використовуються широко, і туди намагається запихнути незапіхуєме. То великих очікуваннь від них особливо у мене немає, тому і переоцінити важко.

дотнет. що не відео як хтось когось б’є — то це виявляється дотнетчик з дніпра. Дотнет руйнує мізки!
ченж май майнд.

Помніцца з Дніпра прославилась саме «команда рубістів», бачу не рубі єдиним 😂 Багатогранне місто багате талантами ...🤣
(записує ніколи більше в Дніпро ні ногою)

прославилась саме «команда рубістів», бачу не рубі єдиним

Просто вони наголос в «рубі» ставлять на останній склад ;)

Після того як побачив їхній Dependency Injection, подумав що за всрата чорна магія і закинув ідею освоїти .net

що там складного? Singleton vs Scoped vs Transient?

А до чого тут .NET ? Шаблони то однакові за авторством Джошуа Блоха і команди, там від мови воно не дуже то в залежить. Залежності інжектяться із загальної шини через — проперті, конструктори або фабрики. От де справжня чорна магія — це коли C# має COM інтерфейси, тобто виглядає якось незрозуміло. Та якщо порівнювати скажімо із JNI в Java — так набагато краще зроблено. Разом з тим в Linux це вже не працюватиме.

Python — взагалі не такий простий як розказують, чим далі — тим більше треба вникати не в особливості технологій, а в особливості їх використання самою мовою. До того ж кошмарний перформанс. Є круті ферймворки, але де плюсисаме пайтона?

Python максимально універсальний і на ньому можна буквально все від написання скраперів до ШІ.
Він не простий? Тут важко взагалі визначити що просто а що складно.
Скажімо так — Python можна використовувати на будь-якому рівні знань. Щоб написати парсер сайту тобі не обов’язково взагалі нічого вчити крім синтаксису та відповідного скраперу і заробиш першу сотню баксів на фрілансі.
Це дуже класна тулза через свою універсальність. Я ніколи не працював із Python на професійному рівні і навіть зараз пишучи в основному на GO я час від часу юзаю Python просто тому що на ньому зручно та швидко можна зробити ту чи іншу штуку

Python максимально універсальний

Так і С, C++ або Java теж. Насправді головна перевага Python — він дуже високорівневий, тобто потенційно можна концентруватись саме на вирішенні прикладної задачі, а не деталях реалізації структур даних алгоритмів і т.д. На практиці от наприклад перший рядок з туторіла PyToch
# Get cpu, gpu or mps device for training. device = (     "cuda"     if torch.cuda.is_available()     else "mps"     if torch.backends.mps.is_available()     else "cpu" )
Це навіть не С, це Assembler конструкція.

Ну... якщо ми беремо мову програмування з динамічними типами, то альтернатив у Python не дуже й багато, наприклад JS, PHP. Ну Ruby, і в принципі у порівнянні з цими мовами екосистема як раз плюс Python.

Я більше ніж впевнений, що за усю історію програмування можна знайти сотні динамічних мов. А за вихідні я можу легко написати ще одну. Цікаві мови хоч з якоюсь екосистемою, щоб перша задача не зводилася до написання розширення на Сі :-)

До того ж кошмарний перформанс. Є круті ферймворки, але де плюсисаме пайтона?

Так і бачу, пацанам в SV інвестори насипали бабла на новий стартап (бекенд для вебу та мобілок), а вони такі — хмм, давайте будемо пиляти бекенд на плюсах чи джаві замість ядра на Django/DRF та з мікросервісами на орбіті на FastAPI.

Універсальність пайтона в тому, що на ньому швидко реалізуються бізнес задачі продакшн-рівня в максимально короткі строки через наявність дорослих фрейморків, на котрих крутиться багато стартапів чи компаній в Каліфорнії (Instagram, Venmo, Lyft, Netflix, Uber, Reddit, багато чого в Cisco, Juniper Networks etc.).

На пайтоні надзвичайно просто та легко писати обєктно-орієнтований код. Також пайтон має купу фрейморків для роботи в сфері мереж та кібербезпеки і пайтон там надзвичайно популярний.

1C І навіть не тому що русня. Відверто не розумію що люди роблять у цьому болоті. Максимально закрита платформа із повністю із нуля створеними кривими велосипедами. Там наприклад навіть git не можна юзати (ну добре, можна, але це дуже не зручно) і є своя система контролю версій.

Довелося працювати в локдаун на 1с після скорочення, пішла куди взяли. Виникало питання, лізеш в ком’юніті, а там в конкретному технічному питанні йшла розбірка «хто так пише, ти клоун і місце тобі в цирку» (натурально, так і писали). Коли ситуація покращилася, повернулася в свою рідну мову програмування з прекрасним ком’юніті, stack overflow, купою відео та книжок.

О да, токсичність дуже притаманна усім створеним руснею комьюніті

один ес створювалася коли? коли в тренді був делфі з його «гдє скачать компоненту штоби к серверу подключитца»
до приходу моди на відкритість ще лишалося років двадцять.
І я думаю (бо читати мені, звісно, лінь) що руський язик там був з тою ж ціллю, що і англійська в sql — «от буде бугалтеру нада щось, а вона раз і написала сама собі отчот»
А велосипеди з’являться в будь-якій системі, що не може собі дозволити стояти на місці, уви.

Особисто я увожав кількох знайомих, що писали міграції даних і переробляли конфігурацію умовного горгазу, не маючи під руками бд для тестів. Я б засцяв по живому краяти і взагалі працювати без даних.

він вже N раз переписувався.

Це питання може бути не коректним, оскільки оцінка мов програмування є суб’єктивною та залежить від контексту, проекту, вимог і навичок програміста. Кожна мова має свої сильні та слабкі сторони, і те, що може бути переоціненим для одного проекту, може бути ідеальним для іншого.

те, що може бути переоціненим для одного проекту, може бути ідеальним для іншого.

Так, але є мови, для яких ви навряд знайдете «ідеальний» проект зараз. Як то

— Cobol
— Basic
— PL/I

Колись вони були популярні, але зараз вже очевидно, що вони були переоцінені.

ви будете здивовані але такі проєкти є, і за них огого як плалять))))

Підписатись на коментарі