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

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

Оффлайн Ph_user

  • *****
  • Сообщений: 3 176
  • Благодарностей: 84
    • Сообщения от Ph_user
Re: Какой язык программирования учить
« Ответ #100 : 29 Ноя 2025 [12:31:17] »
диплом - это

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

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

Паскаль, Фортран. Да хоть Алгол или PL/1 - но смысла никакого нет.

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

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

Ну местами над интринсиками пробуют делать уже векторкласы с операторами между ними - но то может только для облегчения понимания могущими в плюсатость и более абстрактную от архитектур математику.
« Последнее редактирование: 29 Ноя 2025 [12:53:22] от Ph_user »

Оффлайн Karagy

  • *****
  • Сообщений: 1 840
  • Благодарностей: 62
    • Сообщения от Karagy
Re: Какой язык программирования учить
« Ответ #101 : 29 Ноя 2025 [13:21:57] »
Писать такое о фортране - это публично кичиться своим невежеством. Современный фортран вы вообще мало чем обгоните.

Оффлайн Вантуз

  • ****
  • Сообщений: 263
  • Благодарностей: 3
    • Сообщения от Вантуз
Re: Какой язык программирования учить
« Ответ #102 : 29 Ноя 2025 [14:09:21] »
15 лет назад, когда моему сыну было 10 лет, я поставил ему на комп линукс, вручил стопку книг и сказал: развивайся.

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

Оффлайн yacc

  • ***
  • Сообщений: 128
  • Благодарностей: 5
  • Мне нравится этот форум!
    • Сообщения от yacc
Re: Какой язык программирования учить
« Ответ #103 : 29 Ноя 2025 [14:22:16] »
Кстати, линукс -- стимул освоить хотя бы C: можно самому исправить баг/добавить фичу к софту, которым пользуешься не только сам.
А может тогда сразу FreeBSD и делать порты софта с линкуса  самому ?  :)

Оффлайн Вантуз

  • ****
  • Сообщений: 263
  • Благодарностей: 3
    • Сообщения от Вантуз
Re: Какой язык программирования учить
« Ответ #104 : 29 Ноя 2025 [18:34:41] »
А может тогда сразу FreeBSD ...
Да хоть VAX/VMS. Был бы хороший учитель.

Оффлайн yacc

  • ***
  • Сообщений: 128
  • Благодарностей: 5
  • Мне нравится этот форум!
    • Сообщения от yacc
Re: Какой язык программирования учить
« Ответ #105 : 29 Ноя 2025 [19:16:18] »
Да хоть VAX/VMS.
Состязание "как максимально усложнить жизнь десятикласснику" выходит на новый уровень - теперь он еще себе старый комп должен найти и с осциллографом заставить его работать ...  :)

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

Оффлайн Вантуз

  • ****
  • Сообщений: 263
  • Благодарностей: 3
    • Сообщения от Вантуз
Re: Какой язык программирования учить
« Ответ #106 : 29 Ноя 2025 [20:15:30] »
Состязание "как максимально усложнить жизнь десятикласснику" выходит на новый уровень ...
В ваших педагогических фантазиях?

Оффлайн Ph_user

  • *****
  • Сообщений: 3 176
  • Благодарностей: 84
    • Сообщения от Ph_user
Re: Какой язык программирования учить
« Ответ #107 : 29 Ноя 2025 [22:39:08] »
Писать такое о фортране

Вот че пишут про симд в фортране почти безошибочные роботы гугля - intel simd intrinsics fortran
While Intel provides extensive SIMD intrinsic functions for C and C++ developers to explicitly leverage vector hardware for parallel processing, there is no direct, corresponding Fortran interface for these low-level intrinsics.
Instead of using explicit SIMD intrinsics in Fortran, Intel Fortran compilers (like the Intel Fortran Compiler Classic and Intel Fortran Compiler within oneAPI) focus on automatic vectorization. This means the compiler automatically analyzes your Fortran code and, where possible, generates vectorized instructions (including SIMD instructions like SSE, AVX, and AVX-512) to improve performance.
Key points regarding SIMD and Intel Fortran:
1. Automatic Vectorization: The Intel Fortran Compiler is designed to automatically vectorize loops and array operations, optimizing them to use SIMD instructions without requiring explicit intrinsic calls from the programmer.
2. Compiler Options: You can control and guide the vectorization process using compiler options, such as -O3 for aggressive optimization, -qopt-report to generate optimization reports detailing vectorization, and -simd to enable or disable SIMD instructions.
3.OpenMP SIMD Directives: Fortran supports OpenMP SIMD directives (e.g., !$OMP SIMD) which allow you to explicitly guide the compiler to vectorize specific loops, providing a higher-level abstraction than direct intrinsics.
4. Optimized Libraries: For highly optimized numerical routines, consider using Intel Math Kernel Library (MKL), which is already heavily optimized with SIMD instructions and provides Fortran interfaces.
5. Interoperability with C/C++: If you absolutely need to use specific SIMD intrinsics not covered by automatic vectorization or OpenMP, you can write a C/C++ function that uses the intrinsics and then call this function from your Fortran code using Fortran's interoperability features.

