Интервью с Алексеем Пахуновым, программистом компании SpaceX


 [ Сообщений: 137 ]  Стрaница Пред.  1 ... 3, 4, 5, 6, 7
Автор  
 
Сообщение  
Ветеран

Регистрация: 21.08.2014
Сообщения: 13925
Благодарил (а): 314 раз.
Поблагодарили: 315 раз.
СССР
VSU писал(а):
Художник писал(а):
Все там пахло. Исходники доступны в интернете.

Ну если так, то тогда респект Дику Баттину. Признаю - не знал...

Желающие могут посмотреть тут: https://github.com/chrislgarry/Apollo-11

_________________
Технические достижения в России как у Полкана из "Летучего корабля": "Построишь?" — "Куплю!"

   
  
    
 
Сообщение  
Старожил
Аватара пользователя

Регистрация: 16.09.2014
Сообщения: 7020
Откуда: Новосибирск
Благодарил (а): 177 раз.
Поблагодарили: 432 раз.
Россия
Синий апельсин писал(а):
а шо токое ST?


Паскале - Си - подобный язык программирования промышленных контроллеров (PLC).
Вот пример моего кода (контроллер ОВЕН PLC160):

PROGRAM PLC_DneprCalc
VAR
Count, Cnt, CntZ : BYTE := 1;
tCalc : TON;
arrCalc : ARRAY [1..20] OF REAL;
END_VAR

// Расчет среднего значения показаний расходомера

tCalc (In := NOT tCalc.Q, Pt := T#5S);

IF dExpense < 0.002 THEN
OutM := OutS := 0; Count := 1;
FOR Cnt := 2 TO MaxC DO arrCalc [Cnt] := 0; END_FOR;
RETURN;
END_IF;
arrCalc [1] := dExpense * dCorr * 1000;

IF tCalc.Q THEN
FOR Cnt :=0 TO (MaxC - 2) DO arrCalc [MaxC - Cnt] := arrCalc [(MaxC - 1) - Cnt]; END_FOR
OutM := 0; CntZ := 0;
FOR Cnt := 1 TO MaxC DO
OutM := OutM + arrCalc [Cnt];
IF arrCalc [Cnt] > 0 THEN CntZ := CntZ + 1; END_IF; // Не считать нулевые показания
END_FOR
OutM := OutM / CntZ; // Среднерасчитанное значение
Count := Count + 1;
IF Count >= MaxC THEN Count := 1; END_IF;
IF Count = 2 THEN OutS := OutM; END_IF;
END_IF

Самое прикольное, что в менеджере задач можно поставить период вызова процедур в миллисекндах, не надо
прописывать в теле программы. Ну и смотрящая собака , как в микроконтроллерах присутствует. :!)-D

   
  
    
 
Сообщение  
Ветеран
Аватара пользователя

Регистрация: 26.08.2014
Сообщения: 20269
Благодарил (а): 0 раз.
Поблагодарили: 468 раз.
VSU писал(а):
Синий апельсин писал(а):
а шо токое ST?


Паскале - Си - подобный язык программирования промышленных контроллеров (PLC).
Вот пример моего кода (контроллер ОВЕН PLC160):

PROGRAM PLC_DneprCalc
VAR
Count, Cnt, CntZ : BYTE := 1;
tCalc : TON;
arrCalc : ARRAY [1..20] OF REAL;
END_VAR

// Расчет среднего значения показаний расходомера

tCalc (In := NOT tCalc.Q, Pt := T#5S);

IF dExpense < 0.002 THEN
OutM := OutS := 0; Count := 1;
FOR Cnt := 2 TO MaxC DO arrCalc [Cnt] := 0; END_FOR;
RETURN;
END_IF;
arrCalc [1] := dExpense * dCorr * 1000;

IF tCalc.Q THEN
FOR Cnt :=0 TO (MaxC - 2) DO arrCalc [MaxC - Cnt] := arrCalc [(MaxC - 1) - Cnt]; END_FOR
OutM := 0; CntZ := 0;
FOR Cnt := 1 TO MaxC DO
OutM := OutM + arrCalc [Cnt];
IF arrCalc [Cnt] > 0 THEN CntZ := CntZ + 1; END_IF; // Не считать нулевые показания
END_FOR
OutM := OutM / CntZ; // Среднерасчитанное значение
Count := Count + 1;
IF Count >= MaxC THEN Count := 1; END_IF;
IF Count = 2 THEN OutS := OutM; END_IF;
END_IF

Самое прикольное, что в менеджере задач можно поставить период вызова процедур в миллисекндах, не надо
прописывать в теле программы. Ну и смотрящая собака , как в микроконтроллерах присутствует. :!)-D
судя по синтаксису, типам и процедурам - Паскаль. насчет вызов прцедур, да еще и в миллисекундах не понял, честно :)

   
  
    
 
