Linux и языки программирования

Любые разговоры которые хоть как-то связаны с тематикой форума

Модератор: Модераторы разделов

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

Linux и языки программирования

Сообщение newsrc »

Занимаюсь администрирование firewall'ов на Linux, иногда возникают вопросы или проблемы с некоторыми программками (типа подсчёта трафика, ротации логов, анализа логов......), от них хочется чего-то другого.
Но вопрос заключается не в выборе таких программ, да и не в них самих, а в желании написания своих программ, есть много задумок, идей.....
На форуме обсуждаются вопросы вроде: "Какой язык мне выбрать Си или С++". Я бы добавил к нему ещё одну фразу: "для написания в linux" различных приложений (сетевых в основном), Си или С++.
Да и для изучения ядра чем лучше владеть (я знаю, что оно написано, в основном, на Си и ассемблере (ассемблер пока не рассматриваем)) Си или С++

Буду благодарен за помощь.
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10

Re: Linux и языки программирования

Сообщение BlackStar »

Не вижу ни одного знака вопроса.Чем помочь то?
LightLang Team
Спасибо сказали:
Аватара пользователя
newsrc
Сообщения: 314
ОС: Slackware

Re: Linux и языки программирования

Сообщение newsrc »

cent64 писал(а):
07.05.2008 11:12
На форуме обсуждаются вопросы вроде: "Какой язык мне выбрать Си или С++". Я бы добавил к нему ещё одну фразу: "для написания в linux" различных приложений (сетевых в основном), Си или С++.
Да и для изучения ядра чем лучше владеть..... Си или С++


А что такая форма записи не подразумевает вопроса?

Дайте совет в выборе языка для программирования в Linux Си или С++????
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
Спасибо сказали:
Аватара пользователя
GRS
Сообщения: 236
Статус: C++ Pro
ОС: Suse10.2/XP

Re: Linux и языки программирования

Сообщение GRS »

С++ нужно использовать - если есть готовые библиотеки, которые хорошо знаешь, в данном случае для работы с сетью. Если их нет - есть 2 пути, написать библиотеку самому, смотреть другие языки. Из готовых вариантов есть boost::asio и poco, правда я для последнего не нашел документации.
Впринципе я так понял большой производительности не требуется и программы будут далеко не индустриального масштаба и гораздо лучше будет использовать скриптовый язык - типа Перла или Питона. Они сделают процесс программирования гораздо легче.
На Си программировать тоже можно - но затраты на кодирование и сопровождение будут гораздо больше, чем для других вариантов.
Спасибо сказали:
Аватара пользователя
_GV
Сообщения: 107
Статус: секта красных утюгов
ОС: Gentoo linux

Re: Linux и языки программирования

Сообщение _GV »

Выбор языка зависит от задачи . Для высокопроизводительных утилит и демонов с минимальным временем реакции лучше всех подходит С. Для модулей ядра - C возможно с ассемблерными вставками. Для простых консольных утилит - любой скриптовый (perl, PHP, bash-scripting). Для гуевых приложений - C++.

Кстати в ядре нет ни строки кода на C++. Видел всего раз пример модуля ядра на C++, но так и не смог его собрать (давно дело было, возможно C++ тут не причем)
Спасибо сказали:
Аватара пользователя
newsrc
Сообщения: 314
ОС: Slackware

Re: Linux и языки программирования

Сообщение newsrc »

GRS писал(а):
07.05.2008 11:37
С++ нужно использовать - если есть готовые библиотеки

А что поставить такие библиотеки в линухе - это проблема?

GRS писал(а):
07.05.2008 11:37
гораздо лучше будет использовать скриптовый язык

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

Да и как я говорил, что внутри Linux'а тоже интересно, а скриптовые языки мне не помогут это узнать.

_GV писал(а):
07.05.2008 11:48
Выбор языка зависит от задачи . Для высокопроизводительных утилит и демонов с минимальным временем реакции лучше всех подходит С. Для модулей ядра - C возможно с ассемблерными вставками. Для простых консольных утилит - любой скриптовый (perl, PHP, bash-scripting). Для гуевых приложений - C++.

Кстати в ядре нет ни строки кода на C++. Видел всего раз пример модуля ядра на C++, но так и не смог его собрать (давно дело было, возможно C++ тут не причем)


Вот за этот ответ спасибо. Картина начитает приобретать очертания....

Да и разбираться в программах для Linux'а, когда они в исходниках - это же тоже сила.
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
Спасибо сказали:
un-defined
Сообщения: 145
ОС: Kubuntu, Gentoo

Re: Linux и языки программирования

Сообщение un-defined »

GRS писал(а):
07.05.2008 11:37
На Си программировать тоже можно - но затраты на кодирование и сопровождение будут гораздо больше, чем для других вариантов.