Че это все значит по пунктам -
Для фортрана интринсиков все еще нету чтобы делать там програмы для симд сопроцесора. В наличии только для сей.

Че доступно фортранщикам в конце первой четверти 21 века если надо побыстрее с использованием всех возможностей купленого универсального процесора с симд сопроцесорами -
1. Молить богов компилятора фортрана чтобы хоть как-то сработала автовекторизация. Работа автовекторизатора с улучшениями уже бывает - но оптимальность под архитектуру все еще часто намного хуже рукопашной.
2. Попробовать повтыкать опции компилятора чтобы попробовать усилить работу богов автовекторизации от авторов фортрана.
3. Попробовать понавешать опенмп директив про попытки что-то автовекторизовать рядом с опенмп кусками програмы.
4. Попробовать подождать когда програмеры напишут интелю новые мкл под новые симд архитектуры и интел продаст пользователю фортрана. Но это будет работать только с извесными програмерам и интелю задачам и признаными интелем годными для заказа у програмеров оптимизированой версии решения этой задачи чтобы получить оплату на корм програмерам и прибыль себе любимому. Если астроном-любитель придумал новую задачу - надо будет просить интель заказать оптимизацию мкл для фортрана и ждать когда сделают. И если интель ваще решит такое заказывать.
5. Если таки надо решение задачи на выданых интелем оптимальных интринсиках для програмирования симд сопроцесоров - пойти уже сделать в сях или асемблере свою либу для фортрана и прикрутить ее к фортрану. В интринсиках на сях делать полегче и побыстрее. Итого без сей пока никак там чтобы свое и быстро в деревне вечером при свете лучины.
« Последнее редактирование: 30 Ноя 2025 [00:00:39] от Ph_user »

Оффлайн Karagy

  • *****
  • Сообщений: 1 840
  • Благодарностей: 62
    • Сообщения от Karagy
Re: Какой язык программирования учить
« Ответ #108 : 29 Ноя 2025 [23:56:17] »
Таки сильно зависит от целей.
Если в приоритете результат - то вот оно считает и не надо лазать грязными дорого-оплачиваемыми ручонками куда ненадо.
Если-же в приоритете процесс - т.е. "закат Солнца в рукопашную вручную" - тогда да, си, ассемблер никто не запрещал.
Прикладной программист - он конечно-же лучше интела знает как надо программировать ихние процессоры, да?

Оффлайн Ph_user

  • *****
  • Сообщений: 3 176
  • Благодарностей: 84
    • Сообщения от Ph_user
Re: Какой язык программирования учить
« Ответ #109 : 30 Ноя 2025 [00:02:23] »
Прикладной програмист должен знать как решать свою новую астрономическую задачу на доступной на рынке архитектуре счетно-решающих машин. Просить это решить интеля будет и долго и может быть платно.

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

Оффлайн Karagy

  • *****
  • Сообщений: 1 840
  • Благодарностей: 62
    • Сообщения от Karagy
Re: Какой язык программирования учить
« Ответ #110 : 30 Ноя 2025 [00:10:55] »
С другой стороны, в эпоху массового распрастранения доступных GPU, все эти вычислительные достижения на CPU не представляют интереса.

Оффлайн Ph_user

  • *****
  • Сообщений: 3 176
  • Благодарностей: 84
    • Сообщения от Ph_user
Re: Какой язык программирования учить
« Ответ #111 : 30 Ноя 2025 [02:35:56] »
Дык производители внешних ускорителей вычислений тоже обычно дают апи на наиболее промышлено используемых сях. Припилить такое ускорение к фортрану можно скорее тоже внешней либой собраной на сях или даже плюсатых сях (если через директ компут).

Оффлайн 3i Atlas

  • Новичок
  • *
  • Сообщений: 8
  • Благодарностей: 1
  • Мне нравится этот форум!
    • Сообщения от 3i Atlas
Re: Какой язык программирования учить
« Ответ #112 : 30 Ноя 2025 [09:27:06] »
Если важна скорость, Antropic Claude отлично переводит с/с++ функции в ASM вставки с оптимизацией под конкретную архитектуру и процессор. Лучше чем это делает gcc  или clang. Я это делал недавно в одном из проектов на raspberry pi ддя детектирования движения. Примерно 5% вэлью.
Nikon Aculon 7x50

