LINUX.ORG.RU
ФорумTalks

Чем плох этот %яп%

 ,


2

3

Навеяно темой: Чем плох Go?

Впервые тред на лоре не перешел в срач между rust и c++, и даже, местами была интересная критика. Не знаю сможем ли повторить, но все же спрошу (выбирайте яп на ваш вкус).

Чем плох:

  • 1) Python
  • 2) JavaScript (именно бэкенд node.js)
  • 3) PHP
  • 4) Java
  • 5) Kotlin
  • 6) Scala
  • 7) Dart
  • 8) C#
  • 9) Swift
  • 10) C
  • 11) C++
  • 12) Rust
  • 13) D
  • 14) Go
  • 15) ...любой другой язык, о котором вы не смогли промолчать...

Перемещено tailgunner из development

JS лучший язык программирования. Независимо от окружения. Сасай лалка.

int64 ()

В python лично я не нашёл способа быстро накидать gui без заморочек с PyQt, если кто посоветует, буду благодарен. В Node.Js приходится изворачиваться, чтобы писать линейно исполняемый код. Java многословна. Под C# нет массы нужных библиотек, выпускаемых под другие языки. C позволяет выстрелить себе в ногу 1001 разным способом вместе с или вместо решения задачи. C++ то же самое + гора синтаксического мусора.

Sadler ★★★ ()

C

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

C++

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

JavaScript

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

Python

Смотрите выше про JS.

Rust

Как по мне - синтаксис инопланетный и созданный не для людей. Из-за этого не вникал в суть.

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

Умер вместе с последним носителем. Ты бы еще про Фокал спросил.

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

Собственно, все языки, которые я указал в посте, я использую. Наличие определённых недостатков особенностей не делает их чем-то неприменимым, всё зависит от задачи.

Всё, что связано с AI — python. Embedded — C. Отправить последовательность нот на midi-выход и нарисовать формочку с кнопками под это дело — C#. web-scraper — node.js .

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

А, еще Haskell. После C++ крайне сложно было начать его осваивать, но многие вещи на нем можно сделать достаточно красиво.

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

В Node.Js приходится изворачиваться, чтобы писать линейно исполняемый код

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

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

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

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

int64 ()

Давай уж по треду на ЯП, а так неинтересно.

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

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

Не для всех задач это полезно. Особенность у языка такая есть — я о ней написал.

Sadler ★★★ ()

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

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





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

и чем тебе мешают какие-то там быдлокодеры

Иногда приходится пользоваться их поделками (привет, ылэктрон). Без мата никак.

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

Электрон не написан на JS.
JS встроенный язык для управления электроном, а не наоборот.

Это все равно, что не любить линукс потому что bash. Или наоборот.

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

Нет, не языка.
Окружения.
JS встраиваемый язык. Встрой его в окружение без event loop'а, и не используй СОП, и не будет тебе ассинхронности.

Собственно в браузерах в WebWorker'ах, например, преимущественно пишут синхронный код, потому что нет нужды не блокировать поток.

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

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

Нет, не языка. Окружения.

Это я просто лихо обозвал node.js языком, вопрос только в кривом использовании мной терминологии.

Sadler ★★★ ()

8) C#

Поделие микрософта, патентонебезопасное, прибитое гвоздями к .net и его патентнонебезопасным клонам.

10) C

Нет объектов и готовых контейнеров.

9) Swift

Поделие яббла, а они ничего хорошего сделать не могут по определению.

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

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

dk- ()
Ответ на: комментарий от Singularity

Наброс то ли модульный, то ли даже _мета_наброс, т.е. наброс на набросы.

Deleted ()

Пиво и чипсы стоят на компьютерном столе, где битва титанов?

papin-aziat ★★★★ ()

Дальше идет поток сознания от человека, который большинство языков «знает» благодаря сайту learnxinyminutes.com

PHP

Хешмапные массивы

Java

Многословность

C#

Прибито (неполностью) гвоздями к Dotnet

C

Слишком много сектантов

C++

«C++ — набор попыток пофиксить попытки пофиксить попытки пофиксить ... ...»

Rust

Learning curve

D

Няшное, но мертвое

Go

if err != nil {
  ...
}
creazero ()
Ответ на: комментарий от KennyMinigun

WebKit

Доработанный напильником khtml


LLVM

Если не ошибаюсь, тоже не их изначально разработка. И да, не нужно:)

Cups

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

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

Под C# нет массы нужных библиотек, выпускаемых под другие языки

например? и C# умеет в либы других языков

next_time ★★★★★ ()

самый отвратительный из них как правило тот на котором в данный момент пишешь

oxo ()

Чем плох этот %яп%
%яп%

Упоротой записью переменных. Хотя, безусловно, есть вариант ещё хуже %var% — венгерка.

redgremlin ★★★★★ ()

Прежде всего всем языкам программирования с динамической типизацией запишу её в минус. Не встречал ситуаций, когда она мне помогала бы, а вот мешала - часто

1) Python

Две версии, фиг пойми под какую лучше писать. API какое-то странное. Global Interpreter Lock. Очень низкая скорость.

2) JavaScript (именно бэкенд node.js)

