LINUX.ORG.RU

Выбор языка программирования

 


0

5

Здравствуйте, коллеги!

Понимаю, что данная тема из разряда holywar, но так уж вышло.

Я более-менее знаю С, С++. Последний мне не нравится.

Поверхностно знаком с Python. Он не плох, только уж слишком тормознутый. Еще в минусы падает, сложная переносимость между устройствами, тут и разноверсица, и возможные сложности с использованием библиотек. Да. Многое решает venv, но это ужасно не удобно.

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

Результат убил на повал. Сишный код оказался быстрее более чем в 1000 раз! Это как, вообще? Понятно, что функцию шифрования можно написать на С и подцепить ее в питоновском сприпте, но постепенно оказывается, что нужно что-то еще ускорить на С. И еще что-то. И еще… В результате от питона ни фига не остается.

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

Раз уж я знаю С, то что стоит изучить любой другой язык?

Вот я и решил копнуть Rust и Golang…

Что сказать… Посмотрев немного на Rust у меня остатки волос встали дыбом! Нагородили хрен знает что! У меня создалось впечатление, что Rust это просто набор костылей.

Возможно я не прав, даже скорее всего, но вот на него переползти с С для меня окажется или непосильной задачей, или ооочень сложной.

Golang? С ним вроде попроще. Но снова чувство костылинга. Плюс, зачем-то изголянее с объявлением переменных. Ну нафига тип переменной идет после ее названия? Типа, Golang не С? Впрочем, у Rust то же самое. Ну зачем???

Еще сильно поразило, что в Go и Rust нет нормальной перегрузки функции, типа int wise_func(char * str) и int wise_func(char * str, int len), Как в С++. Ну и функций с параметрами по умолчанию нет ни там, ни там. Алё! Разрабы! Вы ухи объелись?

Вроде, с помощью костылинга можно решить эти проблемы, но, блин, опять костыли!

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

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

Да, BASH еще более тормознутый и разбирать свой же скрипт, через месяц после написания, то еще удовольствие, но хотя бы bash скрипты без проблем переносимые!

В общем, я в печали. Хочется некий язык общего назначения что бы он был быстрым и был лишен неудобств старичка С, но, по ходу, нет гармонии в мире IT.



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

ТС и сам троллит, так что алаверды.

Он хотел «Хочется некий язык общего назначения что бы он был быстрым и был лишен неудобств старичка С», «гармонии хотел» – вот есть CL, который полностью подходит под описание. Общего назначения? Общего. Быстрый? Быстрый. Лишен неудобств С? Лишен. Костыли есть? Вообще ни разу.

Тяжёлый/сложный/непривычный? Так об этом ничего не было.

Получите, распишитесь.

Ему тут вообще Хаскель советовали, если это не толстый троллинг весом тонн так на 20-25, то я не знаю, что это (может быть советовавший действительно болен).

anonymous
()

Хочется некий язык общего назначения что бы он был быстрым и был лишен неудобств старичка С

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

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

Допустим, нет, что дальше?

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

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

А зачем мне это помнить, если при запуске моей 300-строковой йобы, она, в случае чего, упадет с ошибкой, в которой будет написано какой модуль не найден?

Так и произошло, а потом я сделал pip freeze

А мои перспективы тебя волновать не должны

anonymous
()

HighMan , 7 причин продолжать творить на Си:

  • на Си написаны все по-настоящему важные вещи: ядра ОС, опенсорсные БИОСы и прошивки устройств, HTTP-серверы и т.д. ... Весь мир крутится на Си! (сложно сказать чего НЕ пишут на Си, даже если некоторые примеры и выглядят странноватыми) - в то время как область применения пытающихся конкурировать с ним языков по факту куда более ограничена
  • на Си ты можешь создавать практически вечный код, в то время как с другими языками - с Python (вспоминается Python 2 vs 3, выйдет какой-нибудь 4 питон - опять всё переписывать?), С++ (чехарда из часто меняющихся стандартов), и т.д. - нет такой уверенности что твоё добро будет компилиться/запускаться через много лет
  • по работе со строками - со временем ты обрастаешь библиотекой из готовых самописных функций и рецептов их применения, так что проблема стоит не так остро
  • у Си супер быстрая скорость работы, быстрее только ассемблер - но он не портативен между процессорными архитектурами + дольше писать
  • Си имеет куда большую базу знаний и примеров по сравнению с новомодными Rust / Golang
  • благодаря более высокому порогу входа в Си (некоторый gatekeeping), успешные проекты на Си в целом более продуманы и проработаны
  • в то же время, Си более популярен чем Rust / Golang и при создании/сопровождении опенсорсного проекта на Си выше шансы найти «братьев по разуму»

А когда нужны скрипты, лучше писать их на bash'е - или даже заморочиться и на обычном sh для максимальной портативности: правда, некоторые портативные конструкции становятся более громоздкими, да и подобрать их бывает непросто (+ гуглится очень плохо), но иногда это стоит того

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

