LINUX.ORG.RU

Шустрый и легко осиливаемый ЯП, есть такой?

 


3

7

Не холивара ради абсолютно холиварная тема. Есть плата на ARM с гигом оперативы и не особо мощным процем (а-ля raspberry, только не raspberry), я столкнулся с проблемой что она мой говнокод на питоне крутит ну о-о-о-очень долго. И даже после того, как мой говнокод поправили, производительность выросла всего на гулькин хер.

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

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

Deleted

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

AUX ★★★★
()

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

2. Lua и Luajit - бэйсик без задач. На самом Lua никаких либ толком нет. Поэтому почти всё придется дергать из Си и получать все проблемы из пункта 1. Да и в самом языке абстракции уровня Javascript 1.0

3. C++ - до конца года может осилишь местное ООП. Остальные концепции займут еще лет 5-10.

4. Go - неплохо. Но, говорят, что он синтаксически менее мощен чем Питон и со временем может стать маловат. Но, впринципе, для твоих задач норм. Есть готовые mqtt, http и прочая срань для IoT

5. Rust - отличный выбор для поставленной задачи. Есть всякое mqtt. Легко заюзать сишные либы. Можно и прошивки для некоторых девайсов на нем писать. Но учить язык придется долго

Рекомендую остаться на Python и разобраться что тормозит

А еще лучше заюзать готовое решение. OpenHab, IoBroker, MajorDoМo, тысячи их

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

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

Тред не читал, но сразу скажу. Вполне будет достаточно прочитать «Язык программирования Си» — книга Брайана Кернигана и Денниса Ритчи. Язык Си очень простой, с этой книжкой можно въехать очень быстро и уже что-то не понятное нагуглить, я гарантирую это, только, в отличие от Вас, начинал с AVR, затем уже ARM подвернулся

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

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

Мужик, если ты знаешь, что такое сокеты\файлы\треды, то изучить либу на Си займёт 15мин. А так же либы в любом ЯП есть и все различны, но на Си есть огромный плюс - язык стар и примеров разжёванного кода и статей на него намного больше, чем на любой другой ЯП КМК.

3. C++ - до конца года может осилишь местное ООП. Остальные концепции займут еще лет 5-10.

ООП осилить можно за день, но язык реально перегружен и реально учат его лет по 5-6, один только STL чего стоит... бррр...

5. Rust - отличный выбор для поставленной задачи. Есть всякое mqtt. Легко заюзать сишные либы. Можно и прошивки для некоторых девайсов на нем писать. Но учить язык придется долго

ИМХО, можно освоиться за пару месяцев. Но с mqtt обжёгся, когда библиотеку нужную нашёл, в ней оказались зависимости сломанные и отвалилась аутентификация по сертификату. Автор библиотеки не вышел на связь и пришлось делать биндинг к сишной либе... уот такая херня малята... А вообще, Rust очень годный. Главное успокоительного взять по больше т.к. он частенько может завернуть компиляцию, хоть в 99% где косяк ясно из сообщений компилятора, но в 1% придётся потупить в код

Рекомендую остаться на Python и разобраться что тормозит

Эт здравая мысль для ТС, ведь если при каждой проблеме переписывать всё на другой ЯП, то могут и с работы попереть =) Скорее всего затык в производительности лишь в одной функции, лучше перепроверить всё. Если не поможет, то скомпилировать в байткод\нативкод и снова перепроверить, если и это не поможет, то тогда уж переписывать на Си или на Rust всё...

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

AntonyRF ★★★★
()

Lua. Высокоуровневый, быстрый, удобный и простой.

Рекомендую не смотреть на новые 5.2 и 5.3, а взять 5.1 и изучать в связке с Luajit. Там отличные биндинги к либам, все что можно сделать на С, там можно сделать еще проще.

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

если ты знаешь, что такое сокеты\файлы\треды, то изучить либу на Си займёт 15мин

Наверное я просто тупой, но одна функция (man 3p open) у меня заняла «несколько» больше 15 минут. А ежели человек собирается делать IoT, то, вероятно будет присутствовать UART. А с ним ioctl, fcntl - и здесь можно завязнуть надоолго. Я уже не говорю про треды или epoll. Тут реально лучше брать язык, в котором всё это прилизано и рассовано по объектам

Но с mqtt обжёгся, когда библиотеку нужную нашёл, в ней оказались зависимости сломанные и отвалилась аутентификация по сертификату

Я подозревал, что многие, особенно малопопулярные либы в зачаточном состоянии)

FreePascal

Никто никогда не вернется в 2007

makoven ★★★★★
()

Коли ты смог пидон там запустить, то мой тебе совет - Go-lang. Он есть для ARM. Ну и C почитывай, однозначно.

robot12 ★★★★★
()

Какой мне ЯП выбрать для изучения, чтоб он шустро крутился даже если наговнокодить?

Я ща подумал и понял, что это FreePascal

  • Очень легко выучить, там простой синтаксис - пока другие будут учить Си++ ты успеешь два раза переписать проект и закончить его.
  • Он нативный и быстрый - кросс компиляция поддерживается и удалённую отладку через GDB можно настроить.
  • Есть все необходимые либы - ну почти, если какие-то совсем новомодные технологии, то их может и не быть.
AntonyRF ★★★★
()

Есть плата на ARM с гигом оперативы и не особо мощным процем (а-ля raspberry, только не raspberry), я столкнулся с проблемой что она мой говнокод на питоне крутит ну о-о-о-очень долго.

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

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

Есть на гитхабе твой говнокод который тупит на ARM?

AntonyRF ★★★★
()