Оффлайн yacc

  • ***
  • Сообщений: 128
  • Благодарностей: 5
  • Мне нравится этот форум!
    • Сообщения от yacc
Re: Какой язык программирования учить
« Ответ #113 : 30 Ноя 2025 [09:47:11] »
В ваших педагогических фантазиях?

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

Я бы предпочел чтобы десятиклассники такие быстрофиксы не делали, а если и делали, то не выкладывали.
Не репозиториях и так лежат тонны хренового кода. В том числе с goto на C.

Оффлайн CyberManiac

  • *****
  • Сообщений: 9 967
  • Благодарностей: 574
  • Я ♥ オリオン!
    • Сообщения от CyberManiac
Re: Какой язык программирования учить
« Ответ #114 : 30 Ноя 2025 [10:04:02] »
В ваших педагогических фантазиях?

Фантазии это вот так:
"Кстати, линукс -- стимул освоить хотя бы C: можно самому исправить баг/добавить фичу к софту, которым пользуешься не только сам."
Трэш, угар и астрономия!
沖縄最高

Оффлайн Karagy

  • *****
  • Сообщений: 1 840
  • Благодарностей: 62
    • Сообщения от Karagy
Re: Какой язык программирования учить
« Ответ #115 : 30 Ноя 2025 [10:27:18] »
Практика показала что люди готовы писать веб на PHP только-бы не писать его на C++.

Онлайн crimchik

  • *****
  • Сообщений: 3 827
  • Благодарностей: 213
  • наблюдаю звёзды, сидя на табуретке
    • Сообщения от crimchik
Re: Какой язык программирования учить
« Ответ #116 : 30 Ноя 2025 [10:50:13] »
А почему бы не провести интересный эксперимент : давайте придумаем 10 практических задач по астрономии и смежным наукам, максимально приближенных к реальности, который в принципе могут возникнуть. и по каждой конкретной задаче уже можно будет понять, на каком языке лучше решать.
Nicon Aculon 7x35, Hawke Nature 10x50
SW AZ5 + TS 102ED f/7

Онлайн crimchik

  • *****
  • Сообщений: 3 827
  • Благодарностей: 213
  • наблюдаю звёзды, сидя на табуретке
    • Сообщения от crimchik
Re: Какой язык программирования учить
« Ответ #117 : 30 Ноя 2025 [11:22:32] »
Попросил супермозг провести небольшое исследование на эту тему :

## 1. Пайплайны обработки «сырых» данных (data reduction)

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

Практическая польза.
Без этого шага вообще невозможно измерить яркости звёзд, красные смещения галактик и т.п. Это фундамент всей наблюдательной астрономии.

Важность / актуальность

Сейчас: 10/10

Через 7 лет: 10/10 (обзоры будут только крупнее, пайплайны — только важнее)

Практические сложности.
Большие объёмы данных, сложные эффекты приборов, необходимость постоянно поддерживать код под новые инструменты и обновления.

Нужный научный аппарат.

оптика и основы работы детекторов;

обработка сигналов, шумы, фильтрация;

базовая статистика, методы оценки ошибок.

Рекомендованный язык.

Python для пайплайнов верхнего уровня (Astropy-экосистема, склейка модулей);

C++/C как второй язык для ускорения тяжёлых частей (как сделано в LSST).

Комментарий астрофизика.
Практически любой наблюдатель так или иначе связан с редукцией. Много рутины, но если ты её автоматизируешь хорошо, твои данные ценятся везде.

## 2. Обнаружение источников, деблендинг и фотометрия

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

Практическая польза.
Даёт каталоги звёзд и галактик — сырьё для всех последующих анализов (звёздные популяции, структура галактики, космология и т.д.).

Важность / актуальность

Сейчас: 10/10

Через 7 лет: 10/10 (обзоры типа Rubin/LSST будут ещё более зависеть от умного деблендинга)

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

Научный аппарат.

статистика изображений, фильтрация, морфология;

оптимизация, численные методы;

немного идей из компьютерного зрения.

Рекомендованный язык.

Python + готовые инструменты (Astropy, Photutils, обёртки вокруг SExtractor и т.п.);

C/C++ — если захочется писать свой супербыстрый алгоритм детекции (как ядро LSST-плагинов).

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

## 3. Astroinformatics и data mining по гигантским каталогам

Суть.
Работа с миллиардами объектов: хитрые выборки, ML-классификация, поиск редких и необычных вещей в огромных таблицах.

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

