LINUX.ORG.RU

О бедном Crystal замолвите слово

 , , ,


2

7

Рассматриваю варианты на замену Go для личного проекта. Сообществом Crystal высказывается мнение, что он то как раз на эту роль и годится, во всём превосходит первый и незаслуженно обделён вниманием (это же слышу от апологетов Nim). Go, конечно, куц и по возможности я бы предпочёл не популяризировать посредственный ЯП, если есть варианты. На Ruby никогда не писал, но после беглого ознакомления некоторые элементы заходят. Кто заглядывал под хвосткапот этому Crystal? Там всё серъёзно или я-его-сварила-из-того-что-было, как в V?



Последнее исправление: Rabinovich (всего исправлений: 1)
Ответ на: комментарий от asdpm

не понял тебя: в сфере разработки десктопного гуи решения основанные на java были замещены html/js потому что что? потому что первые были архитектурно неудачны?

Потому что Java изначально спроектирована эффективными менеджерами, а не способными архитекторами. Результат получился настолько плохим, что даже несмотря на огромные затраченные ресурсы (был один год, когда Sun потратил полмиллиарда на раскрутку жавы) этот калечь толком не взлетел и при любой возможности от него отказываются.

Можно долго спорить системах выравнивания контролах, наличия/отсутствия возможности низкоуровневого кодописания, но для средней арифметической конторы нанять людей и написать убогую софтину на HTML намного проще, чем сделать то же самое, скажем, на JavaFX. Да, можно спорить о том, что придется заставлять пользователя запускать огромный браузер, но не то чтобы JVM сильно отставала от хрома по ресурсожоркости (еще одно следствие плохой архитектуры жавы).

Да, alex0x08 напишет, что это сраные индусы, вот если бы они хотя бы 5 лет поучились писать на жаве. то могли бы спокойно написать простенькое приложение за сроки, сравнимые с релизом на Electron, но мы же понимаем, что «мы никуда не спешим и бюджет у нас резиновый» — это не про среднюю контору.

По итогу я пользуюсь приложениями на электроне, пользуюсь поделками на гтк и куте, даже НА ПИТОНЕ пишут гуй, но у меня нет ни одного приложения на жаве. У меня даже рантайма жавы не стоит. Поймите меня правильно: я не пытаюсь избегать всего жавового софта, я ставил себе ту же Android Studio, когда мне нужно было адаптировать софт под андроид, но софта под жаву реально МАЛО.

$ apt-cache rdepends default-jre | grep -v lib | grep -v python | wc -l
177
$ apt-cache rdepends python3 | grep -v lib | grep -v python | wc -l
937
apt-cache rdepends libqt5core5a | grep -v lib | grep -v python | wc -l
1316
apt-cache rdepends libgtk-3-0 | grep -v lib | grep -v python | wc -l
944

Справедливости ради, кросплатформенного софта на GTK тоже мало (поскольку GTK на самом деле не кроссплатформенный).

byko3y ★★★★
()
Ответ на: комментарий от alex0x08

Теперь объясняю отличие между IDE и текстовым редактором с дополнениями которые ты любезно описал

А я объясню, что в свое время я участвовал в разработке гномового Anjuta, и с тех пор заработал такую аллергию на IDE, что даже в Delphi разрабатывал GUI в текстовом редакторе вместо WYSIWYG. И я могу обосновать свою позицию с позиции человека, который был по обе стороны баррикад, а не просто пришел с вопросом «где у вас тут шморгалка, как на моей Идее?».

Основная проблема IDE в том, что они НЕГИБКИЕ, то есть, она умеет работать только в строгом соответствии с какой-то моделью разработки, код должен написан в ожидаемом стиле, потому что если этого не будет, IDE начнет творить какую-то херню. Средний кода на Java, особенно старых версий, выглядит как машиногенерированный текст, и именно поэтому легко поддается парсингу/модификации через IDE. Однако, основная задача ЯП — это быть легко читаемым и легко писаемым человеком, и эту задачу Java с треском провалила.

Когда же код становится ближе к человеку, то выясняется, что человек любит писать ПО РАЗНОМУ, однотипные выражения он старается записывать концентрировано, вплоть до создания DSL доступными в ЯП средствами (например, это штатно можно сделать в C/C++ и Python). И тогда внезапно получается что инструменты анализа и рефакторинга кода превращаются в тыкву, а остаются лишь полуавтоматические анализаторы (которые требуют помощи человека) и инструменты редактирования голого текста (тоже полуавтоматика). То есть

