Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» стоит ли сейчас учить Си

Автор: begem0t
Дата сообщения: 06.06.2005 14:09
есть ли у Си преимущества или особая сфера применения, где С++ не подходит?
стоит ли тратить время на его изучение?
в мире линукса насколько я понял очень много исходников на Си, почему именно на нем? наследие или что?
Просто книжка по нему (Керниган) уж больно не тянет на самоучитель, а лучше нет.
Автор: OdesitVadim
Дата сообщения: 06.06.2005 14:15
begem0t
одно точно есть - С основа С++, поэтому зная первый, лучше понимаем второй.
Особая сфера применения - обычно для программирования контролеров делаю С подобный язык, а не С++. Причина? Без классов результирующий файл получается меньше, по идее более быстр в исполнении, так как не нагружен "класовой частью".
Автор: Arion
Дата сообщения: 06.06.2005 14:17

Цитата:
есть ли у Си преимущества или особая сфера применения, где С++ не подходит?

Большинство драйверов ядра пишется на "чистом" C. Других сфер применения, где нельзя использовать С++ с тем же или большим эффектом я не вижу.
Автор: tautau
Дата сообщения: 06.06.2005 15:22
А мне Си просто нравится, зная его думаю будет понятен любой другой язык(ну может и есть исключения).
На Си можно очень много чего сделать, а вот учить Си++ как то лень.

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

П.С. Си еще мне нравится тем что как ты заметил это самый распостраненый язык, очень трудно найти кого то кто его не знает. Может многие и не пользуются но точно его знают.
Автор: begem0t
Дата сообщения: 06.06.2005 15:29
tautau
тем не менее книжку толковую я найти не могу
может подскажешь что толковое, для самых маленьких
а то в Кернигане (Язык программирования Си.\Пер. с англ., 3-е изд., испр.) упражнения к урокам какието неадекватно сложные, 1.16 например, там вроде как динамический массив надо сделать а про него то ничего не рассказывали еще...
клинит в такие моменты просто
Автор: OdesitVadim
Дата сообщения: 06.06.2005 15:49
begem0t
Да, у Керигана задачки действительно для новичков сложные. Но это только в первой главе. Дальше всё стаёт проще. После того, как он запугал динамическими масивами (задачка о синтаксической проверке программы уже рекурсией попахивает ) во второй главе починает рассказывать о переменных....
Вначале я думал, что не ту книгу скачал
Мне кажеться это старый способ обучения: кто не спугнулся первой главы(или забИл ?) переходит к второй и начинает учиться. некая защита от "плохих" людей.
Поэтому переходи к второй сразу.

А может это просто для создания видимости очень большой крутости языка?
Автор: DeviL
Дата сообщения: 06.06.2005 16:13
begem0t
Подбельский В.В. Программирование на языке Си
Автор: begem0t
Дата сообщения: 06.06.2005 17:04
OdesitVadim
спасибо, обнадежил

DeviL
чтото в варезнике не видать ее, нету в электронном виде у тебя?
Автор: SynteticHeart
Дата сообщения: 06.06.2005 18:29
А вот интересно, стоит ли начинающему админу учить си?
Пригодится в мире никсов? Или следует уделять внимание "сценарным" (сорри за возможно неверное определение) языкам программирования? Perl, языки оболочки?
Автор: OdesitVadim
Дата сообщения: 06.06.2005 18:47
SynteticHeart
Однозначно стоит. От Си к Перлу или другим языкам - один шаг. Во вторих админ должен уметь коректно баги исправлять, а учитывая, что ядро на С, вывод однозначный
Автор: SynteticHeart
Дата сообщения: 06.06.2005 19:11
Тогда вопрос. А какой доступный для понимания есть самоучитель по си? Смотрел Дейтелов - Как программировать на С, но показалось что задачи достаточно сложные. И интересно в общем то подумать, но учитывая тотальное отсутствие свободного времени хотелось бы что нибудь попроще. Например как книга Шилдта "Самоучитель С++" , или как книга Лафоре. Если не путаю называется "Объектно ориентированное программирование в С++". То есть, доступное для понимание описание языка и задачи не высокого уровня сложности, а средненькие, ну такие, какие можно решать по вечерам, после рабочего дня. Не 2+2 но и не генерация кроссвордов как в Дейтеле.
Есть такое чудо в природе?
Автор: OdesitVadim
Дата сообщения: 06.06.2005 19:24
SynteticHeart
Думаю можно и Керигана почитать. Правда по поводу литературы тут уже тема есть
http://forum.ru-board.com/topic.cgi?forum=33&topic=4227#1
по поводу простенького учебника среднего уровня - не знаю. Я с подобным встретился, когда у меня человек попросил книгу по Паскалю. Единственный вариант, который мне пришёл - написать самому. Наданный момент 6 глав написано, пишу 7 и 8 (паралельно). Человеку понравилось. читает, уже даже проги пишет средненькие (всего через месяц чтений).
Сейчас остановился, так как пишу диплом. Может когдато руки дойдут и до книги по С...
Автор: tautau
Дата сообщения: 06.06.2005 22:12
OdesitVadim
Кстати если мы тут уж флэймим о языках, то у меня к тебе вопрос(думаю если книги пишешь по теме, то лучше меня разбираешся).