Важность / актуальность

Сейчас: 9/10

Через 7 лет: 10/10 (LSST, SKA и др. окончательно превратят астрономию в data science-дисциплину)

Сложности.
Объёмы (десятки терабайт и больше), необходимость хорошей статистики и знаний ML, вычислительные ресурсы, распределённые системы.

Научный аппарат.

линейная алгебра, статистика, теория вероятностей;

основы машинного обучения (классификация, кластеризация, понижение размерности);

работа с БД и распределёнными вычислениями.

Рекомендованный язык.

Python + numpy/pandas/scikit-learn, библиотека astroML как мост между ML и астрономией;

SQL/ADQL — как «язык» общения с архивами (Gaia, VO).

Комментарий астрофизика.
Очень «входной» путь для тех, кто любит data science: по сути это астрономия + машинное обучение, и спрос на такие навыки растёт и в науке, и в индустрии.

## 4. Временная доменная астрономия: транзиенты и real-time алерты

Суть.
Из потока событий «в режиме почти реального времени» вылавливать вспышки, суперновые, переменные звёзды и быстро понимать, что это такое.

Практическая польза.
Позволяет ловить короткоживущие явления (суперновые, килоновые, гамма-всплески), успевать на них навести более мощные телескопы.

Важность / актуальность

Сейчас: 9/10

Через 7 лет: 10/10 (Rubin/LSST, более мощные брокеры, многоканальная астрономия)

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

Научный аппарат.

обработка временных рядов;

статистика событий, байесовские методы;

основы ML (классификация, anomaly detection).

Рекомендованный язык.

Python для всей логики брокеров и моделей;

иногда Java/Scala для Kafka/стриминговой инфраструктуры, но этим больше занимаются инженеры.

Комментарий астрофизика.
Очень «живой» жанр: ты реально можешь за день поймать событие и увидеть его спектр. Но и DevOps-составляющей здесь много.

## 5. Поиск и характеристика экзопланет (транзиты, RV)

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

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

Важность / актуальность

Сейчас: 9/10

Через 7 лет: 9/10 (обзорные миссии, JWST, вероятные новые миссии)

Сложности.
Шум звезды, систематики приборов, редкие и слабые сигналы, необходимость многокомпонентных моделей и байесовского анализа.

Научный аппарат.

небесная механика, Kepler/Ньютон;

статистика и байесовский вывод;

обработка временных рядов.

Рекомендованный язык.

Python (Lightkurve, exoplanet, batman, пакеты для MCMC) как основной язык анализа;

при большом желании — C/C++/Fortran для оптимизации ядра моделей.

Комментарий астрофизика.
Если нравится «история про планеты вокруг других звёзд» — это очень вдохновляющая область. Абсолютно нормально входить сюда с Python и хорошей статистикой.

## 6. N-body-симуляции планетных систем и звёздных скоплений

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

Практическая польза.
Даёт понимание устойчивости планетных систем, динамики звёздных скоплений, формирования чёрных дырных бинаров и т.п.

Важность / актуальность

Сейчас: 8/10

Через 7 лет: 8/10 (область устоявшаяся, но активно применяемая)

Сложности.
Численно жёсткие задачи, большой диапазон временных масштабов, накопление ошибок, необходимость HPC (GPU, кластеры).

Научный аппарат.

классическая механика, уравнения движения;

численные методы для ОДУ, симплектические интеграторы;

основы параллельных вычислений, HPC.

Рекомендованный язык.

C/C++ или Fortran — для ядра симуляций (как у большинства существующих N-body кодов);

Python — для запуска серий расчётов и анализа результатов.

Комментарий астрофизика.
Это уже «хардкорные» вычисления. Если школьник любит физику и алгоритмы — N-body может стать отличным полем для самореализации.

## 7. Космологические и гидродинамические симуляции формирования структуры

Суть.
Моделировать рост структуры Вселенной (тёмная материя, газ, галактики) с помощью N-body и гидродинамических кодов на суперкомпьютерах.

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

Важность / актуальность

Сейчас: 9/10

Через 7 лет: 9/10 (крупные симуляции будут продолжать «играть в одной лиге» с наблюдениями)

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

Научный аппарат.

космология, теория роста возмущений;

гидродинамика, иногда MHD;

численные методы для PDE, параллельные алгоритмы, HPC.

Рекомендованный язык.

C/C++/Fortran для основных кодов;

Python для анализа snapshot-ов, построения карт, статистики.

Комментарий астрофизика.
Это направление максимально похоже на «научный геймдев»: ты запускаешь Вселенную в компьютере. Но входной порог по математике и программированию относительно высок.