Неиспользуемые классы и методы, неверная реализация и подсветка проблемных мест, CVE в конце концов.

В достаточно сложном проекте на НЕ-Java это не работает ни на одной IDE.

byko3y ★★★★
()
Ответ на: комментарий от alex0x08

Я выше по пунктам перечислил что именно было в нормальных средах и чего не было в студии. Есть что добавить?

У него к тебе претензия только по поводу формулировки «VS — простой текстовой редактор», что, очевидно, не так. В остальном я могу лишь согласиться, что если кому-то нужны были перечисленные тобой фичи — в Visual Studio их не было.

byko3y ★★★★
()
Ответ на: комментарий от alex0x08

Что вам надо наконец повзрослеть, осознать предел собственных сил и возможностей, осознать что мир и природу вещей вам не изменить. Ну и наконец обрести покой и просто заниматься любимым делом

От этого премьера не перестанет жрать память и глючить.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

код должен написан в ожидаемом стиле

Именно так и должно быть в любом нормальном проекте, не поверишь. Полагаю когда ты участвовал в разработке Anjuta то точно также соблюдал местные «stying guidelines» и «code conventions».

Когда же код становится ближе к человеку, то выясняется, что человек любит писать ПО РАЗНОМУ, однотипные выражения он старается записывать концентрировано, вплоть до создания DSL доступными в ЯП средствами

То что код мало написать, его еще потом надо будет многократно читать, причем другим людям - следующая стадия понимания на пути к просвящению.

Уровнем выше начинается осознание что допустимо даже локальное дублирование кода, ради изоляции модуля например. Но это пока рано, не осмыслишь и будешь спорить.

Неиспользуемые классы и методы, неверная реализация и подсветка проблемных мест, CVE в конце концов. В достаточно сложном проекте на НЕ-Java это не работает ни на одной IDE.

Работает работает, Node.js/.NET как минимум, скорее всего уже и в Golang завезли. Это мейнстрим и направление движения сейчас.

alex0x08 ★★★
()
Ответ на: комментарий от byko3y

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

написать убогую софтину на HTML намного проще, чем сделать то же самое, скажем, на JavaFX.

понятно.

мой небольшой опыт написания убогих софтин говорит о том, что написать гуи на любом инструменте, называющим себя тулкитом (winforms, fx, pyside) примерно в один миллиард раз проще чем на html+css+js. качество софтины при этом в один миллиард раз выше чем у html+css+js.

asdpm
()
Ответ на: комментарий от byko3y


в сфере разработки десктопного гуи решения основанные на java были замещены html/js потому что что?


Потому что Java изначально спроектирована эффективными менеджерами, а не способными архитекторами. Результат получился настолько плохим, что даже несмотря на огромные затраченные ресурсы (был один год, когда Sun потратил полмиллиарда на раскрутку жавы) этот калечь толком не взлетел и при любой возможности от него отказываются.

я бы понял, если бы ты, например, сказал, что в отличие о Java, JavaScript - это язык который спроектирован хорошо. его семантика, принципы гармоничны и поэтому хорошо воспринимаются и порождают соответствующую ментальную модель. его стандартная библиотека богата, имеет высокое качество, хорошо документирована. на высоком уровне поддержано многопоточное программирование. что до разработки интерфейсов, то для этого был разработан toolkit «html».

но ты ведь и этого не говоришь.

asdpm
()
Ответ на: комментарий от alex0x08

Именно так и должно быть в любом нормальном проекте, не поверишь. Полагаю когда ты участвовал в разработке Anjuta то точно также соблюдал местные «stying guidelines» и «code conventions»

Речь не про «местные», а про «все должны делать отступы пробелами.... потому что потому» или «определение переменных должно располагаться перед функциями». Есть еще сотни более тонких вещей плана «эти функции не вызывай» или «эти операторы с этими типами не используй», потому что получишь кучу предупреждений по порожняку, а если отключих предупреждения, то они не помогут уже там, где были нужны.

То что код мало написать, его еще потом надо будет многократно читать, причем другим людям - следующая стадия понимания на пути к просвящению

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

Уровнем выше начинается осознание что допустимо даже локальное дублирование кода, ради изоляции модуля например

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

Неиспользуемые классы и методы, неверная реализация и подсветка проблемных мест, CVE в конце концов. В достаточно сложном проекте на НЕ-Java это не работает ни на одной IDE.

Работает работает, Node.js/.NET как минимум, скорее всего уже и в Golang завезли. Это мейнстрим и направление движения сейчас.

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

