2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 программирование на "си"
Сообщение18.05.2008, 11:08 
подскажите пожалуйста литературу по "си" для начинающих. желательно на русском языке в электронном варианте. спасибо заранее.

 
 
 
 
Сообщение18.05.2008, 12:34 
Классическая книга по языку Си -- это, конечно же, "Язык программирования Си" Кернигана и Ричи. Она переведена на множество языков мира, в том числе и на русский. Изучая свой первый язык по ней, нужно особое внимание уделять упражнениям.

Если вы работаете под Windows, строго не советую использовать MS Visual Studio, так вы за мелочами (особенностями этого компилятора и кликанье в среде разработки) не увидите общей картины языка. Советую взять компилятор MinGW -- он бесплатный и свободный: http://downloads.sourceforge.net/mingw/ ... g_mirror=1

Если вы не под Windows, тогда используйте системный компилятор (команда cc) или gcc.

Текстовый редактор: если под Windows, то Notepad++ http://downloads.sourceforge.net/notepa ... g_mirror=0 или самый обычный Notepad. Если не под Windows, то любой просто-текстовый редактор (например, vim, emacs или что-нибудь с графическим интерфейсом).

 
 
 
 
Сообщение18.05.2008, 13:49 
Да уже не раз отвечали на этот вопрос. Один из недавних ответов - тут.

 
 
 
 
Сообщение18.05.2008, 18:00 
Аватара пользователя
ipanema писал(а):
Если вы работаете под Windows, строго не советую использовать MS Visual Studio


Я бы хотел заметить, что этот компилятор используется многими фирмами, разрабатывающими ПО. Так что если Вы хотите изучать программирование не ради чистого искусства, а с целью сделать это своей профессией, то резона отказываться от этого компилятора я не вижу.

 
 
 
 
Сообщение18.05.2008, 19:09 
PAV писал(а):
Я бы хотел заметить, что этот компилятор используется многими фирмами, разрабатывающими ПО. Так что если Вы хотите изучать программирование не ради чистого искусства, а с целью сделать это своей профессией, то резона отказываться от этого компилятора я не вижу.


Во время обучения -- стоит. Сразу отпадает миллион вопросов, начиная от "почему в Кернигане и Ричи не говорится про какой-то stdafx.h?" и заканчивая "а в чем разница между консольной программой и оконной?" на начальном этапе обучения. Особенно если нет знаний про внутреннюю архитектуру Windows. С простым консольным компилятором проще работать. Ничего не отвлекает. Все ошибки исходят только из неправильного собственноручно написанного исходного кода, а не от неосторожного движения мышкой.

 
 
 
 
Сообщение18.05.2008, 22:55 
Аватара пользователя
ipanema, в общем, согласен.

 
 
 
 
Сообщение20.05.2008, 05:28 
Аватара пользователя
:evil:
Истина, как всегда, подобна радуге (IMHO). Да, разбираться, что такое консольное и что такое GUI приложение новичку на первом занятии — тяжело. Почему stdafx.h отсутствует в K&R — тоже.

Есть несколько «но»:

1) На K&R С уже давно никто не программирует. В худшем случае — ANSI C'89, в лучшем — более поздний стандарт. Поэтому учась по этой классической книжке сталкиваешься с многими неувязками в жизни. И не только stdafx.h, который легко прочитать.

2) 99% (а, точнее — больше) программ сейчас работают в GUI. Поэтому навыки только консольного программирования недостаточны.

3) Я не вижу особых сложностей в объяснении любому студенту, чем отличается консоль от GUI. Даже на первом занятии по программированию.

4) Я с огромным сожалением вынужден признать, что на данный момент Visual Studio является едва ли не лучшей средой разработки. Бог с ним, с компилятором. Среда к нему не сводится. Нужен, например, ещё и качественный отладчик. А это — на порядок более хитрый зверь. Ткните меня носом в другой приличный отладчик. Очень прошу — самому надо. Например, в Linux.

5) Чтобы меня не заподозрили в любви к мелкомягким — в Редмонде до сих пор не поняли, что реализуя язык программирования хорошим тоном является указание стандарта и в чём язык компилятора отличается от стандарта. С++ стандарт указан, а С — нет

 
 
 
 
Сообщение20.05.2008, 08:23 
Аватара пользователя
Вообще я совершенно убежден, что совершенно неважно, какую книгу возьмешь в руки первый раз, изучая язык программирования. На успех изучения это влияет в минимальной степени. Наиболее важным является практика. Нужно изучать его активно, делая упражнения, придумывая свои собственные, ставя перед собой достаточно сложные задачи и решая их. А по поводу учебника - зайдите в любой книжный и проведите некоторое время у стеллажа с пособиями по си. Пролистайте их, оцените стиль изложения, прочтите что-то из начала, обратите внимание на аннотацию - на какой уровень рассчитана книга. И купите ту, которая на вас глянет.

 
 
 
 
Сообщение20.05.2008, 18:15 
незваный гость писал(а):
Ткните меня носом в другой приличный отладчик. Очень прошу — самому надо. Например, в Linux.