## 8. Анализ данных космологических обзоров и байесовские inference-пайплайны

Суть.
По данным линзирования, BAO, CMB и т.п. оценить параметры космологической модели с учётом систематик.

Практическая польза.
Позволяет измерять состав Вселенной (тёмная энергия, тёмная материя), проверять ΛCDM и альтернативные модели.

Важность / актуальность

Сейчас: 9/10

Через 7 лет: 10/10 (новые обзоры, улучшение точности, всё более сложные модели)

Сложности.
Систематики (PSF, фотометрические красные смещения, калибровки), необходимость аккуратной статистики, сложные и дорогие расчёты (MCMC, simulation-based inference).

Научный аппарат.

космология;

продвинутая статистика, байесовский вывод;

численные методы, возможно ML для ускорения inference.

Рекомендованный язык.

Python + numpy/scipy, пакеты для MCMC и ML;

ядровые части (генерация теоретических спектров и т.п.) — C/C++/Fortran, но их можно использовать как «черные коробки».

Комментарий астрофизика.
Если нравится космология и статистика — это золотой путь: огромное поле для применения и классической математики, и современных ML-подходов.

## 9. Обработка данных гравитационно-волновых детекторов

Суть.
В шуме LIGO/Virgo/KAGRA искать сигналы слияний чёрных дыр/нейтронных звёзд, оценивать их параметры и отправлять алерты.

Практическая польза.
Открывает «новый канал» наблюдения Вселенной, мульти-мессенджерные исследования (GW + свет).

Важность / актуальность

Сейчас: 9/10

Через 7 лет: 10/10 (новые поколения детекторов, больше событий, больше сложных источников)

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

Научный аппарат.

общая относительность (на концептуальном уровне);

обработка сигналов (Fourier, matched filtering);

статистика, байесовский анализ, ML.

Рекомендованный язык.

Python для пайплайнов высокого уровня (PyCBC, Bilby и др.);

C для низкоуровневых библиотек (LALSuite) и оптимизации.

Комментарий астрофизика.
По сути это «астрономия сигналов»: много красивой математики и программирования. Входить в область можно с Python и хорошим пониманием анализа сигналов.

## 10. Подгонка физических моделей к данным: спектры, SED, популяции

Суть.
По спектрам, распределениям энергии, кинематике восстановить физические параметры звёзд, галактик или планетных систем.

Практическая польза.
Позволяет превращать «сырые наблюдения» в физические величины: массы, возраст, металлличность, скорости, свойства атмосферы планет и т.д.

Важность / актуальность

Сейчас: 10/10

Через 7 лет: 10/10 (новые мощные инструменты типа JWST только увеличивают роль детального моделирования)

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

Научный аппарат.

соответствующая физика (звёздная, галактическая, атмосфер планет);

статистика, байесовский inference, MCMC/VI;

численные методы оптимизации.

Рекомендованный язык.

Python для подгонки (Astropy modeling, специализированные пакеты);

C/Fortran — для тяжёлых физических моделей.

Комментарий астрофизика.
Здесь ключ — не только кодировать, но и понимать физику моделей. Зато навыки переносимы на любую область, где есть «данные + модель».

## 11. Орбитальная динамика, NEO-мониторинг и космический мусор

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

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

Важность / актуальность

Сейчас: 8/10

Через 7 лет: 9/10 (растущее количество спутников/мусора и интерес к планетарной защите)

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

Научный аппарат.

небесная механика, возмущённые орбиты;

численное интегрирование, теория ошибок;

иногда фильтры (Калман и др.).

Рекомендованный язык.

Python для обвязки и анализа;

C/C++/Fortran или использование существующих библиотек (SPICE и др.) под капотом.

Комментарий астрофизика.
Отсюда недалеко и до космической индустрии. Если нравятся орбиты и «пространственное мышление» — это интересная и прикладная область.

## 12. Моделирование оптики и адаптивной оптики, реконструкция PSF

Суть.
Симулировать, как свет проходит через атмосферу и телескоп, как работает адаптивная оптика, и как выглядит PSF.

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

Важность / актуальность

Сейчас: 8/10

Через 7 лет: 9/10 (огромные телескопы + космологические задачи линзирования сильно завязаны на PSF)

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

Научный аппарат.

геометрическая и волновая оптика;

теория турбулентности (в базовом объёме);

численные методы, возможно элементы линзинга.

Рекомендованный язык.

ядра симуляторов — C/C++/Fortran;

анализ и визуализация в Python.

