A A A A Автор Тема: Какой язык программирования учить  (Прочитано 11667 раз)

0 Пользователей и 4 Гостей просматривают эту тему.

Оффлайн yacc

  • *****
  • Сообщений: 646
  • Благодарностей: 13
  • Мне нравится этот форум!
    • Сообщения от yacc
Re: Какой язык программирования учить
« Ответ #400 : 16 Фев 2026 [12:20:52] »
мне нужно было сделать декомпозицию крупного скрипта на языке питон, который анализирует исходники на языке Питон/С++ и составляет полный каркас проекта
Ну это как бы перпендикулярно изучению какого-либо языка программирования.
Тем более что парсинг проекта для реверс инжиниринга и оптимизации - сложная задача - и он невозможен без жирных библиотек, которые разбирают код.
И особенно весело это для С++ где в сильной степени обобщенное программирование.

Оффлайн yacc

  • *****
  • Сообщений: 646
  • Благодарностей: 13
  • Мне нравится этот форум!
    • Сообщения от yacc
Re: Какой язык программирования учить
« Ответ #401 : 16 Фев 2026 [12:49:55] »
Кстати, как по мне - если человек не созрел для обобщенного программирования ( тут упоминали более простой С ) то современный С++ ему - не нужен.
Максимум что он будет его использовать - С с классами в стиле второй редакции С++ середины 90-х.

Оффлайн Павел Васильев

  • *****
  • Сообщений: 1 302
  • Благодарностей: 37
    • Сообщения от Павел Васильев
Re: Какой язык программирования учить
« Ответ #402 : 16 Фев 2026 [19:21:41] »
Кстати, как по мне - если человек не созрел для обобщенного программирования ( тут упоминали более простой С ) то современный С++ ему - не нужен.
Если не созрел для C++, то и С ему тоже не осилить, ему тогда конечно же нужен Object Pascal, простой, понятный, быстрый и современный язык программирования. В Японии его тоже очень широко используют в графике и не только.
Астромодель нооэволюции Млечного Пути https://gitverse.ru/astrogeoscenter/astrobloq

Оффлайн yacc

  • *****
  • Сообщений: 646
  • Благодарностей: 13
  • Мне нравится этот форум!
    • Сообщения от yacc
Re: Какой язык программирования учить
« Ответ #403 : 16 Фев 2026 [19:29:58] »
Если не созрел для C++, то и С ему тоже не осилить
С - очень простой язык программирования.
Сложно там, по первости, только с арифметикой указателей - один раз учится на практике - и больше никаких проблем нет.
Куча народа, не имея особого опыта, учится и пишет код на нем для Ардуино.

ему тогда конечно же нужен Object Pascal, простой, понятный, быстрый и современный язык программирования.
Вы имеете ввиду то, что у Free Pascal Compiler ?

Ну как бы это несколько расширенный clascal от Apple начала 80-х.

Онлайн Eddy_Em

  • *****
  • Сообщений: 1 707
  • Благодарностей: 55
  • САО РАН. Буково forever!
    • Сообщения от Eddy_Em
    • Я на гитхабе
Re: Какой язык программирования учить
« Ответ #404 : 16 Фев 2026 [19:44:14] »
Сложно там, по первости, только с арифметикой указателей - один раз учится на практике - и больше никаких проблем нет.
Это точно. Где-то, помнится, у меня были "тройные" указатели, а т.к. нужно было это чудовище и в другую функцию передать, появился "четырехкратный" указатель ☺
Лень мне было заморачиваться с вычислением индексов…
пишет код на нем для Ардуино.
Для абдурины не "код" пишется, а говнокод. Очень существенная разница. А код пишется под нормальные микроконтроллеры. В принципе, даже под AVRку можно на С по-человечески писать. Можно, но  зачем? Зачем, когда есть вменяемые недорогие ARM и RISC-V со значительно более приличным набором периферии.
Вот как абдуринщики без кучи таймеров живут? А как живут без DMA? Просто жесть!..

А вообще, по сложности самый простой — язык ассемблера. Но, увы, там такие бешеные простыни накатывать надо… И все делай сам: ни тебе openmp, ни оптимизаций компилятора. И ошибиться значительно проще, чем в ЯП более высокого уровня. С сложней, но из ЯП высокого уровня на втором месте, пожалуй, после паскаля. Но, как я выше писал, паскаль вообще не получил распространения в прикладной сфере, так и оставшись "виртуальным языком" для обучения.
Бедные студенты! Сначала их насилуют паскалем, а потом говорят: "забудь это гobно и учи С!". Потом кому-то из них надоедает неполноценная ООПщина С, и он переходит на С++, если осилит, конечно. А кто-то, слабый духом (или умом), переходит на змеюку и прочую гадость (да и то, сам код не пишет, а тырит из интернетов,  или в "чатжпт" генерит).
Windows must die!