В языке и стандартной библиотеке куча WTF-моментов. В современном языке слишком много сахара, по сути старый JS и новый JS выглядят как два разных языка, это привносит в язык много лишнего.

3) PHP

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

4) Java

Слишком многословный. В стандартной библиотеке куча плохо спроектированного хлама из 90-х, который конечно же никуда не выкинут. Доходит до смешного - два параллельных API для работы с файлами, два параллельных API для работы с датой-временем, три API для написания графических приложений (которые на Java всё равно никто не пишет). Checked-исключения. Частью API вообще никто не пользуется (logging, например), хотя как раз таки эту часть было бы неплохо использовать стандартную.

5) Kotlin

Язык молодой, реально в IDE увидеть стектрейсы ошибок плагина, хотя оно как-то само восстанавливается и работать не мешает, но всё равно неприятно, с Java такого не бывает. Не хватает некоторых фич, например custom string interpolation. Развитие языка как-то сильно замедлилось после релиза. Пилят то, что лично мне совсем не интересно (native, JS), подозреваю, что развитие в итоге замедляется из-за этого.

6) Scala

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

9) Swift

Слишком модерновый и хипповатый, постоянно обливаешься смузи, когда пытаешься на нём писать. Xcode падает бесперерывно и в отличие от Idea это реально мешает работать.

10) C

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

11) C++

Самый сложный язык в мире. Сразу нафиг.

12) Rust

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

13) D

Схема управления памятью непонятная, и мануальная и GC фиг пойми что надо юзать. Как-то не взлетает оно.

14) Go

Язык слишком примитивный.

Legioner ★★★★★ ()

Надо запретить пропаганду JavaScript среди несовершеннолетних.

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

2) JavaScript (именно бэкенд node.js)

Ещё - современный JavaScript предполагает использование Promise для асинхронного кода, а в node.js весь API построен на callback-ах, что делает его использование геморным. Можно, конечно, каждую функцию завраппить, но это такое себе. Им бы переписать всю стандартную библиотеку, было бы приятней.

Legioner ★★★★★ ()

1) Python
Так как делался как попытка сделать максимально «человеческий» ЯП, многие важные вещи внутри не очевидны (оптимизации компилятора).
2) JavaScript (именно бэкенд node.js)
Нагромождение костылей. Не держа в голове полную модель всех переменных и объектов в проекте, невозможно не накосячить. strict TypeScript спасает. Многие, отчаявшись совладать с асинхронностью и сайд-эффектами, начинают писать исключительно в функциональном стиле, чем делают код ещё менее читаемым
3) PHP
После 5-й версии не трогал. Костылей больше чем в JS.
4) Java
Чтобы что-то написать, сначала это нужно описАть.
8) C#
Windows only. Иначе - сложные извращения
10) C
Идеальный макроассемблер с абстракцией адресации.
11) C++
НЁХ
12) Rust
Зачем писать хороший язык, но стандартные ключевые слова делать немного другими, чем в большинстве ЯП с фигурными скобочками?

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

Си плох тем, что он Си. Остальные плохи тем, что они не Си.

Раз уж набрасывать, так по полной!

a1batross ★★★★★ ()

Из этого списка говно только С и Go.

RazrFalcon ★★★★★ ()

Прочитал руководство по Python и мне он не понравился следующим:

class CalcValue: 
                 1
                /
    DEFAULT_VALUE=100
    __current_value=DEFAULT_VALUE
                     2
                    /
    def execute(self, input_val):
        self._lazy_stuff(lambda x: self.__current_value  + input_val + x)
                           \
                            3

1. Нет констант, нет инкапсуляции со скрытием (приватных членов);
2. В JS обращение к членам класса идет через this, там ведь ООП реализовано на абстракциях JS, а питон еще и требует передачу явного указателя на класс... стесняюсь спросить, на каких абстракциях ООП реализован в python? Явно ведь ООП для него не родное;
3. Однострочные лямбды! В них делаешь два вызова и уже строка заканчивается;
4. Пакетирование - кому нужные пустые __init__.py ? прочитал, что с версии 3.3 уже можно обойтись.

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

2. В JS обращение к членам класса идет через this, там ведь ООП реализовано на абстракциях JS, а питон еще и требует передачу явного указателя на класс... стесняюсь спросить, на каких абстракциях ООП реализован в python? Явно ведь ООП для него не родное;

К питоньему ООП можно придраться, но приводить в пример жабоскрипт как некий этанол ООП … это вообще законно? В питоне ООП реализовано на абстракциях питона, и вы их не знаете, если называете self указателем на класс.

4. Пакетирование - кому нужные пустые __init__.py ? прочитал, что с версии 3.3 уже можно обойтись.

Зачем вы делаете их пустыми? У умных людей там находится какой-нибудь код.

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

В питоне ООП реализовано на абстракциях питона,

Т.е. в языке изначально не заложено.

и вы их не знаете, если называете self указателем на класс.

Пусть будет ссылка на класса, пойдет?

Зачем вы делаете их пустыми? У умных людей там находится какой-нибудь код.

Я прочитал мануал по python и попытался написать плагин для kody, тык что я не эксперт по python, но по первому впечатлению мне он не понравился.

Aber ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.