Конечно, если ты имел в виду TypeScript (а тогда стоило это явно указывать), то да, там получче ситуация, но не сильно, поскольку там уже сама система типов морочит голову.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

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

Подозреваю, что проблема тут совсем не в линтере %)

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от asdpm

мой небольшой опыт написания убогих софтин говорит о том, что написать гуи на любом инструменте, называющим себя тулкитом (winforms, fx, pyside) примерно в один миллиард раз проще чем на html+css+js. качество софтины при этом в один миллиард раз выше чем у html+css+js

Мне кажется, что ты делал что-то не то, поскольку действительно просто писать на электроне только с готовыми виджетами, то есть, никакого html+css+js там нет, ты настраиваешь только свойства готовых элементов и прописываешь обработчики, прямо как в гуишных тулкитах. Проще только WYSIWYG среды, где прямо мышкой лепишь окошки.

И да, я имел опыт писания на html+css+js, это очень тяжело с учетом огромного числа слоев совместимости, накопившегося за годы, но делать это для быстрописания проектов смысла нет, примерно как нет смысла в писании GUI на одном только win32 API, через прямое создание окошечек, указание оконных процедур руками, и прочего, прочего, прочего — это сложно и не нужно.

byko3y ★★★★
()
Ответ на: комментарий от asdpm

я бы понял, если бы ты, например, сказал, что в отличие о Java, JavaScript - это язык который спроектирован хорошо

JS — такой же кусок дерьма, он там не играет большой роли. Electron используют ради Chromium, в частности, движка V8, а не ради JS самого по себе. Проблема возникла от того, что Java — такой же кусок дерьма, как JS, потому выраженного преимущества у него нет, особенно в свете продвижения статической типизации через TypeScript.

byko3y ★★★★
()
Ответ на: комментарий от Nervous

Подозреваю, что проблема тут совсем не в линтере

Он очень тупорылый. Нужно понимать, что в чистом JS очень тяжело делать какие-то выводы про логическую корректность кода, по-хорошему не нужно даже пытаться это делать, но, тем не менее, линтеры пытаются. Линтер изначально Дуглас Крокфорд писал для ровно одной цели — бить линейкой по рукам за использование опасных фич JavaScript, которых, по-хорошему, вообще не должно было быть в языке, но они есть и никуда не денутся, потому что совместимость. Но комунити потянуло вообще не туда, оно захотело, чтобы линтер чуть ли не сам за тебя код писал.

byko3y ★★★★
()
Последнее исправление: byko3y (всего исправлений: 1)
Ответ на: комментарий от asdpm

VS более чем соответствовала понятию IDE в середине двухтысячных (а не в 2015), была как минимум on-par с другими IDE

Я не знаком с VS и .NET как платформой, но много работал Java кодером в Eclipse. Краем уха наслышал что в VS многих фишек просто не было.

  1. Навигация по .net classpath в VS появилась наверное после 2015 года? Может это бред?
    Короче как давно в VS стало возможным просто ходить дебаггером не только по своему коду, но и по тем же стандартным коллекциям .net или по коду third-party библиотеки?

  2. Еще наслышан что в VS не было hotswap code replacment, когда можно менять код/логику без перезапуска приложения. После изменений класс фоном перекомпилировался и подкладывался в рантайм.

Это все было в Java даже 12 лет назад, когда именно стало доступным не знаю.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от byko3y

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

Вот так показательно наезжать на самые популярные языки и решения - удел детей, которые только вкатываются в профессию. Смешно читать вообщем.

alex0x08 ★★★
()
Ответ на: комментарий от Aber

ходить дебаггером не только по своему коду, но и по тем же стандартным коллекциям .net

в середине конце 2000-х я наблюдал за этим только со стороны, поэтому ответить достоверно не могу. вообще считаю, что этот вот конкретный вопрос не имеет большого значения при рассмотрении VS как IDE. кроме того, в те времена стандартная библиотека .net была закрыта, може быть была возможность ходить дебаггером по IL или по «декомпилированному» коду, не знаю.

asdpm
()
Ответ на: комментарий от asdpm

в середине конце 2000-х я наблюдал за этим только со стороны,

Я говорю про 2015 год.

не имеет большого значения при рассмотрении VS как IDE

В Java я кучу времени провел по хождению по classpath сторонних подключенных бибилиотек, я работал кодером с 2007 года, тогда же я начал использовать Eclipse и я даже не задумывался как бывает иначе.
И вот десятилетие спустя я от кого-то услышал что в VS вроде ходить можно было только по коду своего проекта, но не в сторонние библиотеки. Типа это фишка последних лет. И я думаю может это бред был сказан а я повелся?

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 2)
Ответ на: комментарий от byko3y

