Linux и языки программирования
Модератор: Модераторы разделов
-
newsrc
- Сообщения: 314
- ОС: Slackware
Linux и языки программирования
Занимаюсь администрирование firewall'ов на Linux, иногда возникают вопросы или проблемы с некоторыми программками (типа подсчёта трафика, ротации логов, анализа логов......), от них хочется чего-то другого.
Но вопрос заключается не в выборе таких программ, да и не в них самих, а в желании написания своих программ, есть много задумок, идей.....
На форуме обсуждаются вопросы вроде: "Какой язык мне выбрать Си или С++". Я бы добавил к нему ещё одну фразу: "для написания в linux" различных приложений (сетевых в основном), Си или С++.
Да и для изучения ядра чем лучше владеть (я знаю, что оно написано, в основном, на Си и ассемблере (ассемблер пока не рассматриваем)) Си или С++
Буду благодарен за помощь.
Но вопрос заключается не в выборе таких программ, да и не в них самих, а в желании написания своих программ, есть много задумок, идей.....
На форуме обсуждаются вопросы вроде: "Какой язык мне выбрать Си или С++". Я бы добавил к нему ещё одну фразу: "для написания в linux" различных приложений (сетевых в основном), Си или С++.
Да и для изучения ядра чем лучше владеть (я знаю, что оно написано, в основном, на Си и ассемблере (ассемблер пока не рассматриваем)) Си или С++
Буду благодарен за помощь.
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
-
BlackStar
- Сообщения: 1338
- Статус: We are all Kosh
- ОС: Fedora 10
-
newsrc
- Сообщения: 314
- ОС: Slackware
Re: Linux и языки программирования
А что такая форма записи не подразумевает вопроса?
Дайте совет в выборе языка для программирования в Linux Си или С++????
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
-
GRS
- Сообщения: 236
- Статус: C++ Pro
- ОС: Suse10.2/XP
Re: Linux и языки программирования
С++ нужно использовать - если есть готовые библиотеки, которые хорошо знаешь, в данном случае для работы с сетью. Если их нет - есть 2 пути, написать библиотеку самому, смотреть другие языки. Из готовых вариантов есть boost::asio и poco, правда я для последнего не нашел документации.
Впринципе я так понял большой производительности не требуется и программы будут далеко не индустриального масштаба и гораздо лучше будет использовать скриптовый язык - типа Перла или Питона. Они сделают процесс программирования гораздо легче.
На Си программировать тоже можно - но затраты на кодирование и сопровождение будут гораздо больше, чем для других вариантов.
Впринципе я так понял большой производительности не требуется и программы будут далеко не индустриального масштаба и гораздо лучше будет использовать скриптовый язык - типа Перла или Питона. Они сделают процесс программирования гораздо легче.
На Си программировать тоже можно - но затраты на кодирование и сопровождение будут гораздо больше, чем для других вариантов.
-
_GV
- Сообщения: 107
- Статус: секта красных утюгов
- ОС: Gentoo linux
Re: Linux и языки программирования
Выбор языка зависит от задачи . Для высокопроизводительных утилит и демонов с минимальным временем реакции лучше всех подходит С. Для модулей ядра - C возможно с ассемблерными вставками. Для простых консольных утилит - любой скриптовый (perl, PHP, bash-scripting). Для гуевых приложений - C++.
Кстати в ядре нет ни строки кода на C++. Видел всего раз пример модуля ядра на C++, но так и не смог его собрать (давно дело было, возможно C++ тут не причем)
Кстати в ядре нет ни строки кода на C++. Видел всего раз пример модуля ядра на C++, но так и не смог его собрать (давно дело было, возможно C++ тут не причем)
-
newsrc
- Сообщения: 314
- ОС: Slackware
Re: Linux и языки программирования
А что поставить такие библиотеки в линухе - это проблема?
Да, конечно это хороший вариант и от него я не ухожу...
Но всё же, в будущем хотелось бы научиться писать более серьёзно (приложения, демоны.....)
Да и как я говорил, что внутри Linux'а тоже интересно, а скриптовые языки мне не помогут это узнать.
_GV писал(а): ↑07.05.2008 11:48Выбор языка зависит от задачи . Для высокопроизводительных утилит и демонов с минимальным временем реакции лучше всех подходит С. Для модулей ядра - C возможно с ассемблерными вставками. Для простых консольных утилит - любой скриптовый (perl, PHP, bash-scripting). Для гуевых приложений - C++.
Кстати в ядре нет ни строки кода на C++. Видел всего раз пример модуля ядра на C++, но так и не смог его собрать (давно дело было, возможно C++ тут не причем)
Вот за этот ответ спасибо. Картина начитает приобретать очертания....
Да и разбираться в программах для Linux'а, когда они в исходниках - это же тоже сила.
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
-
un-defined
- Сообщения: 145
- ОС: Kubuntu, Gentoo
Re: Linux и языки программирования
Забыли добавить "ИМХО"
Не стоит забывать, что С и С++ - языки всетаки разные, несмотря на внешнее сходство и частичную совместимость. Так что попытки запихнуть в С приемы и идеологию работы из С++ как раз и приведут к росту затрат на кодирование и сопровождение. Разумеется, в другую сторону также верно.
Если консоль или демон - я бы выбрал С
Если нужны окошки - то лучше С++, хотя я бы разделил на две части - интерфейсную (С++) и backend (С)
Don`t try - just do or do not ©Master Joda
-
_GV
- Сообщения: 107
- Статус: секта красных утюгов
- ОС: Gentoo linux
Re: Linux и языки программирования
Согласен с un-defined. Более того, в одно время необходимо писать на одном языке. Потому что, имхо, если писать одновременно (параллельные задачи) на C и на C++, то код получается ужасный и там, и там. Просто мышление на C++ кардинально отличается от мышления на C, несмотря на внешнюю схожесть
-
newsrc
- Сообщения: 314
- ОС: Slackware
Re: Linux и языки программирования
Конечно вопросы идеологии языков - это интересно, но сами понимаете меня они сейчас мало заботят, т.к. знаний о языках нет, поэтому и сравнивать или переносить из Си в Си++ мне пока не предстоит.
А вообще интересно это на Си написано:?
А вообще интересно это на Си написано:?
Код: Выделить всё
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char* argv[])
{
if (argc < 2) {
fputs("usage: rhost-check program [arguments]\n", stderr);
return 111;
}
if (getenv("TCPREMOTEHOST") == 0) {
putenv("RBLSMTPD=bad reverse DNS");
}
execvp(argv[1], argv+1);
fputs("error: execution of rhost-check failed\n", stderr);
return 111;
}Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
-
un-defined
- Сообщения: 145
- ОС: Kubuntu, Gentoo
Re: Linux и языки программирования
Don`t try - just do or do not ©Master Joda
-
_GV
- Сообщения: 107
- Статус: секта красных утюгов
- ОС: Gentoo linux
Re: Linux и языки программирования
Безусловно C
-
deninok
- Сообщения: 585
- Статус: Программист С++
- ОС: Debian GNU/Linux
Re: Linux и языки программирования
(un-defined) писал(а):Не стоит забывать, что С и С++ - языки всетаки разные, несмотря на внешнее сходство и частичную совместимость.
Именно так! О том, что С и С++ суть разные языки, необходимо помнить всегда.
Автору темы: рекомендую выбрать С++.
Конечно, фанаты С могут уже готовить камни и целиться в мою голову... И все же С++ прекрасно подходит для создания сетевых приложений. Есть замечательные библиотеки, предназначенные именно (или в том числе) для этой цели: большие, как POCO, ACE и Boost::Asio, а также несколько маленьких, как Socket++.
(cent64) писал(а):Да и для изучения ядра чем лучше владеть Си или С++?
А здесь, разумеется, С.
-
zysyl
- Сообщения: 27
- ОС: Debian
-
sergio
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Linux и языки программирования
cent64 писал(а): ↑07.05.2008 11:12Занимаюсь администрирование firewall'ов на Linux, иногда возникают вопросы или проблемы с некоторыми программками (типа подсчёта трафика, ротации логов, анализа логов......), от них хочется чего-то другого.
Но вопрос заключается не в выборе таких программ, да и не в них самих, а в желании написания своих программ, есть много задумок, идей.....
Гыгыгы. Если задача-вопрос ставится так - то ответ будет "шелл (+греп, сед, авк, ...) и перл".
Если интересует копание в коде ядра и серверов - то без Си никуда. Но затраты на ознакомление с ним чтобы только читать этот код - невелики. Больше времени уйдет на изучение док по системе.
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
Serik
- Сообщения: 149
- ОС: SuSE Linux
Re: Linux и языки программирования
Язык выбирается от задачи.
Большие задачи проще писать на С++, а в маленькой ООП смысла нет использовать, и получится все равно в стиле С.
Скорость работы обычно зависит от правильности архитектурного решения и в меньшей степени от языка программирования.
Даже если при прочих равных С программа будет быстрее работать, в С++ есть STL, который делает разработку проще и быстрее.
Иногда бывает очень удобно использовать Perl.
Мой выбор: C++ и Perl.
Большие задачи проще писать на С++, а в маленькой ООП смысла нет использовать, и получится все равно в стиле С.
Скорость работы обычно зависит от правильности архитектурного решения и в меньшей степени от языка программирования.
Даже если при прочих равных С программа будет быстрее работать, в С++ есть STL, который делает разработку проще и быстрее.
Иногда бывает очень удобно использовать Perl.
Мой выбор: C++ и Perl.
-
GRS
- Сообщения: 236
- Статус: C++ Pro
- ОС: Suse10.2/XP
Re: Linux и языки программирования
cent64
проблема в том - что с ними нужно уметь правильно работать. Это не Си с процедурным программированием, это набор классов, некая архитектура и понять их сходу сложно. Зато если понять и правильно использовать - твой код будет прост и понятен, ты сможешь легче его сопровождать.
Если ты выберешь Си - тебе придется постоянно иметь дело с низкоувовневыми конструкциями - работать с API, и sockets - постоянно делать кучу проверок. На это все тратится время.
Ну это в ядре нет (в то время С++ только зараждался и большенство не знало как нужно им правильно пользоватся). Вот я работаю в компании, мы пишем коммерческий софт, не гуевый - в основном производительные серверы, прослойки организующие прослойки между протоколами - на входе один, на выходе другой + во время обработки еще обращение к каким-нибудь БД и другим серверам. Я не представляю как бы выглядил код на Си - проекты были бы километровами и программистов бы не хватило поддерживать такой код. Особенно учитывая возможное количество ошибок сетевых соединений, протоколов итд итп. При том что каждую ошибку, нужно по своему обрабатывать.
А что поставить такие библиотеки в линухе - это проблема?
проблема в том - что с ними нужно уметь правильно работать. Это не Си с процедурным программированием, это набор классов, некая архитектура и понять их сходу сложно. Зато если понять и правильно использовать - твой код будет прост и понятен, ты сможешь легче его сопровождать.
Если ты выберешь Си - тебе придется постоянно иметь дело с низкоувовневыми конструкциями - работать с API, и sockets - постоянно делать кучу проверок. На это все тратится время.
Кстати в ядре нет ни строки кода на C++. Видел всего раз пример модуля ядра на C++, но так и не смог его собрать (давно дело было, возможно C++ тут не причем)
Ну это в ядре нет (в то время С++ только зараждался и большенство не знало как нужно им правильно пользоватся). Вот я работаю в компании, мы пишем коммерческий софт, не гуевый - в основном производительные серверы, прослойки организующие прослойки между протоколами - на входе один, на выходе другой + во время обработки еще обращение к каким-нибудь БД и другим серверам. Я не представляю как бы выглядил код на Си - проекты были бы километровами и программистов бы не хватило поддерживать такой код. Особенно учитывая возможное количество ошибок сетевых соединений, протоколов итд итп. При том что каждую ошибку, нужно по своему обрабатывать.
-
v04bvs
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: Linux и языки программирования
cent64 писал(а): ↑07.05.2008 11:12Занимаюсь администрирование firewall'ов на Linux, иногда возникают вопросы или проблемы с некоторыми программками (типа подсчёта трафика, ротации логов, анализа логов......), от них хочется чего-то другого.
Но вопрос заключается не в выборе таких программ, да и не в них самих, а в желании написания своих программ, есть много задумок, идей.....
На форуме обсуждаются вопросы вроде: "Какой язык мне выбрать Си или С++". Я бы добавил к нему ещё одну фразу: "для написания в linux" различных приложений (сетевых в основном), Си или С++.
Да и для изучения ядра чем лучше владеть (я знаю, что оно написано, в основном, на Си и ассемблере (ассемблер пока не рассматриваем)) Си или С++
Буду благодарен за помощь.
Ocaml, Scheme, Common Lisp, Haskell, Scala, Nemerle, Erlang. Если не важна скорость — Ruby, Python. Если очень важна скорость — С, D.
-
_GV
- Сообщения: 107
- Статус: секта красных утюгов
- ОС: Gentoo linux
Re: Linux и языки программирования
GRS
Я только что закончил такой же проект. Прослойка на входе которой строки вида "GetParams,1,3" получаемые из сокета, а на выходе примерно #{0x10}{0x01}{0x03}{0x01}{0x03}{0x10}{0x08} (само собой в виде бинари строки) засовываемые в COM-port + MySQL. Вся эта часть проекта реализована на C и является довольно таки расширяемой и сопроводимой. Поэтому, имхо, холивар C vs. C++ является бессмысленным. Все зависит от стиля. Можно и на C++ навять совершенного мусора или использовать его как предлагалось в protected в C++, что называется "экстремальным" программированием и совершенно не подлежит сопровождению
Я только что закончил такой же проект. Прослойка на входе которой строки вида "GetParams,1,3" получаемые из сокета, а на выходе примерно #{0x10}{0x01}{0x03}{0x01}{0x03}{0x10}{0x08} (само собой в виде бинари строки) засовываемые в COM-port + MySQL. Вся эта часть проекта реализована на C и является довольно таки расширяемой и сопроводимой. Поэтому, имхо, холивар C vs. C++ является бессмысленным. Все зависит от стиля. Можно и на C++ навять совершенного мусора или использовать его как предлагалось в protected в C++, что называется "экстремальным" программированием и совершенно не подлежит сопровождению
-
GRS
- Сообщения: 236
- Статус: C++ Pro
- ОС: Suse10.2/XP
Re: Linux и языки программирования
_GV
... я как бы имел в виду гораздо более сложные интерфейсы.
... я как бы имел в виду гораздо более сложные интерфейсы.
-
newsrc
- Сообщения: 314
- ОС: Slackware
Re: Linux и языки программирования
Ну а если поговорить о серьёзных проектах в Linux'е.
На чем пишут приложения всякие, демоны и т.д. (grep, traceroute, sendmail, qmail, squid) вот такого порядка вещи. Наверно можно в исходниках смотреть, но как..?
На чем пишут приложения всякие, демоны и т.д. (grep, traceroute, sendmail, qmail, squid) вот такого порядка вещи. Наверно можно в исходниках смотреть, но как..?
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
-
un-defined
- Сообщения: 145
- ОС: Kubuntu, Gentoo
Re: Linux и языки программирования
GRS писал(а): ↑07.05.2008 12:44Я не представляю как бы выглядил код на Си - проекты были бы километровами и программистов бы не хватило поддерживать такой код. Особенно учитывая возможное количество ошибок сетевых соединений, протоколов итд итп. При том что каждую ошибку, нужно по своему обрабатывать.
Контрпример, причем очень яркий - Apache
Очень красиво все внутри устроено. А ведь чистый С..
Хотя хватит холиварить, это неконструктивно
Don`t try - just do or do not ©Master Joda
-
_GV
- Сообщения: 107
- Статус: секта красных утюгов
- ОС: Gentoo linux
Re: Linux и языки программирования
GRS
А я и не сомневаюсь в их сложности.
Просто на мой взгляд кардинальное различие C и C++ в более гибкой и прозрачной организации работы с памятью в C++. А все остальное обуславливается только первоначальным выбором языка разработки.
А я и не сомневаюсь в их сложности.
Просто на мой взгляд кардинальное различие C и C++ в более гибкой и прозрачной организации работы с памятью в C++. А все остальное обуславливается только первоначальным выбором языка разработки.
-
GRS
- Сообщения: 236
- Статус: C++ Pro
- ОС: Suse10.2/XP
Re: Linux и языки программирования
un-defined
красивость кода - это одно, его доработка это другое. Кроме того apache работает по одному протоколу HTTP, я же говорил о поддержке сразу нескольких разных протоколов.
они написаны на Си - но посмотрев их , я сомневаюсь ты захочешь их доработать, поскольку кроме самих разработчиков их никто больше не в состоянии поддерживать.
Написать самому тоже можно - я и не спорю, я говорю о затратах на кодирование, отладку и сопровождение подобных программ.
Да и вообще чего писать - сам попробуй, пока на своей шкуре это не проделаешь - не поймешь, и словами что-то обьяснить, доказать сложно.
красивость кода - это одно, его доработка это другое. Кроме того apache работает по одному протоколу HTTP, я же говорил о поддержке сразу нескольких разных протоколов.
На чем пишут приложения всякие, демоны и т.д. (grep, traceroute, sendmail, qmail, squid) вот такого порядка вещи. Наверно можно в исходниках смотреть, но как..?
они написаны на Си - но посмотрев их , я сомневаюсь ты захочешь их доработать, поскольку кроме самих разработчиков их никто больше не в состоянии поддерживать.
Написать самому тоже можно - я и не спорю, я говорю о затратах на кодирование, отладку и сопровождение подобных программ.
Да и вообще чего писать - сам попробуй, пока на своей шкуре это не проделаешь - не поймешь, и словами что-то обьяснить, доказать сложно.
-
un-defined
- Сообщения: 145
- ОС: Kubuntu, Gentoo
Re: Linux и языки программирования
в Apache есть возможность поддержки нескольких разных протоколов, другое дело, что это реализуется плагинами. Впрочем, и реализация HTTP - это тоже плагин
(GRS) писал(а):Написать самому тоже можно - я и не спорю, я говорю о затратах на кодирование, отладку и сопровождение подобных программ.
Затраты, кмк, зависят не от языка, а от первоначально разработанной соответствующим образом архитектуры.
(GRS) писал(а):Да и вообще чего писать - сам попробуй, пока на своей шкуре это не проделаешь - не поймешь, и словами что-то обьяснить, доказать сложно.
Вот это самое верное
Don`t try - just do or do not ©Master Joda
-
Olden Gremlin
- Сообщения: 365
- Статус: RAP22-RIPE
- ОС: Debian GNU/Linux Wheezy
Re: Linux и языки программирования
bash,sed,awk,perl - это наше все!
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: Linux и языки программирования
поехали в флейм ...
кстати, почему про ынтерпрайз никто не вспомнил?