Сообщение  
Старожил
Аватара пользователя

Регистрация: 16.09.2014
Сообщения: 7020
Откуда: Новосибирск
Благодарил (а): 177 раз.
Поблагодарили: 432 раз.
Россия
Художник писал(а):
Ты ипанулся. Аполлон начали делать в 1961, а буран в 1976. К тому времени Аполлоны успели отлетать и программу уже закрыли. Между ними пропасть в развитии электроники и компьютеров.


Чего истеришь? Я писал про КВАНТ, а не про Аполлон. Еще раз, медленно и с расстоновкой - Квант и Буран - ровесники,
Аполлон к ним никаким боком. Иди проспись, если не понял мой пост.

   
  
    
 
Сообщение  
Старожил
Аватара пользователя

Регистрация: 16.09.2014
Сообщения: 7020
Откуда: Новосибирск
Благодарил (а): 177 раз.
Поблагодарили: 432 раз.
Россия
Синий апельсин писал(а):
судя по синтаксису, типам и процедурам - Паскаль. насчет вызов прцедур, да еще и в миллисекундах не понял, честно


В принциее - Паскаль, только есть прямая адресация к памяти и области ввода-вывода, что позволяет обрабатывать
по входам энкодеры до 100 кГц программно. Вызов процедуры по времени - можно ее не вызывать в теле программы
по какому-то условию, а поставить ей период вызова, и она будет выполняться раз в период (например 500 ms),
а результат => через глобальные переменные.

   
  
    
 
Сообщение  
Обозреватель
Аватара пользователя

Регистрация: 18.08.2014
Сообщения: 87680
Откуда: Плюк—планета № 215 в Тентуре галактики "Кин-дза-дза" в Спирали.
Благодарил (а): 2969 раз.
Поблагодарили: 2651 раз.
СССР
Синий апельсин писал(а):
судя по синтаксису, типам и процедурам - Паскаль. насчет вызов прцедур, да еще и в миллисекундах не понял, честно


А почему комменты в теле на Русском?

Наши чтоль писали??? :rzach: :rzach: :rzach:

_________________
Изображение

   
  
    
 
Сообщение  
Ветеран
Аватара пользователя

Регистрация: 26.08.2014
Сообщения: 20269
Благодарил (а): 0 раз.
Поблагодарили: 468 раз.
VSU писал(а):
В принциее - Паскаль, только есть прямая адресация к памяти и области ввода-вывода, что позволяет обрабатывать
по входам энкодеры до 100 кГц программно. Вызов процедуры по времени - можно ее не вызывать в теле программы
по какому-то условию, а поставить ей период вызова, и она будет выполняться раз в период (например 500 ms),
а результат => через глобальные переменные.

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

   
  
    
 
Сообщение  
Обозреватель
Аватара пользователя

Регистрация: 18.08.2014
Сообщения: 87680
Откуда: Плюк—планета № 215 в Тентуре галактики "Кин-дза-дза" в Спирали.
Благодарил (а): 2969 раз.
Поблагодарили: 2651 раз.
СССР
VSU писал(а):
В принциее - Паскаль, только есть прямая адресация к памяти и области ввода-вывода, что позволяет обрабатывать
по входам энкодеры до 100 кГц программно. Вызов процедуры по времени - можно ее не вызывать в теле программы
по какому-то условию, а поставить ей период вызова, и она будет выполняться раз в период (например 500 ms),
а результат => через глобальные переменные.


Не не не...

Пошелкак я отседова...

Это не мое...

Нипаскаля ни Алгола ни СИ ни Лиспа не помню... ипа не потребовалось нигде...

А так вякну что нить - потом стыдно будить...

Мое уважение мужики :sh: :sh: :sh:

_________________
Изображение

   
  
    
 
Сообщение  
Старожил
Аватара пользователя

Регистрация: 16.09.2014
Сообщения: 7020
Откуда: Новосибирск
Благодарил (а): 177 раз.
Поблагодарили: 432 раз.
Россия
Чупакабра писал(а):
А почему комменты в теле на Русском?

Наши чтоль писали???


Я писал, мне коменты проще на русском писать... :rzach:
Синий апельсин писал(а):
стремная технология, какая-то. Это ж нужно таймер занимать, а доверять такое компилятору я бы не стал. Если ты имеешь ввиду контроллеры, конечно


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

   
  
    
 
Сообщение  
Старожил

Регистрация: 26.08.2014
Сообщения: 7507
Благодарил (а): 0 раз.
Поблагодарили: 76 раз.
Художник писал(а):
кергуду писал(а):
и бортовой компьютер лунного модуля работал на фортране

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

   
  
    
 
Сообщение  
Участник