Java — такой же кусок дерьма, как JS

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

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

asdpm
()
Ответ на: комментарий от Aber

Еще одну фишку нашел, оказывается code coverage появился в VS2015 и только в Enterprise.

А вот в бесплатной Eclipse code coverage уже давно использовался. Этак в 2012 году в фирме где я работал PM заморочился поднять code coverage тестами до 80% и приходилось следить, все ли основные ветвления покрыты.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от asdpm

Я нагуглил, дебажить ASP.NET в рамках своего проекта стало можно только с Visual Studio 2017. В 2015 тоже можно, но там целая эпопея. Надо ли говорить что это все уже давно было в Eclipse, я думаю он тут опередил VS лет на 5.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 2)
Ответ на: комментарий от alex0x08

В 2015м просто видимо произошло озарение и начался процесс, но даже на 2023й год студия выглядит убого по сравнению с Java средами.

Я после текущего исследования тоже пришел к выводу что в 2015 году они решили наконец сделать из своего редактора IDE. Оказывается там кучи фишек не было.
Правда нужно взглянуть что там было с ReSharper, может он делал из VS современную IDE.

Aber ★★★★★
()
Ответ на: комментарий от Aber

VSCode это большая победа Microsoft, поскольку он стал платформой для наверное всех современных «Web-based» редакторов кода, вроде ShaderToy

Но блин это не полноценная современная IDE. Хотя это не совсем тот форум где такое интересно изучать.

alex0x08 ★★★
()
Ответ на: комментарий от asdpm

VIM это редактор из которого делают IDE, VS до 2015 года был просто редактором с поддержкой AST некоторых языков и дебаггером.
Я привел факты которые указывают насколько VS до 2015 года уступал Eclipse 2010-2012 года, а именно три пункта:

  1. Нет навигации по исходникам подключенных библиотек.
  2. Нет code coverage.
  3. Нет code hotswap reload.

P.S. VSCode мне нравится, пользуюсь для ts на frontend, и для заметок в markdown+katex. Для backend я сейчас пользуюсь Idea, к сожалению Eclipse мне очень разочаровал и в 2017 я с него ушел.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от Aber

VS до 2015 года был просто редактором

ты с этим просто-редактор-тупаком поднадоел. пойди выясни для себя что значит IDE и прочитай, что уже присутствовало в VS сто лет назад.

asdpm
()
Ответ на: комментарий от alex0x08

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

У меня незакрытый гештальт по поводу того, что с проблемами можно что-то сделать и есть пути, но по тем или иным причинам не получается. И претензии у меня таки в основном к проблемам, вызванным не просто «хочу чтобы инструмент из коробки идеально подходил моей сегодняшней задаче», а вызваным тупостью и инертностью людей, которые способны не убирать говно среди комнаты только потому, что «у нас тут вся архитектура уже вокруг него построена», а также нежеланием смириться с тем фактом, что такие люди вообще есть.

Ситуация ухудшается тем фактом, что у меня был отдельный успешный опыт, на каждой своей работе я в значительной степени выполняю функцию именно говночиста (не говночина, не говночиста, говно должно быть устранено из проекта, а не отлажено, хотя иногда удается сторговаться только на отладку).

Вот так показательно наезжать на самые популярные языки и решения - удел детей, которые только вкатываются в профессию.

Наслаждайся: https://yosefk.com/c fqa/fqa.html
Просто зацени масштаб. Это мой кумир, я на его твиттер подписан.

Я честно не могу понять позицию человека, которого наняли штукатурить стены, он приходит в квартиру — там вода с потолка капает, в стене дыра, в углу лежит какой-то бомж, который залез через выбитое окно — и мастер говорит «мое дело — штукатурка, я сделаю ее хорошо, постараюсь изолировать от капающей воды, получу деньги, а всё остальное меня не волнует». Нет, у любого мужика с инстинктом хозяина возникает бунт «это чо за херня? Вы тут с ума посходили?».

Моему знакомому заливали бетон со второстепенной функцией, так он пытался убедить мастера залить состав дешевле нищебродского, на что мастер очень долго возмущался «так нельзя делать, он ничего держать не будет». Или официантска в японской кафешке: «Принесите мне зеленый чай с сахаром — Но зеленый чай пьют без сахара. — А я пью с сахаром. — Но зеленый чай пьют без сахара».