кстати, почему про ынтерпрайз никто не вспомнил?
-
newsrc
- Сообщения: 314
- ОС: Slackware
Re: Linux и языки программирования
Вот это уж точно!!! Сочетать эти вещи....
Конечно, пока сам не попробуешь, не узнаешь точно что тебе нужно!!!
Дайте, пожалуйста, простой пример Hello world для Си и С++, ну и конечно, как их компилить в консоле.
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
-
un-defined
- Сообщения: 145
- ОС: Kubuntu, Gentoo
Re: Linux и языки программирования
Don`t try - just do or do not ©Master Joda
-
newsrc
- Сообщения: 314
- ОС: Slackware
Re: Linux и языки программирования
un-defined, уважаю за такой ответ!
В любом форуме есть люди, которые так отвечают.
В любом форуме есть люди, которые так отвечают.
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
-
wzrd
- Сообщения: 323
- ОС: Debian Lenny
Re: Linux и языки программирования
я бы на вашем месте выбрал C, т.к. понял что вы хотите от языка, хотя сам C++ правильно никогда не использовал. во-первых вы потом сможете перейти на C++, при чем чем больше вы будете использовать C, тем болезненнее будет переход. а если с C++ на C, то, мне кажется, вы будете чувствовать себя как-то не уютно, т.к. многие возможности приплюснутого C вы будете писать вручную. одним словом лучше выбрать один из них, т.к. подходы у них совсем разные. С - больше для системного, а C++ - для прикладного.