Что лучше выбрать для непрофесионала(того кто не собирается зарабатывать на хлеб програмированием, а только иногда что то закодить) Си или Дельфи?

Вообщем Си мне нравится, и я более менее умею с ним работать(но я не програмист). Более того под те задачи которые могут у меня появится он более заточен(одна из его сред) чем другие среды програмирования.

Паскаль когда то учил в школе, так что вспомнить не проблема, но Дельфи никогда не юзал.
Но куда ни кинь взгляд количество людей интересуешихся дельфи выше чем других. Я говорю не о професионалах с ними все ясно, они юзают то что им удобней для даной задачи и то что от них требует заказчик. Я имею ввиду тех что сидят в интернете и обсуждают програмирование, здесь доминантность поклоников дельфи кидается в глаза.
Вот и закрадывается мыслишка может неразумно я обошел своим вниманием эту среду програмирования?
Автор: vserd
Дата сообщения: 07.06.2005 12:48
tautau

Цитата:
Что лучше выбрать для непрофесионала(того кто не собирается зарабатывать на хлеб програмированием, а только иногда что то закодить) Си или Дельфи?

Тот язык, проффесионал по которому есть под рукой, и которого ты сможешь подоставать "детскими" вопросами. :))) А так смотри что тебе ближе по профдеятельности и задачами которые ты должен выполнять. У Делфи есть не оспоримое преймущество легости изучения, у С есть преймущество в том что более широкий круг задач можно запрограммировать (скомпилировать), хотя сложность изучения больше на порядок, особенно когда нужно давать результат по уже готовым исходникам, и это может занять больше времени.
Автор: OdesitVadim
Дата сообщения: 07.06.2005 13:16
tautau
Правильно заметил, флеймим по тихоньку. Советовать не буду, потомучто это перерастёт в дискусию какой язык лучше. Пиши на том, что те больше нравиться. Но ориентироваться желательно в обеих языках.
З.Ы. Фраза "пишу на С" ничего не означает, так как например, VC и gcc достаточно отличаются друг от дружки (я не говорю о формате операторов!).
Фраза "Пишу на Делфи" есть достаточно точной, хотя иногда желательно указать версию.
Поэтому
Цитата:
Си или Дельфи

звучит очень некоректно.
vserd

Цитата:
у С есть преймущество в том что более широкий круг задач можно запрограммировать

Прочитай внимательно написаное выше. Если под С понимать и языки для програмирования контролеров, до с определённой натяжкой я соглашусь. С определённой, потому что никто не мешает мне написать свой компилятор на паскале, и если надо, то я это сделаю
Автор: odl455
Дата сообщения: 07.06.2005 14:11
Arion


Цитата:
Других сфер применения, где нельзя использовать С++ с тем же или большим эффектом я не вижу.


А как насчёт кроссплатформенности? На всех ли платформах где есть компилятор С есть также и компилятор C++?
Автор: tautau
Дата сообщения: 07.06.2005 20:37
OdesitVadim
Да ты прав Си имеет очень широкий спектр.