Люди-профессионалы переживают за результат даже если им платят деньги за другой результат. С моей колокольни иное отношение к профессиональной сфере выглядит как минимум странно. Дети видят ошибки и недостатки из новизны опыта, профессионалы примерно так же выдят ошибки, но уже из старого опыта, когда эти недостатки выстрелили.

byko3y ★★★★
()
Ответ на: комментарий от Aber

И вот десятилетие спустя я от кого-то услышал что в VS вроде ходить можно было только по коду своего проекта, но не в сторонние библиотеки. Типа это фишка последних лет. И я думаю может это бред был сказан а я повелся?

Ну чел тебе правильно ответил: .NET активно использует нативные библиотеки, по которым ходить можно только бинарным отладчиком (который, на самом деле, в VS есть). Для меня, наоборот, факт закрытости системных либ является чем-то самоочевидным.

byko3y ★★★★
()
Ответ на: комментарий от asdpm

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

Что значит «игнорирует реальность»? Реальность — это куча электроновых приложух повсюду и единицы жавовых, для разработчиков чаще всего жавовое приложение одно на машине — это какой-то вариант IDE.

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

NullPointerException и Type Erasure — это «другого уровня»? Как по мне — примерно такого же. Никакущая производительность у жавы без JIT присутствует аналогично JS. Жор памяти и там, и там, просто у электрона он происходит на запуске браузера. На самом деле, если начать писать на TS, то разница вообще станет исчезающая — та же Type Erasure, та же проверка по статическим класса до стирания, те же грабли с пустым значениям при неаккуратной обработке ошибок.

Разница только в том, что в Electron ты получаешь готовый вебсайт, который пользователь может открыть с любого девайса, поскольку браузер есть везде. Что ты будешь делать с жавоприложением? Предлагать пользователю запустить жавоаплет?

byko3y ★★★★
()
Ответ на: комментарий от Shadow

Я не могу распарсить C код без отступов, поэтому python очень зашёл.

Все пользуются отступами, но пытаться основывать синтаксис ТОЛЬКО на отступах — это тупиковая затея, потому что рано или поздно возникают сложные многострочные вызовы, которые непонятно как оформлять, чтобы и транслятор понял, и человек прочитал.

В частности, в питоне существует проблема считывания конца блока:

for :
    for:
        function(argument1, argument2, argument3,
                 argument4, argument5, argument6)
        function(argument1, argument2, argument3,
                 argument4, argument5, argument6)
        function(argument1, argument2, argument3,
                 argument4, argument5, argument6)
        function(argument1, argument2, argument3,
                 argument4, argument5, argument6)
    if :
        function(argument1, argument2, argument3,
                 argument4, argument5, argument6)
        function(argument1, argument2, argument3,
                 argument4, argument5, argument6)
        function(argument1, argument2, argument3,
                 argument4, argument5, argument6)
        function(argument1, argument2, argument3,
                 argument4, argument5, argument6)
        if :
            function(argument1, argument2, argument3,
                     argument4, argument5, argument6)
    wtf(arguments)

Последняя строка относится к чему? Это продолжение «if», вызова «function», или уже конец «for»? По этой причине в конце каждого блока обычно ставят пустую строку, которая по сути есть закрывающая скобка/end. Если у вас и так де-факто закрывают блоки — почему нельзя оформить это де-юре? В Руби так и сделали.

byko3y ★★★★
()
Ответ на: комментарий от Shadow

Я не могу распарсить C код без отступов, поэтому python очень зашёл.

В C не нужно писать вручную без отступов. Хотя, конечно, иногда бывает удобно отформатировать что-то как-то так:

x = y; y = z; c++;
i = j; j += 42; d++;
...

и не размазывать все это по нескольким строкам.

Без отступов бывает удобно генерировать код из внешних DSL.

eao197 ★★★★★
()
Ответ на: комментарий от Aber

А вот в бесплатной Eclipse code coverage уже давно использовался. Этак в 2012 году в фирме где я работал PM заморочился поднять code coverage тестами до 80% и приходилось следить, все ли основные ветвления покрыты.

В C++ пытаться достичь code coverage — это особо изысканная специальная олимпиада, из-за неявных путей выполнения. Потому я даже не сильно в него верю, хотя мы на проекте покрытием пользуемся. Оно помогает отловить самые-самые очевидные прорехи, которые скорее всего и так бы отловились достаточно простым тестированием, а вот со сложными сценариями у него очень большие проблемы.