Решил тоже примкнуть к касте питонистов. С чего начать посоветуете? Для начала желательно из литературы что-то на русском и когда более менее освоюсь хотелось бы и с англицким параллельно идти.

Xant1k ★★
()

если наговнокодить - тормозить будет все.

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

NiTr0 ★★★★★
()

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

u0atgKIRznY5
()

Но чтоб писать на нём нечто сложнее змейки, нужны годы практики

На самом деле нет. Самое основное - алгоритм. ЯП - только инструмент.

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

А вот какой нужен язык программирования дцпшнику (не здоровенькому дебилу, а страдающему «заболеванием» ДЦП), ну чтоб синтаксис был попроще и немного ООП ?

Знал одного чувака с ДЦП, двигаться не мог, а по интеллектуальному развитию обошел многих. Печатать вроде сам с трудом мог, просил кого-то делать это за него, диктовал.

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

python

Тут реально лучше брать язык, в котором всё это прилизано и рассовано по объектам

как ты ещё html со своими познаниями не посоветовал, лол

anonymous
()

Шустрый и легко осиливаемый ЯП

machine code или ассемблер

Думаю о С

C - это костыль: продали душу за переносимость.

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

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

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

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

Все думали что умный, а оказалось что немой с дцп.

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

Как написано на lurkmore «Rust — всё, хватит. Кто в 16 лет не мечтал запилить свой язык программирования, который наконец-то позволит писать всё и сразу, у того нет сердца. А кто и в 40 лет продолжает этим заниматься — у того нет мозгов»

С другой стороны, языков, позволяющих писать всё и сразу ровно 2 - С++ и Rust. Так что некоторый смысл пихать его во все дыры есть

makoven ★★★★★
()

Шустрый и легко осиливаемый ЯП, есть такой?

Такого нет, но непрофессиональные программисты (те же физики и математики) худо-бедно умудряются писать неплохой код на смеси Си и Си++. И их кругозор этими языками обычно и ограничивается. Можешь взять за совет. Для ARM самое то (какой к черту еще Питон?!)

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

Касательно Rust. Очень хороший язык. Позволяет создавать код со скоростью исполнения на Си в простых случаях (ну, а в сложных случаях и код на Java может обогнать типичный код на Си, но это сложная тема и явно не для этого форума - нужно понимать, как работает выделение памяти и чем принципиально отличаются разные схемы. Ведь не просто так пишут промышленные SMS-центры на Java, которые перемалывают миллионы SMS в режиме полуреального времени).

Синтаксис Rust очень приятный для написания. Выглядит язык красиво. Но я уверен, что желательно иметь опыт Haskell, чтобы грамотно использовать traits и generics, хотя не все со мною согласятся, особенно те, кто уже успешно использует Rust, не имея за плечами опыта Haskell.

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

dave ★★★★★
()

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

Огромный плюс языка - он есть на любой кофеварке. У Си с этим ещё круче, но си намного многословнее, если в твоей программе появляются хоть какие-то абстракции. И если твой проект работает со строками - в сишке строки это боль. А в плюсах - вполне нормально. И ещё - в узких местах ты можешь писать на C++ в стиле C. Да, это говнокод, который приличными людьми не одобряется, но бывает, что выручает.

Основная проблема C и C++ для новичков - отсутствие нормальной модульности. С этим надо просто смириться и понимать, что написав #include, ты просто включаешь одну портянку текста в другую, без какого-либо контроля со стороны языка. А то, что линкер потом налинкует - это чисто его выбор вне всякой связи с тем, что ты включал. Отсюда проблемы, начиная с долгой компиляции/компоновки, и заканчивая непонятностью сообщений об ошибках, если ты что-то забыл включать. Более того, при забытом #include один и тот же код может успешно собраться на одной платформе и сфейлиться на другой. Тут лекарство одно - терпеливо включай всё, что нужно, а в своих заголовках не забывай про стражи компиляции (да, IDE их обычно создают автоматически, но помнить об их необходимости надо). Считаю это самым коварным багом, куда более коварным, чем ручное управление памятью. Ибо про ручное управление памятью пишут везде (ну и valgrind тебе в помощь), а про это обычно забывают.

Лично мне в качестве языка для начинающих с нативной компиляцией куда больше нравится современный объектный паскаль, но библиотек там намного меньше, к тому же я не знаю, насколько геморройна связка fpc+ARM.

hobbit ★★★★★
()

Для программирования контроллеров и всяких распберри однозначно С/С++, не нужно ничего изобретать с высокоуровневыми интерпритируемыми языками, оно для таких задач не предназначено особо, разве что быстро на коленке нашлепать какое-нибудь дерьмо и прототип - это без проблем.

system
()

COBOL, Scala, Scheme

anonymous
()
Ответ на: gambas от greenman

Синтаксис изучается быстро

Чему равно выражение (*float)((byte)!0 << 20)

Синтаксис у него, блджаж, простой!

anonymous
()

Го придуман для тех кому некогда следить за памятью в работе и некогда учить сложное в учении. Так сказать легко в учении и легко в бою. Твой выбор. Тем более после питона. Про раст не слушай, он сложноват и в учении и в бою. А что ты такое уже наговнокодил что тормозит?

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

Ты pабыл про бульоналкоголь?

Кстати твой коммент тоже не фонтан. васики однозначно хуже чем тот же паскаль. А то, что микрософт налепил поверх (а все слизали) это вообще xyz. Учиться погромированию надо с языков без dll-hell.

anonymous
()

У тебя там что сложные вычисления, обработка медиа-потока? Какая задача то? Тормозят обычно мозги у разработчика и ресурсы, но не алгоритм, но если алгоритм тупо работает с ресурсами - программа тормозит.

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