В последнем году перешел в среду CVI, мне она очень нравится.
Тем более она как раз предназначена имено для моих нужд(наука).
Автор: TheChampion
Дата сообщения: 08.06.2005 07:55
OdesitVadim

Цитата:
З.Ы. Фраза "пишу на С" ничего не означает, так как например, VC и gcc достаточно отличаются друг от дружки (я не говорю о формате операторов!).

Ну что за бред?! Для того и есть Стандарт C [C99, ISO 9899] и Стандарт C++ [ISO 14882], чтобы все компиляторы ему соответствовали. И, можешь быть уверен, соответствуют. Это вам не Жаба и не дельфи!

А различаются они отнюдь не синтаксисом ("формат операторов" --- сам придумал?)! Просто VC включает в себя MFC, а gcc, например, Motif. Но, повторяю, Стандарту они соотвествуют, и если написать программу, придерживаясь Стандарта, она откомпилируется и будет правильно работать везде.
Автор: OdesitVadim
Дата сообщения: 08.06.2005 10:12
TheChampion
А MFC в стандарт входит? Нет кажеться. Прийдётся отказаться.
Цитата:
И, можешь быть уверен, соответствуют.

Ага. Почитай темы на форуме Просто в Microsofta своё видение стандартов. Пока прога маленькая (пару тисяч строк) зделать код совместимым можно. Но дальше - бока. Если не вериш, то почитай мучения разработчиков софта под Линукс. Там с помощью директив компиляции достигается с помощью директив компилятора.
Цитата:
и если написать программу, придерживаясь Стандарта, она откомпилируется и будет правильно работать везде.

А стандарт знаеш? В каких операционках компилировал проги?
Автор: TheChampion
Дата сообщения: 08.06.2005 14:46
OdesitVadim

Цитата:
А стандарт знаеш? В каких операционках компилировал проги?

Ты не поверишь --- знаю! У меня под рукой есть pdf, если интересно, пришлю. Раньше не расставался с ним, сейчас изучил, поэтому использую реже.

Компилировал один и тот же код (десять тысяч строк), написанный исключительно на C++ у себя дома g++ (ASP Linux) и BCB (WinXP), у товарища на VS.NET (WinXP) и на работе cxx (Compaq Tru64 UNIX). Все компилируется и работает зашибись как. Ясен пень, что MFC я не использую, но у меня есть к консольной программе оконный интерфейс (общение через командную строку) --- в Win свой, в Linux свой --- все работает! Так что Стандарт --- это вещь!


Цитата:
Просто в Microsofta своё видение стандартов.

Да, про говно под названием VS6 я знаю. Но они перековались и перекрасились, обернулись верными ленинцами. С STL в VS.NET проблем .NET
Автор: OdesitVadim
Дата сообщения: 08.06.2005 15:03

Цитата:
но у меня есть к консольной программе оконный интерфейс (общение через командную строку) --- в Win свой, в Linux свой --- все работает!

тоесть разные проги в каждом случае?
Если прога занимается мат вычислениями, обработкой текстов - то проблем нет обычно никаких. всё сказка. Но только добтраемся до интерфейса (графика) начинается. О чём ты и сказал.
Автор: TheChampion
Дата сообщения: 09.06.2005 07:21
OdesitVadim

Цитата:
Но только добтраемся до интерфейса (графика) начинается. О чём ты и сказал.


Но графика не входит в Стандарт. Все проблемы тут --- надуманные. От незнания Стандарта.

Есть такой редактор --- emacs. Функциональная часть написана на C/C++. Модуль вывода на экран --- отдельно для каждой среды. Пока никто не жаловался.

Более того, хотя приложения на Жабе считаются "кроссплатформенными", это все ботва. Примерно 85% кода работает где угодно, а вот остальные сущственно зависят от реализации JVM. У меня есть Oracle. Он весь написан на Java. Но, заметь, это виндовая версия. Под Linux не встает, пробовал, хотя даже инсталлятор написан на Жабе. Это, в частности, происходит потому, что у Oracle... своя JVM! С .NET в этом плане еще хуже.