Та же история со статической типизацией, которая сильно переоценена средним на рынке программистом. Простейшие ошибки типизации легко отлавливаются тестами, а сложные ошибки не отлавливаются типизацией. Это, к слову, основная моя претензия к Rust, в котором решили возродить казалось бы похороненную в Ada идею выноса мозга строгостью статических проверок — недавно разбившаяся ракета с программой на Ada не даст мне соврать, там переполнилось число, что никакими статическими проверками не получилось бы проверить.

byko3y ★★★★
()
Ответ на: комментарий от Aber

Я после текущего исследования тоже пришел к выводу что в 2015 году они решили наконец сделать из своего редактора IDE. Оказывается там кучи фишек не было.

Я посоветовал бы вспомнить, что монополистом в своих нишах MS был именно в те годы, когда VS был, по вашим словам, недо-IDE. После 2015 это уже было IDE для хипстеров с рюшечками и установкой по интернету... Ну то есть да, современная IDE.

byko3y ★★★★
()
Ответ на: комментарий от alex0x08

VSCode это большая победа Microsoft, поскольку он стал платформой для наверное всех современных «Web-based» редакторов кода

VS Code изначально был пиар проектом с индусами в качестве ЦА — то есть, успех не совсем случайный. Заметьте, что вышел он спустя год после назначения индуса CEO Microsoft.

«Неполноценная IDE» он настолько же, насколько неполноценны Vim или Emacs (очень похож на них) — но на этом форуме тебя ссаными тряпками закидают за такие слова.

byko3y ★★★★
()
Ответ на: комментарий от asdpm

я понял, ты тоже не отличаешь редактор от IDE. это ваше клоунство с «редактором» слишком тупое, скажу я вам.

Назови одну вещь в IDE, без которой мое кодописание на C++/Python потеряет очень много? Я начинал карьеру в сплошных IDE, и я очень скептически отношусь к идее жавоподобных IDE вне мира жавы.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

«Неполноценная IDE» он настолько же, насколько неполноценны Vim или Emacs

Все эти редакторы «не полноценные IDE» только по сравнению с современными IDE. В VIM вообще нету AST! Т.е. у него даже хайлатинг лажает по определению, потому что он реализован через regexp’ы.

Но если мы мысленно перенесемся в 90-е или в самое начало 2000-х, то тогда было вообще не очень с инструментами разработки. Я немного знаком с VS6 из 2000-го, это был просто редактор с подсветкой синтаксиса + дебаггер в графическом режиме. Я не интересовался миром *nix в те годы но думаю из VIM и тем более из Emacs можно было сделать более полноценные IDE прицепив скриптами всю возможную автоматизацию по сборке, тестированию и модификации кода.

Aber ★★★★★
()
Ответ на: комментарий от Aber

Тогда был Java, а после 17 стало Kotlin/Java.

Так и думал, но решил переспросить. Я давно говорю, что никто не пишет на жаве, все пишут либо на Eclipse, либо на IntelliJ Idea. Сам по себе Java как ЯП несостоятелен. Я просто никогда не писал ни на Java, ни на C#, потому мне ваши скорби по IDE непонятны.

А hot reload... Ну был у меня этот hot reload на JS с вебпаком, безо всяких IDE, и все равно окончательную проверку нужно делать перезапуском, потому что горячая перезагрузка не перестроит заново состояние. Чем ограниченнее инструментарий разработчика ­— тем проще сделать горячее обновление кода, и тем стабильнее оно работает. И наоборот, практически нереально сделать горячее обновление после изменения шаблоного кода C++ или сишного макроса.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

а вызваным тупостью и инертностью людей, которые способны не убирать говно среди комнаты

Смотрю ты вообще крайне мало знаешь о людях.

Представь что ты врач, на прием приходит пациент у которого уже кишки вываливаются из живота и все вокруг гниет. А он улыбается и жалуется на «легкую головную боль». Пытаешься объяснить и тыкаешь пальцем в живот - пациент с улыбкой рассказывает что это фигня и вообще «само пройдет».

И тут у тебя вилка решений: попытаешься честно настоять на лечении - получишь вой «врачи-убийцы» и бирку «плохой доктор», попытаешься обмануть и втихую вылечить - рискуешь собственной карьерой и уголовкой ради спасения жизни идиота.

И таких поциентов у реальных врачей сотни и тысячи. А ты про какой-то там рефакторинг.

alex0x08 ★★★
()
Ответ на: комментарий от Aber

Я немного знаком с VS6 из 2000-го, это был просто редактор с подсветкой синтаксиса + дебаггер в графическом режиме.