Комментарий астрофизика.
Эта область идеально подойдёт тем, кто любит «железо» и реальный телескоп. Чуть меньше про data-mining, чуть больше про физику приборов.

## 13. Планирование и оптимизация наблюдений телескопа

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

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

Важность / актуальность

Сейчас: 8/10

Через 7 лет: 9/10 (телескопов и заявок больше, автоматизации — тоже)

Сложности.
Это сложные оптимизационные задачи с множеством ограничений, часто NP-трудные, плюс неопределённость (погода, отказ техники).

Научный аппарат.

дискретная математика, графы, задачи оптимизации;

основы теории вероятностей (модели погоды и т.п.);

алгоритмы (эвристики, метаэвристики, линейное/целочисленное программирование).

Рекомендованный язык.

Python с библиотеками оптимизации (PuLP, OR-Tools) для прототипов;

для продакшен-решений — Python + C++/Java (зависит от среды обсерватории).

Комментарий астрофизика.
Это что-то на стыке астрономии, операционного ресёрча и софта. Хороший планировщик может улучшить работу телескопа не хуже, чем новый прибор.

## 14. Визуализация и интерактивное исследование многомерных данных

Суть.
Делать удобные инструменты, чтобы учёные могли «глазами и руками» исследовать сложные данные: 3D-кубы, многомерные каталоги, мультиволновые наборы.

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

Важность / актуальность

Сейчас: 8/10

Через 7 лет: 9/10 (данные сложнее, интерес к VR/web-визуализации растёт)

Сложности.
Необходимость работать с большими объёмами, не перегружая интерфейс; создание удобного UX для учёных; производительность рендера.

Научный аппарат.

базовая статистика и понимание данных;

основы компьютерной графики и визуализации;

немного HCI/UX-подходов.

Рекомендованный язык.

Python (Jupyter, matplotlib, bokeh, glue, VO-клиенты);

для веб/VR — JavaScript/TypeScript плюс движки визуализации.

Комментарий астрофизика.
Очень благодарная область для тех, кто любит «рисовать» данные и делать красивые, понятные картинки, за которые потом все благодарны.

## 15. Бортовое ПО и on-board обработка данных

Суть.
ПО, которое работает прямо на спутнике/космическом аппарате: управление, телеметрия, первичная обработка, иногда — onboard-нейросети.

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

Важность / актуальность

Сейчас: 9/10

Через 7 лет: 10/10 (больше спутников, больше автономности, больше onboard-AI)

Сложности.
Жёсткие ограничения по памяти, энергии, надёжности; требования к realtime-поведению; защита от сбоев и радиации, сертификация.

Научный аппарат.

основы системного программирования, ОС реального времени;

базовая электроника, архитектура вычислительных систем;

классическая механика (ориентация КА), немного управления.

Рекомендованный язык.

ядро — C (NASA core Flight System — как раз C-фреймворк для полётного ПО);

в ряде случаев C++, но аккуратно;

Python — для наземных симуляторов, тестов, обработки данных.

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

# Итог: какой язык выбрать и какие навыки качать

### 1. Основной язык: Python

По всем 15 задачам видно, что:

почти вся пользовательская логика, анализ данных, ML, работа с архивами и визуализации делаютcя на Python;

проект Astropy официально позиционируется как ядро астрономического софта на Python и как основа для экосистемы пакетов;

для машинного обучения в астрономии создана отдельная библиотека astroML, тоже на Python;

крупные проекты (LSST, космологические пайплайны и т.д.) используют C/C++ в ядре, но верхний слой и интерфейсы к пользователю — Python.

Вывод: рациональный выбор для школьника, идущего в астрономию — сделать Python своим «родным языком».

Что конкретно освоить:

сам язык (функции, классы, исключения, модули);

numpy, scipy, matplotlib;

pandas, основы обработки таблиц;

astropy, astroquery;

базовый scikit-learn, позже — что-то из глубокого обучения.

### 2. Второй язык: C++ (или C)

Зачем:

все тяжёлые и критические по производительности части (симуляции, реалтайм обработка, космическое ПО) традиционно пишутся на C/C++/Fortran;

LSST Science Pipelines используют C++-ядро с Python-обёрткой;

NASA core Flight System (cFS), применяемый на реальных миссиях, — C-фреймворк (к которому появилась возможность писать C++-приложения).

Поэтому:

если его тянет в симуляции, HPC, гравитационно-волновые пайплайны, бортовое ПО, второй серьёзный язык — C++ (или C, если интерес именно к низкоуровневому).

если больше интерес к чистой науке и анализу данных, C++ можно учить позже и по мере необходимости.

### 3. Обязательный «микро-язык»: SQL / ADQL

Практически всё, что связано с:

гигантскими каталогами (Gaia, будущий LSST, ESO-архивы, Euclid и др.),

виртуальной обсерваторией (TAP-сервисы),

использует ADQL — SQL-подобный язык запросов к астрономическим БД.

Поэтому:

выучить обычный SQL — must have;

ADQL — тонкая надстройка, освоится быстро.

### 4. Другие языки

Fortran — полезно хотя бы «читать и чуть-чуть править» для работы со старыми, но важными кодами (гидродинамика, N-body, эволюция звёзд).

Julia — перспективный вариант, особенно если захочется самому писать высокопроизводительный научный код (пример Celeste.jl и сообщество JuliaAstro), но пока это скорее «дополнение», а не замена Python.

### 5. Какие ещё навыки прокачивать

Алгоритмы и структуры данных

базовые структуры (массивы, списки, хэш-таблицы, деревья, графы);

алгоритмы сортировки, поиска, простейшие графовые алгоритмы;

понимание сложности (O(n), O(n log n) и т.п.).

Это нужно и для оптимизации кода, и для понимания статей/репозиториев.

Математика и статистика

линейная алгебра (матрицы, собственные значения, SVD);

математический анализ, дифференциальные уравнения;

теория вероятностей и статистика (распределения, оценки, доверительные интервалы, байесовский подход).

Без этого астрономический код превращается в «магические заклинания», а не в осмысленный инструмент.

Linux, git и базовый DevOps

уверенное владение Linux, командной строкой, SSH;

git и GitHub/GitLab;

базовые навыки работы с удалёнными серверами, пакетами, виртуальными окружениями (conda/venv).

Почти вся астрономия живёт на Linux-кластерах и в git-репозиториях.

Работа с данными и базами

SQL, ADQL, основы проектирования БД;

понимание форматов FITS, HDF5;

опыт работы с астрономическими архивами через VO-сервисы и astroquery.

Базовый ML и, по желанию, Deep Learning

scikit-learn: регрессия, классификация, кластеризация, понижение размерности;

немного PyTorch/TF, если потянет в глубину;

прицельно — библиотеки типа astroML, чтобы увидеть реальные астропримеры.

## Если совсем кратко для школьника

Сейчас начать с Python и научиться:

уверенно писать код;

работать с numpy/scipy/matplotlib;

использовать Astropy/astroquery.

Параллельно качать математику и статистику — это не менее важно, чем синтаксис.

Через 1–2 года добавить SQL/ADQL и попробовать реальные архивы (Gaia и т.п.).

На старших курсах взять C++ (или C), если захочется идти в симуляции, HPC или космическое ПО.

При таком наборе он будет чувствовать себя уверенно почти в любой из 15 задач — от экзопланет и космологии до гравитационных волн и космических миссий.
Nicon Aculon 7x35, Hawke Nature 10x50
SW AZ5 + TS 102ED f/7

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

  • *****
  • Сообщений: 1 121
  • Благодарностей: 34
  • БПЦ 20х60, HD 75x60
    • Сообщения от Павел Васильев
Re: Какой язык программирования учить
« Ответ #118 : 30 Ноя 2025 [12:09:40] »
А вопрос был такой - какой язык учить для программирования в астрономии. Связь понятна?

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

Но! Есть в мире одна фирма, которая объединила два языка, С++ и Object Pascal (Delphi) в одной коробке, расширив возможности обоих языков. Быстрый компилятор Delphi может генерировать заголовочные файлы, статические библиотеки lib/bpi и пакеты классов компонентов bpl для их использования в С++ приложениях. Зачем и кому это надо?

По быстроте сборки бинарных файлов компиляторы Cи-подобных языков вряд ли когда-либо обгонят однопроходные компиляторы Object Pascal и Free Pascal, по причине своей повышенной организационной сложности и, как следствие, необходимости разборки конструкций, указателей, типов данных, парсинга операций и чувствительного к регистру исходного кода. Время-деньги, а тут для С++ появляются готовые кросс-платформенные ресурсы Delphi, которые не надо конвертировать, тратить время, а сразу можно пускать в оборот.

Тоже самое касается создания GUI программ,  графических человеко-машинных интерфейсов пользователя с базами данных. Сравнение двух проектов с десятком одинаковых по функциональности модулей показывает, что сборка бинарника на С++ Builder выполняется в 5-10 раз медленнее, чем на Delphi.  Используется не классический, а современный внешний Modern 64bit С++ компилятор. Сложные интерфейсы c 3D собираются долго, не считая время на отладку. Есть выход. GUI делается на Object Pascal в Rapid Application Development Studio а затем через буфер, копипастом, переносится в С++ проект. При наборе готовых классов объектов, визуальных контролов и меню из палитры компонентов остаётся только перепрограммировать код на событиях управляющих элементов.