Оффлайн yacc

  • *****
  • Сообщений: 646
  • Благодарностей: 13
  • Мне нравится этот форум!
    • Сообщения от yacc
Re: Какой язык программирования учить
« Ответ #405 : 16 Фев 2026 [19:58:22] »
Для абдурины не "код" пишется, а говнокод. Очень существенная разница.
Никакой разницы - код соответствует задаче. Если она простая но код большой - вот тогда это говнокод.

Сначала их насилуют паскалем, а потом говорят: "забудь это гobно и учи С!".
И это быстро учится. Я сам освоил за несколько месяцев, ну как только с указателями разобрался. Книжку я вообще за пару дней прочитал - она тонкая.
Перейти на С++ как на С с классами - тоже легко и вполне удобно.

Онлайн Eddy_Em

  • *****
  • Сообщений: 1 707
  • Благодарностей: 55
  • САО РАН. Буково forever!
    • Сообщения от Eddy_Em
    • Я на гитхабе
Re: Какой язык программирования учить
« Ответ #406 : 16 Фев 2026 [21:32:56] »
Перейти на С++ как на С с классами - тоже легко и вполне удобно.
Ну, ООПщина нужна не очень часто. Скажем, в моей утилите для работы со светоприемниками по сути на С реализованы объекты ("camera", "turret", "focuser"). Вот чего реально не хватает, так это "this".
Перегрузку можно сделать при помощи generic'ов. Это несложно.
Но чаще мне не хватает констэкспров! Например, в контроллере восьми шаговиков пришлось кодогенератор использовать, чтобы вычислять хэши от текстовых команд.  В случае же с констэкспрами достаточно было бы проверить на словаре из всех доступных команд, что нет коллизий у данной хэш-функции, да в case'ы понавтыкать констэкспров: пусть gcc эти хэши на стадии компиляции вычисляет, нечего филонить!
Windows must die!

Оффлайн yacc

  • *****
  • Сообщений: 646
  • Благодарностей: 13
  • Мне нравится этот форум!
    • Сообщения от yacc
Re: Какой язык программирования учить
« Ответ #407 : 16 Фев 2026 [22:10:28] »
Ну, ООПщина нужна не очень часто.
Зависит от масштабов проекта.
На встроенке вероятно совсем не нужна.

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

В целом там код по ссылке нормальный, но на один косяк укажу - такое приводит к трудноустранимым ошибкам:
https://github.com/eddyem/stm32samples/blob/master/F3%3AF303/Multistepper/adc.c строка 34 и другие подобные
количество каналов лучше задать константой, чем хардкодить цифрой 9.
« Последнее редактирование: 16 Фев 2026 [22:37:43] от yacc »

Онлайн Eddy_Em

  • *****
  • Сообщений: 1 707
  • Благодарностей: 55
  • САО РАН. Буково forever!
    • Сообщения от Eddy_Em
    • Я на гитхабе
Re: Какой язык программирования учить
« Ответ #408 : 16 Фев 2026 [23:09:57] »
систему сбора логов с множества компьютеров
Это умеет syslog-ng.
управлением через графическую консоль и веб сайт
Не нужно. Нормальному админу даже иксы не нужны.
вы вряд ли на простом С напишете
syslog-ng как раз на С и написан.
Ну, а я тоже абсолютно все на С пишу: от мелких утилиток и микроконтроллеров до всяких клиент-серверных приложений. В т.ч. и веб-бэкенд у меня весь на С. Зачастую вообще без отдельного веб-сервера (типа NGINX или apache).
А для того, чтобы АСУшники могли управлять вентиляторами циркуляции воздуха внутри оправы ГЗ БТА, я нарисовал элементарную веб-морду, у которой бэкенд на баше!
количество каналов лучше задать константой, чем хардкодить цифрой 9.
Количество каналов - это NUMBER_OF_ADC_CHANNELS. А 9 - количество сэмплов с канала для вычисления медианы. Т.к. я "гвоздями прибил" функцию "медиана из девяти", то и девятку захардкодил. В принципе, оптимальное число.
Windows must die!