Я еще раз повторю вопрос: допустим, я программист на C++ с VS в начале нулевых — отсутствие каких фич заметно замедляет мою разработку? Hot reload? Code coverage? Перейти на символ в заголовке можно, но не особо полезно (я не в курсе, когда появилась фича «go to definition»).

Вы просто тут разбрасываетесь словами про «текстовой редактор», но критериями почему-то указываете о-о-очень специфичные функции, которые далеко не всем нужны.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Я просто никогда не писал ни на Java, ни на C#, потому мне ваши скорби по IDE непонятны.

Наверное из-за доступности кода в IDE и появилась такая максима как «лучшая документация это код».
Я вот заметил что многие программисты не из мира Java жалуются на плохую документацию в коде фремворков и либ. А я не понимаю как можно верить комментам (исключая стандартные библиотеки которые не будут менять поведение и контракты для их пользователей, если разработчики не хотят потерять их). Если бы не современные IDE было бы другое отношение, в том числе к документации, но я не сказал бы что отсутствие документации это плохо, я помню сколько фрустрации у меня вызывала дока в том же msdn. Ты не мог просто прочитать доку и все понять, нужно было «играться» с «черным ящиком» чтоб понять как с ним взаимодействовать и дока в этом помогала.

Aber ★★★★★
()
Ответ на: комментарий от byko3y

java и js бесконечно разные явления, вообще трудно их сравнивать. если приводить какие-то отдельные доводы, от этого сравнение столько разных языков не случится всё равно.

хорошо ок, отдельные доводы:

жава документирована. если, допустим, я захочу выяснить какой-то вопрос, ну например, как equality-wise сравниваются ордеред мапы, то в жаве я найду четкий и точный ответ (наверняка окажется, что об этом подумали лет так 20 назад и подумали нормально). в js? окажется что? наверняка какая-нибудь дичь: типа что equality-тестов там нет, только identity (допустим). или что нет equal/hashcode контракта. или… что нет мап, а объект для этих целей использовать будет не удобно. или вообще что нет ответа (среньк-пук вместо ответа, ой, мы об этом не подумали, ты неправильно делаешь, зачем тебе это надо, читай вот тут книжку гуры-мудака)

жава документирована. да даже если я захочу вообще понять что либо в жаба - я найду ответ в официальной документации. и окажется что это все продумано, есть какая-то «система» (понятий, инструментов). или в tutorial или в стандартной библиотеке или в JLS или в tech notes. не надо никакие сраные ю-донт-ноу-говно-js-книжки на 1000 страниц, где вынуждены обсуждать каждую молекулу высера именумого js. да для жава есть одна-три книжки полезные, но там не рассмотрение отдельных элементов бессмысленного хаоса, там другое.

это слишком разные явления. одно проектировали, думали и вливали десятки лет большие деньги в думание, в реализацию.

другое - посрали, called it a day. через полтора десятиления (вроде) стали вливать огромные деньги в.. ускорение кала.

как это можно сравнивать вообще?

asdpm
()
Ответ на: комментарий от alex0x08

Представь что ты врач, на прием приходит пациент у которого уже кишки вываливаются из живота и все вокруг гниет. А он улыбается и жалуется на «легкую головную боль». Пытаешься объяснить и тыкаешь пальцем в живот - пациент с улыбкой рассказывает что это фигня и вообще «само пройдет».

Смелое заявление от того, кто мне указывает на мое якобы невежество в знании людей. Вообще-то средний врач проигнорирует сопустствующие проблемы, более того, будет возмущаться, если спросить у него «а чо это у меня тут кишки вываливаются?» — ответит что-то вроде «это вам к специалисту по вываливающимся кишкам, я только за головы отвечаю». Меня на LOR года два назад очередной «детектор» «выводил на чистую воды» по критерию «если упоминаешь про всякие причины и первоисточники заболеваний — значит ты шарлатан, настоящий врач лечит только симптомы».

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

А потому что там тоже тупость и инертность, заблуждения десятилетиями передает из поколения в поколение и никто с этим ничего не делает. Реальный личный пример, который случился совсем недавно: в довольно дорогой стоматологии удалили на зубе нерв, хотя современная стоматология уже лет 7 как такие зубы спасает с гарантией 80-90%; на мое предложение ознакомиться с современными протоколами главврач ухмыльнулься и посмотрел как на идиота.

Мое возмущение по отношению к IT связано с тем, что IT подает себя как прогрессивная сфера, хотя по факту до сих пор строгает байты каменными топорами, там сидят такие же старые пердуны-утята, которые ответят «мой батя так делал, моя бабка так делала, все так делают — ты самый умный, штоле?».

