Уважаемые программисты freebsd-сообщества!
Подскажите, на каком языке программирования лучше писать программу, работающую в технологическом процессе? Сбои в работе недопустимы.
Программа должна принимать данные, передаваемые ей c многоканального промышленного контроллера через COM-порт, и записывать их на жесткий диск в суточные файлы, а также через TCP-порт давать доступ из локальной сети (выборки из суточных файлов за период времени). Вариантов два: это перл, с которым я знаком и пописываю на нем мелкие приблуды, или Си, на котором ничего не писал и разбираться надо с нуля. Можете свой предложить
>Уважаемые программисты freebsd-сообщества!
>Подскажите, на каком языке программирования лучше писать программу, работающую в технологическом процессе?
>Сбои в работе недопустимы.
>Программа должна принимать данные, передаваемые ей c многоканального промышленного контроллера через COM-порт,
>и записывать их на жесткий диск в суточные файлы, а также
>через TCP-порт давать доступ из локальной сети (выборки из суточных файлов
>за период времени). Вариантов два: это перл, с которым я знаком
>и пописываю на нем мелкие приблуды, или Си, на котором ничего
>не писал и разбираться надо с нуля. Можете свой предложить
имхо, для техпроцессов - только Си
но в случае некритичности точности по времени и быстродействия, то сойдет что угодно, в т.ч. и Перл.
точность работы программы не должна быть хуже 1 секунды. Т.е. программа должна сообщать состояние процесса (порядка 1000 датчиков циклически опрашивается) на любой момент времени с точностью 1 секунда.
>имхо, для техпроцессов - только Си
>но в случае некритичности точности по времени и быстродействия, то сойдет что угодно, в т.ч. и Перл.
Для техпроцессов только Ada95. Можно использовать и компиляторы с Ada83. Это зависит от используещегося встроенного железа. В портах FreeBSD есть Gnat - /usr/ports/lang/gnat
>>имхо, для техпроцессов - только Си
>>но в случае некритичности точности по времени и быстродействия, то сойдет что угодно, в т.ч. и Перл.
>Для техпроцессов только Ada95. Можно использовать и компиляторы с Ada83. Это зависит
>от используещегося встроенного железа. В портах FreeBSD есть Gnat - /usr/ports/lang/gnat
>Извините, если я не прав, но у каждого свои взгляды, для таких задачь очень популярны и функциональные языки, я ada не вычеркиваю из Вашего ответа, но слово ТОЛЬКО там явно лишнее. IMHO.
>>>имхо, для техпроцессов - только Си
>>>но в случае некритичности точности по времени и быстродействия, то сойдет что угодно, в т.ч. и Перл.
>>Для техпроцессов только Ada95. Можно использовать и компиляторы с Ada83. Это зависит
>>от используещегося встроенного железа. В портах FreeBSD есть Gnat - /usr/ports/lang/gnat
>>
>
>Извините, если я не прав, но у каждого свои взгляды, для таких
>задачь очень популярны и функциональные языки, я ada не вычеркиваю из
>Вашего ответа, но слово ТОЛЬКО там явно лишнее. IMHO.
Если встает вопрос о надежности такой системы, а это обычно непосредственно связано с угрозой жизни людей - в гробу я видел, уж извини за вольготность изложения, инструменты, в которых есть возможностью написать: Стол=Стул+Табуретка. Это камень в огород всяких Сей. А упавшая ракета, по моему, Ариан-5 у французов из-за переполнения 16-разрядного счетчика? "У нас на Фортране счетчик переполнился! Мы не виноваты, это все системные программисты." Какая разница? При наличии высокого уровня риска для человеческих жизней решения подобного плана фатальны.
В вопросах с подобным уровнем риска лучше придерживаться подобного: "Есть два мнения - мое и неправильное". В остальных вопросах, кои являются всего лишь некой формой развлечения, можно программировать на чем душа пожелает, хоть в машинных кодах.
Вы первый, с кем совпадает моё мнение :) [~]o
Выскажу мнение: пылкий оратор не знает Си. А поп$#деть любит./poige
--
http://www.i.morning.ru/~poige/
>Выскажу мнение: пылкий оратор не знает Си. А поп$#деть любит.
>Все они, ораторы то бишь, это дело уважають.
Впрочем, Ada - язык хороший.
Pyton!!!
Там есть библиотеки готовые для решения таких стандартных задач.
Роботает все быстро и надежно.
Питон и перл по сути своей одинаковые языки.
>Питон и перл по сути своей одинаковые языки.вот тут ты неправ.
Все библиотеки(ну или пости все) написаны на Си, и быстродействие
программ на pyton сравнимо с программами на Си.
>>Питон и перл по сути своей одинаковые языки.
>
>вот тут ты неправ.
>Все библиотеки(ну или пости все) написаны на Си, и быстродействие
>программ на pyton сравнимо с программами на Си.Ну на этот счет ты ошибаешься немного :)
Python в несколько раз лучше Perl, но до си ПО ПРОИЗВОДИТЕЛЬНОСТИ ни какой из этих языков не дотягивает :) Python скомпилированый в байт-код ещё можно кое-как равнять к Java ...
Надежнее будет программа написанная на том языке, который ты лучше знаешь. У тебя выбора нет, пиши на perl'е.
>Надежнее будет программа написанная на том языке, который ты лучше знаешь. У
>тебя выбора нет, пиши на perl'е.Погодите, я не понял. Если нужна программа с такими запросами, чтобы была точная, сбои недопустимы и т.д. то какой может быть perl ? :-)
Си .. не си, где вы видели к примеру систему управления полетами написаную на перле, си или си++ etc. ? :)
Извините, если что не так понял.
>
>Погодите, я не понял. Если нужна программа с такими запросами, чтобы была
>точная, сбои недопустимы и т.д. то какой может быть perl ?
>:-)
>Си .. не си, где вы видели к примеру систему управления полетами
>написаную на перле, си или си++ etc. ? :)
>Извините, если что не так понял.Предлагаешь писать на асме?
>>
>>Погодите, я не понял. Если нужна программа с такими запросами, чтобы была
>>точная, сбои недопустимы и т.д. то какой может быть perl ?
>>:-)
>>Си .. не си, где вы видели к примеру систему управления полетами
>>написаную на перле, си или си++ etc. ? :)
>>Извините, если что не так понял.
>
>Предлагаешь писать на асме?Вы что, сударь, с дуба упали ? :) Какой асм :)
Есть много разных хороших языков, типа schemes etc.
По поводу того, что Ада хороша для данной задачи, я с Вами согласен.
Но:
Языка Си вкупе со знанием программирования под FreeBSD будет вполне достаточно.
Можно писать и на Си++, совсем немного помедленнее будет.Большие проекты пишутся коллективно.
Очень сложно найти 3-х человек знающих Аду. А изучать ее с нуля займет много времени, изучение завершится аккурат к появлению нового стандарта:)
Далее, человек может уйти с работы.
Кто будет сопровождать проект реализованный на Аде?Тем же кто советует человеку взять на вооружение Питон, скажу сразу - питон и джава - полный отстой(последний - в особенности, если кто ставил Оракл, меня поймет:))). На них пишут либо люди, которым лень взять и выучить что-нить нормальное, либо ненормальные, желаюшие блеснуть своей исключительностью, либо несчастные, которых начальство заставило.
Си, асм и Фортран - вот языки настоящих программистов. (с) Дейкстра.На них можно написать все.
>По поводу того, что Ада хороша для данной задачи, я с Вами
>согласен.
>Но:
>Языка Си вкупе со знанием программирования под FreeBSD будет вполне достаточно.
>Можно писать и на Си++, совсем немного помедленнее будет.
>
>Большие проекты пишутся коллективно.
>Очень сложно найти 3-х человек знающих Аду. А изучать ее с нуля
>займет много времени, изучение завершится аккурат к появлению нового стандарта:)
>Далее, человек может уйти с работы.
>Кто будет сопровождать проект реализованный на Аде?
>
>Тем же кто советует человеку взять на вооружение Питон, скажу сразу -
>питон и джава - полный отстой(последний - в особенности, если кто
>ставил Оракл, меня поймет:))). На них пишут либо люди, которым лень
>взять и выучить что-нить нормальное, либо ненормальные, желаюшие блеснуть своей исключительностью,
>либо несчастные, которых начальство заставило.
>Си, асм и Фортран - вот языки настоящих программистов. (с) Дейкстра.
>
>На них можно написать все.Да тут человек вообще-то такую задачу высказал, что кроме как на C++ коллективно её писать ни на чем не стоит (и то что C++ будет медленнее - это уже не правда, просто писать надо уметь), но не делайте из C или C++ лучших языков в мире, вы представляете себе систему управления полетами или ядерным оружием, написанную на Си или Си++ или того хуже на асме или на форте ? :)
Лично я - нет, а вот на ADA или на Lisp - представляю, потому что они уже имеют место быть.
>Да тут человек вообще-то такую задачу высказал, что кроме как на C++
>коллективно её писать ни на чем не стоит
Зачем тогда Аду советовать? :)> но не делайте из C или C++ лучших языков в
>мире, вы представляете себе систему управления полетами или ядерным оружием, написанную на Си или Си++ или того хуже на асме или на форте ? :)
>Лично я - нет, а вот на ADA или на Lisp -
>представляю, потому что они уже имеют место быть.
Многие системы управления объектами, критическими к сбоям написаны на Си, Фортране и даже PL/1.
Относительно языка Ада - им пользуются американцы.
Чем пользутся наши - гостайна, разглашать не станем, ибо даже не знаем:)Язык Ада хорош, но - важно не столько то, каким языком пользуется программист, сколько то, умеет ли он им пользоваться.
Если человек не знает, что такое синхронизация процессов, то ему ни одна хитровывернутая кострукция языка Ада не поможет.
И наоборот, если человек умеет писать на Си, он напишет что угодно быстро, во всяком случае, не медленнее чем он сделал бы на Аде. Максимум, что ему может понадобиться - это ассемблерные вставки.
На лиспе имхо вообще такое не следует писать.
Кстати, а что именно из критического к времени выполнения/надежности написано на лиспе?
>>Да тут человек вообще-то такую задачу высказал, что кроме как на C++
>>коллективно её писать ни на чем не стоит
>Зачем тогда Аду советовать? :)
>
>> но не делайте из C или C++ лучших языков в
>>мире, вы представляете себе систему управления полетами или ядерным оружием, написанную на Си или Си++ или того хуже на асме или на форте ? :)
>>Лично я - нет, а вот на ADA или на Lisp -
>>представляю, потому что они уже имеют место быть.
>Многие системы управления объектами, критическими к сбоям написаны на Си, Фортране и
>даже PL/1.
>Относительно языка Ада - им пользуются американцы.
>Чем пользутся наши - гостайна, разглашать не станем, ибо даже не знаем:)
>
>
>Язык Ада хорош, но - важно не столько то, каким языком пользуется
>программист, сколько то, умеет ли он им пользоваться.
>Если человек не знает, что такое синхронизация процессов, то ему ни одна
>хитровывернутая кострукция языка Ада не поможет.
>И наоборот, если человек умеет писать на Си, он напишет что угодно
>быстро, во всяком случае, не медленнее чем он сделал бы на
>Аде. Максимум, что ему может понадобиться - это ассемблерные вставки.
>На лиспе имхо вообще такое не следует писать.
>Кстати, а что именно из критического к времени выполнения/надежности написано на лиспе?
>Да много чего на разных языках пишут, не суть, сори за выражение - каждый дрочит, как он хочет. А такие критические РТ системы пишутся только на функциональных языках, каким не является ни си ни си++.
А вот молодому человеку я вообще ничего не совутую, опасно знаете ли :)
Ада таковым не является, кстати.>А такие критические РТ системы пишутся только на функциональных языках
я если честно не вполне понимаю, почему Вы так решили.И зачем программе типа ракета-цель какие-то заморочки с лиспом или чем-нить подобным?! Своих глюков не хватает, что ли, еще полагаться на корректность интерпретатора лиспа.
Для решения RT-задач пойдет обычная прога на Си/Си++ с event-driven енждайном. Ну или на Аде, раз уж Вы о ней вспомнили:)
>Ада таковым не является, кстати.
>
>>А такие критические РТ системы пишутся только на функциональных языках
>я если честно не вполне понимаю, почему Вы так решили.
>
>И зачем программе типа ракета-цель какие-то заморочки с лиспом или чем-нить подобным?!
>Своих глюков не хватает, что ли, еще полагаться на корректность интерпретатора
>лиспа.
>Для решения RT-задач пойдет обычная прога на Си/Си++ с event-driven енждайном. Ну
>или на Аде, раз уж Вы о ней вспомнили:)event-driven - это что-то из разряда CS ? А lisp легко компилируется, зачем Вам интерпретатор ? :)
>>По поводу того, что Ада хороша для данной задачи, я с Вами
>>согласен.
>>Но:
>>Языка Си вкупе со знанием программирования под FreeBSD будет вполне достаточно.
>>Можно писать и на Си++, совсем немного помедленнее будет.
>>
>>Большие проекты пишутся коллективно.
>>Очень сложно найти 3-х человек знающих Аду. А изучать ее с нуля
>>займет много времени, изучение завершится аккурат к появлению нового стандарта:)
>>Далее, человек может уйти с работы.
>>Кто будет сопровождать проект реализованный на Аде?
>>
>>Тем же кто советует человеку взять на вооружение Питон, скажу сразу -
>>питон и джава - полный отстой(последний - в особенности, если кто
>>ставил Оракл, меня поймет:))). На них пишут либо люди, которым лень
>>взять и выучить что-нить нормальное, либо ненормальные, желаюшие блеснуть своей исключительностью,
>>либо несчастные, которых начальство заставило.
>>Си, асм и Фортран - вот языки настоящих программистов. (с) Дейкстра.
>>
>>На них можно написать все.
>
>Да тут человек вообще-то такую задачу высказал, что кроме как на C++
>коллективно её писать ни на чем не стоит (и то что
>C++ будет медленнее - это уже не правда, просто писать надо
>уметь), но не делайте из C или C++ лучших языков в
>мире, вы представляете себе систему управления полетами или ядерным оружием, написанную
>на Си или Си++ или того хуже на асме или на
>форте ? :)
>Лично я - нет, а вот на ADA или на Lisp -
>представляю, потому что они уже имеют место быть.
Что? На Форте - хуже???!!! Сам Форт создавался как язык управления процессами в реальном масштабе времени. Какое тут может быть "хуже"! SnaiL, узнай побольше Форт - затем говори!!!
>Надежнее будет программа написанная на том языке, который ты лучше знаешь. У
>тебя выбора нет, пиши на perl'е.А на перле можно получать данные с COM-порта со скоростью 9600 бит, чтоб не было переполнения и чтоб ни в коем случае ничего не потерялось?
У меня почему-то сомнения на этот счет...
>Уважаемые программисты freebsd-сообщества!
>Подскажите, на каком языке программирования лучше писать программу, работающую в технологическом процессе?
>Сбои в работе недопустимы.
>Программа должна принимать данные, передаваемые ей c многоканального промышленного контроллера через COM-порт,
>и записывать их на жесткий диск в суточные файлы, а также
>через TCP-порт давать доступ из локальной сети (выборки из суточных файлов
>за период времени). Вариантов два: это перл, с которым я знаком
>и пописываю на нем мелкие приблуды, или Си, на котором ничего
>не писал и разбираться надо с нуля. Можете свой предложить
могу предложить свою реализацию.
я занимаюсь подобными вещами.Вообще я сделал бы подобную вещь не монолитной. Нужна максимальная производительность/стабильность - разделяй упрощай и влавствуй!
1) демон - читатель с порта
2) сервер пользовательских запросов.возможно ли договориьтся с вами о выполнении мной подобной работы за оплату? пишите на dvorkin@flightmedia.ru
WBR, Dvorkin
Столько уже ответов...Может уже кто и выразил моё мнение, не знаю, все ответы не прочитал.
Скажу, если ты не знаешь Си (даже если знаешь, но опыт маловат), то лучше на нём не пиши, надёжности у тебя не будет. Это я те бе говорю на 99.99%
Заколебёшся отлавливать ошибки.Лучше хороший развитый скриптовой язык.
лучше всего писать машинным кодом и линковать cat-ом :-)))
Это круто! по хэкерски!Рассказывают, Cray так умеет :-)
А мы - сопляки :-))))
>Уважаемые программисты freebsd-сообщества!
Я Линуксоид...
>Подскажите, на каком языке программирования лучше писать программу, работающую в технологическом процессе?
На C...>Сбои в работе недопустимы.
На C++...>Программа должна принимать данные, передаваемые ей c многоканального промышленного контроллера через COM-порт,
>и записывать их на жесткий диск в суточные файлы, а также
>через TCP-порт давать доступ из локальной сети (выборки из суточных файлов
>за период времени).
На Perl, если Вы знаете его достаточно хорошо. На любом скриптовом языке, который Вы можете быстро выучить. Рекомендую Ruby, или Python.>Вариантов два: это перл, с которым я знаком
>и пописываю на нем мелкие приблуды, или Си, на котором ничего
>не писал и разбираться надо с нуля. Можете свой предложить
Я бы не доверил критически важную часть системы такому, безусловно,
любознательному, способному и смелому духом, но малоопытному
программисту, как Вы. Не обижайтесь -- я серьёзно. Судя по Вашим словам --
вам сунули не Вашу работу.
Для работы в реальном времени неплохо бы использовать и ОС соответствующую (QNX ,Hurd)
а писить лучше на с
Я знаком с господами, которые пишут такие приложения. Используют они с/с++, критичные участки пишут на asmе. Так что сюха вполне пойдет, хорошую книгу в руки (рекомендую Герберта Шилдта) - и все получится. А если возникают сомнения по поводу надежности полученного кода, можно попробовать диалект с под названием Cyclone от господ от AT&T.
http://www.research.att.com/projects/cyclone/
>Я знаком с господами, которые пишут такие приложения. Используют они с/с++, критичные
>участки пишут на asmе.
Я могу долго объяснять, почему выбор языка, по большому счёту, не влияет на
надёжность системы, но мне лень это делать...>Так что сюха вполне пойдет, хорошую книгу
>в руки (рекомендую Герберта Шилдта) - и все получится.
Достаточно хорший справочник (в оригинале), но у него много русских изданий,
я видел один перевод -- ну просто тихий ужас!
>Я знаком с господами, которые пишут такие приложения. Используют они с/с++, критичные
>участки пишут на asmе. Так что сюха вполне пойдет, хорошую книгу
>в руки (рекомендую Герберта Шилдта) - и все получится.Герберт Шилдт пишет плохие книги. Все его книги поверхностны, направлены на чайников, содержат ошибки, не отражают духа C++, он не имеет ни малейшего понятия для каких целей создавался C++ и почему он такой, а не другой. Его книги просто дерьмо, более того -- они вредны.
Прежде чем рекомендовать, советую просвятиться на www.accu.org -- там список книг которые рекомендованы для изучения C++ и есть книги не рекомендованые для изучающих. У Шилдта почти всё из того, что он написал не рекомендовано.
Читайте Страуструпа, Гопода!
best regards..
>Для работы в реальном времени неплохо бы использовать и ОС соответствующую (QNX
>,Hurd)
>а писить лучше на с
А как по мне - так и задача неверно поставлена :)
Первое - никакой из дешёвых PC нельзя считать надёжным для применения в технологических процессах.
Второе - никакая из Free системм не может считаться надёжной (и так далее)Задачу как мне кажется слкжует разбить на следующие части:
1. Сьём данных с устройства.
2. Хранение этих данных.Пункт 1 можно (и как мне кажется следует) организовывать на каких-либо однопланых/однокристальных устройствах. Благо их сейчас можно приобрести по приемлемым ценам. На борту обычно имеется RS-232 Ethernet. Плюс всякие бонусы(датчики температур, ИБП с подключением к батарее резервного питания и прочее).
В придачу можно добавить буферный модуль (очень хорошая вещь). Вкратце о нём - устройство имеющее 2 RS232 один на вход, другой на выход, и память от 512Kbytes до NMbytes. Тем самым можно обеспечить промежуточное хранение данных в случае если контроллер по какой-либо причине не читает их.А вот 2 часть уже можно реализовывать на PC.
Язык программирования роли не играет :)
И как он только туда попал если група активных товарищей пытается сделать из него очередной флейм про самый крутой язык програмирования. :)))
Прежде чем решать на чем будеш писать прогу подумай о том что тебе надо и как она будет устроена.
1. Насколько я понял она должна будет только читать даные с СОМ? если она просто собирает статистику то надежность не настолько критично вашего " технологического процесса" (ну а если так критична, то паяем разветвлитель для кабеля, и посылаем даные с контролера разу на несколько компов, а при выборке даных смотрим обьединяем эти даные)
2. Прога фактически будет состоять из 2 частей: а)демона читающего данные с СОМ порта и пишушего их в файл б) проги которая будеть через ТСР предоставлять доступ к этим файлам.Вторую часть можеш писать на чем угодно :) а вот демона прийдется наверное писать на С(можно и на С++, хотя прога будет достаточно простой,а вся красота С++ чуствуется в больших проектах), но написать надежную прогу на нем неимея опыта достаточно проблематично. Я не знаю перла и незнаю как на нем можно сделать чтобы прога работала как "демон", но если можно то зделай тестовую прогу, оцени на ней с какой максимальной скоростью получается принимать даные с порта, если все заработает достаточно быстро, то пиши на перле
ЗЫ:
надежность программы определяется не тем на каком языке она написана, а тем насколько качественно написал ее програмист и проверил тестер.
Реализую выше описанную задачу на любом shell'е (по выбору заказчика). Цена договрная. Надежность и точность сбора гарантирую.
Как-то занимался этим вопросом, но потом забросил.
Если создаешь надежную к сбоям систему, то обрати внимание на языки созданные Niklaus Wirth (Оберон и иже с ними). Да и ADA стоит принять во внимание, её разрабатывали как раз для подобных случаев.
Совет, не связывайся с Си и его потомками. Заработаешь гемморой.
:)