Регистрация: 08.10.2015
Сообщения: 1770
Благодарил (а): 0 раз.
Поблагодарили: 96 раз.
Россия
Художник писал(а):
кергуду писал(а):
и бортовой компьютер лунного модуля работал на фортране

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

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

но сами вычислительные алгоритмы отлаживались
на фортране и только затем транслировались в ассемблер

то как это делалось в то время можно посмотреть в книге

Computer methods for mathematical computations
George Elmer Forsythe, Michael A. Malcolm, Cleve B. Moler
Year: 1977

George Elmer Forsythe принимал непосредственное участие
в математическом обеспечении лунной программы

а Cleve B. Moler - автор знаменитого и популярного доныне
Матлаба

   
  
    
 
Сообщение  
Ветеран

Регистрация: 21.08.2014
Сообщения: 13925
Благодарил (а): 314 раз.
Поблагодарили: 315 раз.
СССР
Я не знаю, что написано в той книге (и сумел ли ты ее прочесть и понять, чтоб правильно пересказывать), но ПО аполлона и лунного модуля написано на ассемблере и выложено в инет. Ссылка приведена есть выше.

_________________
Технические достижения в России как у Полкана из "Летучего корабля": "Построишь?" — "Куплю!"

   
  
    
 
Сообщение  
Старожил
Аватара пользователя

Регистрация: 13.06.2015
Сообщения: 7155
Благодарил (а): 387 раз.
Поблагодарили: 276 раз.
кергуду писал(а):
программное обеспечение бортового компьютера в окончательном варианте
было действительно на ассемблере

но сами вычислительные алгоритмы отлаживались
на фортране и только затем транслировались в ассемблер
Обычная схема. Причем не обязательно должна быть связка Фортран-Асська. Просто дуплосопловый об этом не знает

   
  
    
 
Сообщение  
Старожил
Аватара пользователя

Регистрация: 16.09.2014
Сообщения: 7020
Откуда: Новосибирск
Благодарил (а): 177 раз.
Поблагодарили: 432 раз.
Россия
Художник писал(а):
Желающие могут посмотреть тут: https://github.com/chrislgarry/Apollo-11

Посмотрел, впечатлен. Хотя это не классический Ассемблер, но все же. Спасибо, буду знать...

   
  
    
 
Сообщение  
Ветеран
Аватара пользователя

Регистрация: 26.08.2014
Сообщения: 20269
Благодарил (а): 0 раз.
Поблагодарили: 468 раз.
VSU писал(а):
Там другая архитектура - это система реального времени, таймер работает аппаратно, независимо от программы.
Промышленный контроллер - не компьютер. Хотя там тоже процессор.

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

   
  
    
 
Сообщение  
Старожил
Аватара пользователя

Регистрация: 16.09.2014
Сообщения: 7020
Откуда: Новосибирск
Благодарил (а): 177 раз.
Поблагодарили: 432 раз.
Россия
Синий апельсин писал(а):
VSU писал(а):
Там другая архитектура - это система реального времени, таймер работает аппаратно, независимо от программы.
Промышленный контроллер - не компьютер. Хотя там тоже процессор.

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

У меня это - профессиональная обязанность. Синий, у всех известных мне контроллеров функциональный блок таймера
работает от внутренних часов реального времени, а если их нет - то от аппаратного таймера. Будь то Дельта, Омрон,
Фуджи, Юнитроникс, Мицубиши, Овен и т.д. и т.п..... И еще, что бы не спорить, еще мой отдел занимается сервисным
обслуживанием некоторых из вышеперечисленных брэндов, поэтому я знаю их схемотехнику, вся документация имеется,
вплоть до прошивок.... :!)-D

   
  
    
 
Сообщение  
Ветеран

Регистрация: 16.08.2014
Сообщения: 26572
Благодарил (а): 696 раз.
Поблагодарили: 826 раз.
VSU писал(а):
Синий апельсин писал(а):
VSU писал(а):
Там другая архитектура - это система реального времени, таймер работает аппаратно, независимо от программы.
Промышленный контроллер - не компьютер. Хотя там тоже процессор.

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

У меня это - профессиональная обязанность. Синий, у всех известных мне контроллеров функциональный блок таймера
работает от внутренних часов реального времени, а если их нет - то от аппаратного таймера. Будь то Дельта, Омрон,
Фуджи, Юнитроникс, Мицубиши, Овен и т.д. и т.п..... И еще, что бы не спорить, еще мой отдел занимается сервисным
обслуживанием некоторых из вышеперечисленных брэндов, поэтому я знаю их схемотехнику, вся документация имеется,
вплоть до прошивок.... :!)-D

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

   
  
    
 [ Сообщений: 137 ]  Стрaница Пред.  1 ... 3, 4, 5, 6, 7




[ Time : 0.113s | 18 Queries | GZIP : Off ]