Такой же подход, примерно, реализован в RAD Studio для взаимодействия языков Object Pascal и Python. Более того, благодаря наборам компонентов Delphi4Python и Python4Delphi теперь всё, что написано на Питоне сразу доступно в Дельфи и наоборот.

В итоге совет такой - для астрономии надо учить на примерах язык С++ и параллельно изучать Object Pascal и Python. Остальные языки пусть учат специалисты по веб-дизайну, кодированию микропроцессоров и шифрованию информации.
Программирование системы AstrobloQ https://gitverse.ru/astrogeoscenter/astrobloq

Оффлайн Ph_user

  • *****
  • Сообщений: 3 176
  • Благодарностей: 84
    • Сообщения от Ph_user
Re: Какой язык программирования учить
« Ответ #119 : 30 Ноя 2025 [12:10:19] »
переводит с/с++ функции в ASM вставки

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

Примерно 5% вэлью.

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

Вон тесты разных вариантов просто ресайза картинок -
https://github.com/AviSynth/AviSynthPlus/blob/26392507eb7486bef0564a324bffe9ca69664f24/avs_core/filters/resample.cpp#L383
Horizontals                Hor+Vert    Verticals
 [8]  [10-14]  [16]  [32]  [8]  [10]   [8]  [10-14] [16] [32]
 177     170    101  208               262   486    417   217    C-RaspberryPi5 gcc 12.2 (code variant)
 137     469     88  208                                         C-RaspberryPi5 gcc 12.2 (code variant)
 227     218    147  178                                         C-RaspberryPi5 gcc 12.2 no vector attrib ??! Quicker than vector attrib version gcc not recommended
 416     611    579  404    128  186   362   609    556   624    C-RaspberryPi5 llvm 14 vector attrib
  90     185     94  403                                         C-RaspberryPi5 llvm 14 vector attrib + integer madd@H
 180     182    162          67        213   212    206   639    C-RaspberryPi5 llvm 14 no vector attrib
1230    1168   1129                                              C-ClangCl in VS2022 SSE2
1270    1238   1186                   1550  1555   1560  3670    C-ClangCl in VS2022 AVX2
1051    1126   1102                                              C-Intel ICX 2025 SSE2
1513    2355   1560 1128                                 1969    C-Intel ICX 2025 SSE4.2  smart madd!
1938    2413   1775 1061    442  453  1136  1126   1037  3511    C-Intel ICX 2025 AVX2
 212     188    187  264     73   64   223   195    198   268    C-MSVC SSE2 3.7.3
 417     463    360                    449   424    384   352    C-MSVC SSE2 3.7.4 (some unrolling vs. 3.7.3)
 215     215     97  928     79   79   220   744     96  1951    C-MSVC SSE2 (zero optim on 8-16, did not tolerate vector-friendly code)
 201     206     99                                              C-MSVC AVX2 (zero optim also on 8-16, not even using SSE2 xmm registers)
 597     631    651                                              C-Intel SSE4.2  3.7.4 code
1183    1193    889                                              C-Intel AVX2    3.7.4 code
5600                       2140                                  SIMD-avsresize (AVX2 or AVX512?)
2260                        840                                  SIMD-fmtconv (16 bit output for 8 bits)
4578    2614   2560 2250   1490       4220  4534   3887  3570    SIMD-MSVC AVX2 3.7.3 (horizontal was memory-boundary unsafe)
3631    3505   3221 2344   1291 1354  3804  4466   3855  2260    SIMD-MSVC AVX2 3.7.4 Float vertical regression - no time to finish
3720    3478   3130 2385   1566 1480  5014  5288   5077  3810    SIMD-MSVC AVX2 + incrementing offsets in V, 20-25% gain in integer verticals
4730    4612   4233 2487   1390 1471  3792  4476   4380  3942    SIMD-ClangCl AVX2, verticals behind MSVC by surprise
2373    2181   1893 1306    868  723  2660  2137   2670  1886    SIMD-MSVC SSSE3 + incrementing offsets in V, 20-25% gain in integer verticals
2294    2979   2595 1460    859  976  2623  2865   2625  1962    SIMD-Intel ICX 2025 SSSE3
4395    4616   4160 2570   1664 1720  5110  5870   5085  2999    SIMD-Intel ICX 2025 AVX2 Surprisingly slow at vertical float FIXME, slower than C :)
« Последнее редактирование: 30 Ноя 2025 [12:17:34] от Ph_user »