byko3y ★★★★
()
Последнее исправление: byko3y (всего исправлений: 1)
Ответ на: комментарий от Aber

сколько фрустрации у меня вызывала дока в том же msdn. Ты не мог просто прочитать доку и все понять, нужно было «играться» с «черным ящиком» чтоб понять как с ним взаимодействовать и дока в этом помогала.

Интерфейс Win32 API намеренно сделан переусложненным и не до конца документированным, это свойство тщательно культивировалось, чтобы конкурент не мог повторить реализацию API. Большого прогресса Wine достиг именно в то время, как в сеть утекли полные сорцы NT4 и частично 2000.

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

То есть, мне от IDE нужен только отладчик, которые показывал бы строки кода и стэк вызова — зачем мне еще какая-то IDE?

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Я еще раз повторю вопрос: допустим, я программист на C++ с VS в начале нулевых — отсутствие каких фич заметно замедляет мою разработку?

В начале 00-х я пытался «научиться программировать на C++ за 21 день». По книжке осваивал написание MFC приложения в VS. И вот там рассказано как создать логику на нажатие какой-нибудь кнопки. Создаешь нужный метод в контроллере и обязательно нужно прописать вызов какого-то макроса вначале и в конце метода. В книжке не сказано что делают эти макросы. Магия? И как же посмотреть что скрывается за макросами в «IDE»? Никак. Помню что не мог найти что именно инлайнится и какой код исполняется. Наверное у меня даже была дока в виде MSDN на трех дисках но мне и это не помогло.

Мои студенческие похождения конечно не впечатляют и мало ли что я не осилил из-за своей тупости. Хотелось бы услышать мнение настоящих программистов того времени, что там было у microsoft с докой, доступностью кода фреймворков и навигацией по нему в VS?

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 2)
Ответ на: комментарий от byko3y

Простейшие ошибки типизации легко отлавливаются тестами, а сложные ошибки не отлавливаются типизацией.

жуть. данный факт имеет место быть, но довод-то невалиден. более того, доказательство невалидности в самом доводе: зачем вам чтобы «само», можно же дополнительную работу сделать и частично того же эффекта достичь. разница между тем что сделал компилятор и тем что сделали автотесты - это разница между «автоматически» и «вручную».

asdpm
()
Ответ на: комментарий от byko3y

которые показывал бы строки кода и стэк вызова — зачем мне еще какая-то IDE?

В написанных в ООП парадигме стек вызовов не поможет. Потому что в современных программах куча объектов все время получает новые состояния и у тебя возникает ошибка причина которой не то место где она возникла, а неправильное состояние объекта. И именно по этому нужен дебаггер и навигация по коду. Ты исследуешь то как же так получилось что состояние объекта совсем не такое каким оно должно было быть. И как детектив ходишь «по коду», ищешь источник проблемы, расставляешь все больше брейкпоинтов которые останавливают исполнение программы все раньше. Ладно если бы это был код проекта, но теперь это фреймворки, т.е. приходиться разбираться а что за цепочка событий приводит к ошибке во фремворке.

Aber ★★★★★
()
Ответ на: комментарий от byko3y

еще отдельные доводы «с потолка», раз уж ты начал.

ну вот например: у жавы есть стандартная библиотека и считается что она (за каким-то исключениями) имеет очень высокое качество. сравнение не в пользу js (хотя может быть сейчас ситуация изменилась). ну например там есть collection framework. сравнение не пользу JS.

жаба среди манажед языков имеет наверное самую можную поддержку многопоточности (ну или одну из самых). и с некоторых пор имеет формализованную, документированную memory model. сравнение не пользу JS.

asdpm
()
Ответ на: комментарий от byko3y

Для меня, наоборот, факт закрытости системных либ является чем-то самоочевидным.

там сидят такие же старые пердуны-утята, которые ответят «мой батя так делал, моя бабка так делала, все так делают — ты самый умный, штоле?».

Мир поменялся старик! Код будет свободным! :)

Я так понял тебе не нравится современная ООП парадигма, и я согласен что очень трудно дебажить «правильный код», где есть куча абстракций и десяток реализаций для каждой.
Мне не нужно продвинутое IDE в более простом и линейном коде, например для небольшого frontend (других не писал) мне хватает VSCode.
А есть сишные проекты написанные почти целиком в одном файле на 10к-100к строк, им наверное тоже не нужны никакие сложные IDE, хватит одного VIM с 2-3 плагинами, нужен поиск функции по имени, быстрый переход на функцию, автозамена, автодополннеие и пожалуй все.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)