gdb

 
 
 
 
Сообщение20.05.2008, 21:44 
Аватара пользователя
:evil:

1) Если не ошибаюсь, gdb — не экранный отладчик. Я не прав? Я ведь сравниваю не со своим любимым (и до сих пор используемым) debug'ом.

2) Моё (давно отставшее от жизни воспоминание), что gdb можно сконфигурировать на всё на свете. Но мне не нужно всё на свете. Мне не нужен конструктор отладчиков. Мне нужен отладчик. Есть ли готовые конфигурации, позволяющие обойтись функциональными кнопками хотя бы для простейших случаев: run, breakpoint, step, step-over, step-out, stop?

3) Поправьте, меня, пожалуйста: я не уверен, что я могу выделить в исходном коде выражение и посмотреть его текущее значение. Или могу?

4) Кстати, больное место Visual Studio — то, что breakpoints хранятся относительно начала текста, а не функции. А как в gdb — при повторном запуске слегка изменившейся программы breakpoints сползут?

5) Насколько сбивается gdb, когда имеет дело с сильно препроцессированным (слово-то какое! жуть берёт) текстом? У DIAB это было большой проблемой.

Это лишь примеры. Так или иначе интеграция отладчика, компилятора, редактора текстов и прочей ерунды в единую среду разработки — сильный шаг, повышающий продуктивность программиста. Он, кстати, позволяет не дублировать в отладчике куски компилятора (например, при вычислении выражения).

 
 
 
 
Сообщение20.05.2008, 21:56 
Аватара пользователя
Кстати, есть множество GUI оболочек для gdb (который безусловно является мощным, но консольным отладчиком) - например:
dbvi
DDD
KDbg
еще всякие: xxgdb, ups, tgdb и т.п.

 
 
 
 
Сообщение20.05.2008, 22:05 
Аватара пользователя
:evil:
(тяжёлый вздох) Я знаю о них. maxal, Вы пользовались VS'05? Которая из этих программ сопоставима (или ближе, или превосходит) по эргономике и функциональности? (Это отнюдь не риторический вопрос, я просто буду её смотреть в первую очередь.) Я не имею в виду look and feel, именно функциональность и эргономику.

Например, я студент, слушаю курс С. Мне рассказывают язык, алгоритмы. О методике отладки — ни слова. Мне нужно взять отладчик (yum, apt-get — как угодно), и начать работать. Времени и сил на конфигурирование нет. Что бы Вы порекомендовали?

 
 
 
 Re: программирование на "си"
Сообщение20.05.2008, 22:11 
leg031 писал(а):
подскажите пожалуйста литературу по "си" для начинающих. желательно на русском языке в электронном варианте. спасибо заранее.

А нужно именно C?
Или все-таки C++?
Если последний, то посоветую (по личному опыту)
Herbert Schildt - C++ from ground up

Я, правда, когда пришлось ее читать, уже уже имел опыт программирования.
Но мне кажется, она и новичку и пойдет.

А вот Страуструпа для первого(!) чтения не посоветовал бы.

P.S.
Не знаю, есть ли Schildt в русском переводе, но английская версия по сети гуляет. :wink:

 
 
 
 
Сообщение20.05.2008, 22:19 
Аватара пользователя
незваный гость писал(а):
:evil:
(тяжёлый вздох) Я знаю о них. maxal, Вы пользовались VS'05?

Видел издалека ;) С виндой да и вообще поделиями MS предпочитаю не иметь никаких дел.
незваный гость писал(а):
Например, я студент, слушаю курс С. Мне рассказывают язык, алгоритмы. О методике отладки — ни слова. Мне нужно взять отладчик (yum, apt-get — как угодно), и начать работать. Времени и сил на конфигурирование нет. Что бы Вы порекомендовали?

Я думаю, вопрос недостаточно четко поставлен. Отладка отладке - рознь. Все завивисит от того, что именно вы отлаживаете и какова цель отладки. Два крайних примера: если вы пишите какую-нибудь виндовую гуйню на VS, то и отлаживать лучше там же; а если вы, например, отлаживаете чужой бинарный код (чтобы сломать ;), то вам лучше использовать IDA. В общем, чтобы что-то советовать нужно знать: 1) под какой ОС происходит дело; 2) какой конкретно компилятор используется; 3) какого рода приложение отлаживается (консоль или гуй); 4) если гуй, то какие именно библиотеки графического интерфейса используются (методика и средства отладки могут от них зависеть - прежде всего нужно ознакомиться с рекомендациями по отладке авторов библиотеки) и т.п.

 
 
 
 
Сообщение20.05.2008, 22:36 
Аватара пользователя
:evil:
1) Под Linux (Kubuntu 8.04 и/или Fedora 9: KDE).
2) gcc
3) консоль и/или Qt
4) Мне представляется, что менять отладчик под библиотеку — это крутовато. Хотя, если задуматься — не так уж странно.

Эти вопросы верны. Но общая цель отладки — отладка учебной задачи.

 
 
 [ Сообщений: 27 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group