Не стоит, кстати, думать, что Delphi/Kylix rulez forever! Отнюдь. Иначе как ты объяснишь, что есть VCL, а есть CLX, причем CLX победнее будет. С другой стороны, есть реализации Motif под Windows --- вполне себе кроссплатформенность на уровне исходника.
Автор: OdesitVadim
Дата сообщения: 09.06.2005 10:42
TheChampion

Цитата:
Но графика не входит в Стандарт.

вот оно. Ведь для обычного смертного командная строка не нужна, ему графику давай.

Цитата:
Не стоит, кстати, думать, что Delphi/Kylix rulez forever!

А я и не говорю. Надумано с твоейц стороны. Писал кросплатформенные приложения. Если сразу указать что оно кросплатформенное, то проблем нет. Если забыл, то в течение 5-10 мин. исправляется (просто местами нужно буковку Q вставить). Правда народ написал реализацию VCL под Kylix, которая достаточно полная.
З.Ы. Есть ещё такая штука, как FPC+Lazarus. Даже под маком работает. а переделывать ничего не нужно (конечно если в ядро операционки не полез)
Автор: begem0t
Дата сообщения: 09.06.2005 11:17
да, действительно, основная программа то сама по себе консольная может быть, мега-кросплатформенная, а GUI писать отдельно можно под любую систему с использованием каких угодно компонентов, это всетаки на два порядка меньше работы чем всю программу перерабатывать. К томуже если прога с сетевым интерфейсом будет то GUI к ней и посети приконектится, основы иксов...
Автор: TheChampion
Дата сообщения: 10.06.2005 07:05
begem0t
Модульное программирование для того и есть! А использование модулей в C/C++ --- не просто, а очень просто. Даже программист на Visual Basic справится с этим со второй попытки
Автор: NeOLiG
Дата сообщения: 10.06.2005 20:01
Будещее за ОПП программированием, но Си будет актуален всегда, так же как и Асемблер, так как на нем проще все программировать на низком уровне.... И если платформы и среды программирования меняются сейчас почти каждый день (месяц), то достаточно сказать, что Си последний раз изменялся в 1999 г.(на склько я знаю) А это говорит о многом....
Автор: TheChampion
Дата сообщения: 11.06.2005 12:05
NeOLiG

Цитата:
что Си последний раз изменялся в 1999 г.(на склько я знаю) А это говорит о многом....

ISO 9899 [C99] отличается от C89 точно так же, как C89 отличается от реализации K&R. Там есть такие штуки, которые паскалистам и не снились!
Автор: Nimnul
Дата сообщения: 13.06.2005 00:09
Постановка вопроса в названии темы подразумевает природную лень автора темы, т.к. на вопрос "стоит ли учить С" есть простой вопрос - "А хрен ли там учить?" = три оператора (не надо понимать буквально! Особенно если автор "знает" С++).
Другое дело изучить исходники наработок на С думаю было бы полезно. (А человек владеющий С++ думаю без труда в них разберется, так что вопрос яйца выеденного не стоит, что тут обсуждают две страницы - мне не понятн. Если человек занялся всеръез программированием, то как можно перепрыгивать ступени? Для начала вообще считаю полезно почитать книжку по ассемблеру под дос... И не учить, а так для общего развития. Вообще сам не навижу слово "учить" применительно к языкам программирования и операционным системам, что значит учить, их не нужно учить их нужно чуствовать, по этому больше подходит слово изучать... Т.к. глагол "учить" ассоциируется со школой, выучил, рассказал, забыл. А изучать, это вдумыватся, вчитывать, анализировать - надолго...)
Автор: rew
Дата сообщения: 13.06.2005 03:37

Цитата:
Более того, хотя приложения на Жабе считаются "кроссплатформенными", это все ботва. Примерно 85% кода работает где угодно, а вот остальные сущственно зависят от реализации JVM.

дааа, конечно только все немножко не так все что написано 100% на жабе, побежит везде под что есть жвм, но не все можно сделать средствами жабы, то что нельзя пишут на си, если си код не компилируют под "все" платформы, теряется мультиплатформенность, но это уже и не чистая жава
Автор: begem0t
Дата сообщения: 13.06.2005 07:26
Nimnul
Цитата:
автор "знает" С++

я не говорил что знаю С++
решил начать с Си

Страницы: 12

Предыдущая тема: Триангуляция множества точек


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.