Забыли добавить "ИМХО" :)
Не стоит забывать, что С и С++ - языки всетаки разные, несмотря на внешнее сходство и частичную совместимость. Так что попытки запихнуть в С приемы и идеологию работы из С++ как раз и приведут к росту затрат на кодирование и сопровождение. Разумеется, в другую сторону также верно.

cent64 писал(а):
07.05.2008 11:12
"для написания в linux" различных приложений (сетевых в основном), Си или С++.


Если консоль или демон - я бы выбрал С
Если нужны окошки - то лучше С++, хотя я бы разделил на две части - интерфейсную (С++) и backend (С)
Don`t try - just do or do not ©Master Joda
Спасибо сказали:
Аватара пользователя
_GV
Сообщения: 107
Статус: секта красных утюгов
ОС: Gentoo linux

Re: Linux и языки программирования

Сообщение _GV »

Согласен с un-defined. Более того, в одно время необходимо писать на одном языке. Потому что, имхо, если писать одновременно (параллельные задачи) на C и на C++, то код получается ужасный и там, и там. Просто мышление на C++ кардинально отличается от мышления на C, несмотря на внешнюю схожесть
Спасибо сказали:
Аватара пользователя
newsrc
Сообщения: 314
ОС: Slackware

Re: Linux и языки программирования

Сообщение newsrc »

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

А вообще интересно это на Си написано:?

Код: Выделить всё

#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 и языки программирования

Сообщение un-defined »

cent64 писал(а):
07.05.2008 12:05
А вообще интересно это на Си написано:?


На нем :)
Don`t try - just do or do not ©Master Joda
Спасибо сказали:
Аватара пользователя
_GV
Сообщения: 107
Статус: секта красных утюгов
ОС: Gentoo linux

Re: Linux и языки программирования

Сообщение _GV »

Безусловно C
Спасибо сказали:
Аватара пользователя
deninok
Сообщения: 585
Статус: Программист С++
ОС: Debian GNU/Linux

Re: Linux и языки программирования

Сообщение deninok »

(un-defined) писал(а):Не стоит забывать, что С и С++ - языки всетаки разные, несмотря на внешнее сходство и частичную совместимость.

Именно так! О том, что С и С++ суть разные языки, необходимо помнить всегда.

Автору темы: рекомендую выбрать С++.
Конечно, фанаты С могут уже готовить камни и целиться в мою голову... И все же С++ прекрасно подходит для создания сетевых приложений. Есть замечательные библиотеки, предназначенные именно (или в том числе) для этой цели: большие, как POCO, ACE и Boost::Asio, а также несколько маленьких, как Socket++.

(cent64) писал(а):Да и для изучения ядра чем лучше владеть Си или С++?

А здесь, разумеется, С.
Спасибо сказали:
Аватара пользователя
zysyl
Сообщения: 27
ОС: Debian

Re: Linux и языки программирования

Сообщение zysyl »

А я Perl предпочитаю ;)
Ктулху зохавает фсех
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: Linux и языки программирования

Сообщение sergio »

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
Спасибо сказали:
Serik
Сообщения: 149
ОС: SuSE Linux

Re: Linux и языки программирования

Сообщение Serik »

Язык выбирается от задачи.
Большие задачи проще писать на С++, а в маленькой ООП смысла нет использовать, и получится все равно в стиле С.
Скорость работы обычно зависит от правильности архитектурного решения и в меньшей степени от языка программирования.
Даже если при прочих равных С программа будет быстрее работать, в С++ есть STL, который делает разработку проще и быстрее.
Иногда бывает очень удобно использовать Perl.
Мой выбор: C++ и Perl.
Спасибо сказали:
Аватара пользователя
GRS
Сообщения: 236
Статус: C++ Pro
ОС: Suse10.2/XP

Re: Linux и языки программирования

Сообщение GRS »

cent64
А что поставить такие библиотеки в линухе - это проблема?

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

Кстати в ядре нет ни строки кода на C++. Видел всего раз пример модуля ядра на C++, но так и не смог его собрать (давно дело было, возможно C++ тут не причем)

Ну это в ядре нет (в то время С++ только зараждался и большенство не знало как нужно им правильно пользоватся). Вот я работаю в компании, мы пишем коммерческий софт, не гуевый - в основном производительные серверы, прослойки организующие прослойки между протоколами - на входе один, на выходе другой + во время обработки еще обращение к каким-нибудь БД и другим серверам. Я не представляю как бы выглядил код на Си - проекты были бы километровами и программистов бы не хватило поддерживать такой код. Особенно учитывая возможное количество ошибок сетевых соединений, протоколов итд итп. При том что каждую ошибку, нужно по своему обрабатывать.
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Linux и языки программирования

Сообщение v04bvs »

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 и языки программирования

Сообщение _GV »