Оффлайн yacc

  • *****
  • Сообщений: 646
  • Благодарностей: 13
  • Мне нравится этот форум!
    • Сообщения от yacc
Re: Какой язык программирования учить
« Ответ #409 : 16 Фев 2026 [23:18:26] »
Это умеет syslog-ng.
Нет. Он всего лишь источник.

Не нужно.
Нужно, потому что сбор и анализ централизованный

syslog-ng как раз на С и написан.
Это простая программа, но для нас это был всего лишь источник. Один из многих, включая syslog на AIX, HP-UX, Solaris и eventlog на Windows.
Там в вики написано "In January 2018, syslog-ng, as part of Balabit, was acquired by One Identity under the Quest Software umbrella."
Вот централизованный сбор и анализ логов как раз и писался для Quest Software в самом начале 2000х, когда я там работал в одном из филиалов.
Централизованный сбор и анализ  syslog-ng в принципе не умеет делать.

А 9 - количество сэмплов с канала для вычисления медианы.
Любая  цифра, если она встречается несколько раз в коде ( а она встречается ) - потенциальный источник ошибки.
Это выносят в константу
« Последнее редактирование: 16 Фев 2026 [23:24:00] от yacc »

Оффлайн Karagy

  • *****
  • Сообщений: 1 933
  • Благодарностей: 63
    • Сообщения от Karagy
Re: Какой язык программирования учить
« Ответ #410 : 17 Фев 2026 [03:12:18] »
Где паскаль под микроконтроллеры?
Всё есть. Было-бы желание.
Хабр: Lazarus-AVR, №1. Программирование микроконтроллеров AVR в IDE Lazarus
Хабр: Lazarus-AVR, №2. Как получить кросс-компилятор для микроконтроллеров AVR с помощью Fpcupdeluxe

Любая  цифра, если она встречается несколько раз в коде ( а она встречается ) - потенциальный источник ошибки.
Это выносят в константу
Это не так. Например 0 (ноль) в условиях циклов никогда не выносят в отдельную константу. Хотя он часто повторяется. Так и пишут везде 0.

Оффлайн Бобр-99

  • *****
  • Сообщений: 5 013
  • Благодарностей: 95
    • Сообщения от Бобр-99
Re: Какой язык программирования учить
« Ответ #411 : 17 Фев 2026 [08:46:04] »
Любая  цифра
Не любая.
2x54, 16x50
Доб 305 мм F/5
24/67, 14/72, 10/72, 6/100

Оффлайн yacc

  • *****
  • Сообщений: 646
  • Благодарностей: 13
  • Мне нравится этот форум!
    • Сообщения от yacc
Re: Какой язык программирования учить
« Ответ #412 : 17 Фев 2026 [09:20:31] »
Например 0 (ноль) в условиях циклов никогда не выносят в отдельную константу.
Да, ноль не затаскивают. Еще может быть 1. Остальные повторяющиеся отправляют в константы.
9 в размере массива это точно для константы.

Онлайн Eddy_Em

  • *****
  • Сообщений: 1 707
  • Благодарностей: 55
  • САО РАН. Буково forever!
    • Сообщения от Eddy_Em
    • Я на гитхабе
Re: Какой язык программирования учить
« Ответ #413 : 17 Фев 2026 [10:05:28] »
9 здесь захардкожено на века, поэтому не нуждается в макросе. Тем более, никуда за пределы одной единицы трансляции оно не выходит.
Windows must die!

Оффлайн Павел Васильев

  • *****
  • Сообщений: 1 302
  • Благодарностей: 37
    • Сообщения от Павел Васильев
Re: Какой язык программирования учить
« Ответ #414 : 17 Фев 2026 [18:38:15] »
по сути на С реализованы объекты ("camera", "turret", "focuser"). Вот чего реально не хватает, так это "this".
Перегрузку можно сделать при помощи generic'ов. Это несложно.
Но чаще мне не хватает констэкспров
Вместо того, чтобы взять готовые объекты, классы (те же источники света, камеры, управляющие элементы, списки изображений, деревья просмотра и удобное меню) вы приспосабливаете простой С для своих целей. Вы умелец конечно, для ваших задач достаточно видно printf и то не часто, но вы советуете не учить OOPщину, достаточно, мол, и без всякой плюсовщины и, тем более, паскалевщины. Это большое заблуждение и плохие рекомендации новичкам. Скорее всего ваши утилиты должны быть встроены в нормальную систему с  современным GUI. Вот посмотрите как замечательно устроен человеко-машинный интерфейс в программах Stellarium или SkyChart. И на русском языке есть локализация. А у вас нет.
Астромодель нооэволюции Млечного Пути https://gitverse.ru/astrogeoscenter/astrobloq