Зря на воду дуешь и хаскелистов обижаешь. Может быть, просто Хаскель тебе самому не дался, ты не смог разобраться в нем? Язык хороший, полезный, много новых идей, но очевидно, что не для всех. Это как предлагать учебник МГУ по теории вероятностей для студентов бывшего ПТУ, хотя и там встречаются гении. С этой точки зрения, конечно, выглядит странно предложение для ТС изучить хаскель, но это ни чуть не обижает ни самих хаскелистов, ни сам язык Хаскель. Просто кому-то не дано, не их это, и все тут - мы же все разные, и у всех разные сильные и слабые стороны. Да и я там выше как раз и советовал для ТС не лезть в функциональщину, потому что не его это. Сразу же видно

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

А зачем мне это помнить

Что тебе помнить? Ты добавляешь зависимость в проект и сразу записываешь её в requirements.txt всё.

А мои перспективы тебя волновать не должны

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

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

хаскелистов обижаешь

Их обидишь.

много новых идей

многим из которых уже лет 60, если не больше.

не для всех

«Не для всех» потому что сложно, или «не для всех» потому что не всем нужно? Если первое – то ерунда полная. Хаскель довольно прост примитивен, если говорить о функциональных языках. Его «элитарность» натянутая и форсится в первую очередь самими хаскелистами. Если второе – так а я о чем? Хочется функциональщины ради игр с функциональщиной? Haskell, Idris, CakeML – вот это всё. Хочется практичной функциональщины? OCaml, F#, Clojure, CL.

не лезть в функциональщину, потому что не его это

А я об этом. Контекст треда всегда важен.

В контексте: жаль SETL сдох (хотя многое потом в Питон перетекло, но сверху еще и всякая фигня налипла), он бы ТСу подошёл как «гармония в мире IT».

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

«Не для всех» потому что сложно, или «не для всех» потому что не всем нужно? Если первое – то ерунда полная. Хаскель довольно прост примитивен, если говорить о функциональных языках. Его «элитарность» натянутая и форсится в первую очередь самими хаскелистами. Если второе – так а я о чем? Хочется функциональщины ради игр с функциональщиной? Haskell, Idris, CakeML – вот это всё. Хочется практичной функциональщины? OCaml, F#, Clojure, CL.

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

Ну, из этого списка мне обо приглянулся F#, который и использую. Тем не менее, в обкатке одной своей идеи именно хаскель мне помог, помог увидеть главное в одной задаче и правильно сформулировать метод, за что я очень благодарен создателям этого языка.

Еще сюда можно добавить Scala. Вполне ФП, хотя по моим наблюдениям те же фьючи широко эксплуатируются как stateful даже там, где можно stateless. Что есть, не совсем ФП. То есть, многие скалисты не совсем функциональщики по своему духу. Да и многие туда шли за длинным рублем. Не знаю, как сейчас.

Что-то получается, что этот список особо и не меняется уже лет 15… Думается, что пока не изобретут какие-то сверх-инновационные новые компьютеры, то ничего особо и не изменится. Тем более, что в нулевые тоже не особо-то новое придумывали - скорее, просто до ума доводили то, что было заложено еще в 70-е и 80-е годы.

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

на Си написаны все по-настоящему важные вещи: ядра ОС, опенсорсные БИОСы и прошивки устройств, HTTP-серверы и т.д.

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

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

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

у Си супер быстрая скорость работы, быстрее только ассемблер

Выстрел в ногу за 0.0001 секунды – удобно!

благодаря более высокому порогу входа в Си (некоторый gatekeeping), успешные проекты на Си в целом более продуманы и проработаны

Ключевое слово «успешные», остальное может быть полным говнокодом с use-after-free, double-free и out-of-bounds

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

на Си написаны все по-настоящему важные вещи: ядра ОС, опенсорсные БИОСы и прошивки устройств, HTTP-серверы и т.д. … Весь мир крутится на Си!

А еще интерпретаторы Perl, Python, Ruby, Lua, TCL.

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

в обкатке одной своей идеи именно хаскель мне помог

Вот для этих целей он хорош, да. Много чего в ФП с его помощью можно понять и проверить/попробовать. Я бы добавил – исключительно и только для этих целей.

Scala […] фьючи […] stateful даже там, где можно stateless

На пустом месте пулемёт для стрельбы по ногам. Но у Одерского и сторонников своя аргументация: это фича, и пофиг на ссылочную прозрачность, когда речь идет об эффективности. Типа Scala же производственный язык, а не учебный.

до ума доводили то, что было заложено еще в 70-е и 80-е годы

А в 70-е и 80-е доводили до ума то, что было заложено в 30-е и 40-е.

anonymous
()

Я более-менее знаю С, С++

Впервые вижу челика который знает C++. Обычно на нём умеют писать, но никто его не знает. )))

ЗЫ

Я тебе C# не советовал? От него волосы делаются шелковистые, блохи и вши выводятся и вообще ты перестаёшь бояться санитаров.

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

Паскаль. Почти как сишка, но строки сделаны правильнее и есть модули. А в остальном — то же самое.

Ada. Почти как Паскаль только устранены мелкие недостатки оного. Ну и добавлено куча всего интересного,хотя если не надо то можно не использовать и писать прямо «как на паскале».

watchcat382
()