GRS
Я только что закончил такой же проект. Прослойка на входе которой строки вида "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 и языки программирования

Сообщение GRS »

_GV
... я как бы имел в виду гораздо более сложные интерфейсы.
Спасибо сказали:
Аватара пользователя
newsrc
Сообщения: 314
ОС: Slackware

Re: Linux и языки программирования

Сообщение newsrc »

Ну а если поговорить о серьёзных проектах в Linux'е.
На чем пишут приложения всякие, демоны и т.д. (grep, traceroute, sendmail, qmail, squid) вот такого порядка вещи. Наверно можно в исходниках смотреть, но как..?
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
Спасибо сказали:
un-defined
Сообщения: 145
ОС: Kubuntu, Gentoo

Re: Linux и языки программирования

Сообщение un-defined »

GRS писал(а):
07.05.2008 12:44
Я не представляю как бы выглядил код на Си - проекты были бы километровами и программистов бы не хватило поддерживать такой код. Особенно учитывая возможное количество ошибок сетевых соединений, протоколов итд итп. При том что каждую ошибку, нужно по своему обрабатывать.


Контрпример, причем очень яркий - Apache
Очень красиво все внутри устроено. А ведь чистый С..

Хотя хватит холиварить, это неконструктивно :)
Don`t try - just do or do not ©Master Joda
Спасибо сказали:
Аватара пользователя
_GV
Сообщения: 107
Статус: секта красных утюгов
ОС: Gentoo linux

Re: Linux и языки программирования

Сообщение _GV »

GRS
А я и не сомневаюсь в их сложности.

Просто на мой взгляд кардинальное различие C и C++ в более гибкой и прозрачной организации работы с памятью в C++. А все остальное обуславливается только первоначальным выбором языка разработки.
Спасибо сказали:
Аватара пользователя
GRS
Сообщения: 236
Статус: C++ Pro
ОС: Suse10.2/XP

Re: Linux и языки программирования

Сообщение GRS »

un-defined
красивость кода - это одно, его доработка это другое. Кроме того apache работает по одному протоколу HTTP, я же говорил о поддержке сразу нескольких разных протоколов.

На чем пишут приложения всякие, демоны и т.д. (grep, traceroute, sendmail, qmail, squid) вот такого порядка вещи. Наверно можно в исходниках смотреть, но как..?

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

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

Да и вообще чего писать - сам попробуй, пока на своей шкуре это не проделаешь - не поймешь, и словами что-то обьяснить, доказать сложно.
Спасибо сказали:
un-defined
Сообщения: 145
ОС: Kubuntu, Gentoo

Re: Linux и языки программирования

Сообщение un-defined »

GRS писал(а):
07.05.2008 13:20
un-defined
apache работает по одному протоколу HTTP, я же говорил о поддержке сразу нескольких разных протоколов.

в 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 и языки программирования

Сообщение Olden Gremlin »

cent64 писал(а):
07.05.2008 11:12
Занимаюсь администрирование firewall'ов на Linux, иногда возникают вопросы или проблемы с некоторыми программками (типа подсчёта трафика, ротации логов, анализа логов......), от них хочется чего-то другого.
bash,sed,awk,perl - это наше все! :)
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Linux и языки программирования

Сообщение diesel »

поехали в флейм ...

кстати, почему про ынтерпрайз никто не вспомнил? :) :) :)
Спасибо сказали:
Аватара пользователя
newsrc
Сообщения: 314
ОС: Slackware

Re: Linux и языки программирования

Сообщение newsrc »

Olden Gremlin писал(а):
07.05.2008 14:03
bash,sed,awk,perl - это наше все! :)

Вот это уж точно!!! Сочетать эти вещи....

Конечно, пока сам не попробуешь, не узнаешь точно что тебе нужно!!!
Дайте, пожалуйста, простой пример Hello world для Си и С++, ну и конечно, как их компилить в консоле.
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
Спасибо сказали:
un-defined
Сообщения: 145
ОС: Kubuntu, Gentoo

Re: Linux и языки программирования

Сообщение un-defined »

Вторая ссылка в гугле, если что

http://ru.wikipedia.org/wiki/Программа_Hello_world
Don`t try - just do or do not ©Master Joda
Спасибо сказали:
Аватара пользователя
newsrc
Сообщения: 314
ОС: Slackware

Re: Linux и языки программирования

Сообщение newsrc »

un-defined, уважаю за такой ответ! :)

В любом форуме есть люди, которые так отвечают. :drinks:
Система -- это совокупность элементов и связей, дающая новые свойства, не присущие ни одному из элементов и ни одной из связей.
Спасибо сказали:
Аватара пользователя
wzrd
Сообщения: 323
ОС: Debian Lenny

Re: Linux и языки программирования

Сообщение wzrd »

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