Онлайн Eddy_Em

  • *****
  • Сообщений: 1 707
  • Благодарностей: 55
  • САО РАН. Буково forever!
    • Сообщения от Eddy_Em
    • Я на гитхабе
Re: Какой язык программирования учить
« Ответ #415 : 17 Фев 2026 [18:53:00] »
Локализация не нужна, если оригинал на английском. Я когда-то маялся дурью и делал локализацию (при помощи gettext), но понял, что это вообще никому не нужно и лишь занимает время.
GUI не нужен в добрых 99% случаев. Вендузятники вообще не нужны.
Windows must die!

Оффлайн Павел Васильев

  • *****
  • Сообщений: 1 302
  • Благодарностей: 37
    • Сообщения от Павел Васильев
Re: Какой язык программирования учить
« Ответ #416 : Вчера в 08:45:36 »
GUI не нужен в добрых 99% случаев
Ну, если писать какие-то автоматические утилиты к надстройкам систем, то да, может быть, а по части человеко-машинного общения с компьютерами в сети или локально, то вы дико ошибаетесь. Наоборот, 99,99% софта имеют оконный и многооконный графический интерфейс общения не только с компиляторами, но и с готовым софтом. Все проги локализации, перевода с английского на другие языки, замена десятичной точки на запятую, милей на километры, а килопарсеков в световые года требуют объектно ориентированного графического интерфейса.
« Последнее редактирование: Вчера в 08:55:03 от Павел Васильев »
Астромодель нооэволюции Млечного Пути https://gitverse.ru/astrogeoscenter/astrobloq

Оффлайн yacc

  • *****
  • Сообщений: 646
  • Благодарностей: 13
  • Мне нравится этот форум!
    • Сообщения от yacc
Re: Какой язык программирования учить
« Ответ #417 : Вчера в 08:56:30 »
Наоборот, 99.9% софта имеют оконный и многооконный графический интерфейс общения не только с компиляторами, но и с готовым софтом
Вы с линуксом никогда не работали ? :)
Тот, кому вы отвечаете, использует Gentoo

Оффлайн Павел Васильев

  • *****
  • Сообщений: 1 302
  • Благодарностей: 37
    • Сообщения от Павел Васильев
Re: Какой язык программирования учить
« Ответ #418 : Вчера в 10:16:17 »
Локализация не нужна, если оригинал на английском. Я когда-то маялся дурью и делал локализацию (при помощи gettext), но понял, что это вообще никому не нужно и лишь занимает время
Вот это верно, мудрое решение многих проблем. Я бывало тоже раньше встраивал разные способы перевода на другие языки в исходники программ, в том числе на основе gttext (для RAD Studio есть dxgettext и  TLang), но теперь полностью выпилил их из кода. Достаточно поддержки двух языков, английского и русского, остальные идут лесом. Но разработка ведётся сразу в двух проектах, те модули и юниты, где арифметика и нет оконных диалогов или сообщений, они общие, остальные дублируются и переводятся, в том числе комментарии по мере необходимости, на русский язык. В этом случае к имени модуля добавляется приставка _ru. Это дублирование иногда выручает, при ошибках вместо отката или вместо revert при git разработке, восстановить рабочую версию. Более сложная проблема с BigData, в них используется десятичная точка, а у нас ГОСТ требует десятичную запятую. Потоки данных растут, в том числе csv файлы звёздных каталогов.
Астромодель нооэволюции Млечного Пути https://gitverse.ru/astrogeoscenter/astrobloq

Онлайн Eddy_Em

  • *****
  • Сообщений: 1 707
  • Благодарностей: 55
  • САО РАН. Буково forever!
    • Сообщения от Eddy_Em
    • Я на гитхабе
Re: Какой язык программирования учить
« Ответ #419 : Вчера в 10:36:04 »
Я бы убил ту сволочь, что придумала вместо десятичной точки запятую ставить! И как отличить: это перечисление двух целых чисел или таки плавающая точка?
Вы с линуксом никогда не работали ?
Судя по тому, что и как он пишет, он и разрабатывать-то не очень… А про линукс, возможно, только что узнал.
Windows must die!