LINUX.ORG.RU

Есть пару вопросов про C++

 , , ,


0

4

Если будет у кого-то время для ответа.

1. STL+IDE - это благо или зло? Ускоряет процесс создания или это для быдлокодеров, а программисты используют только Vim и встроенные инструменты?

2. Если в планах только системное программирование в Linux на C, можно ли обойтись без ООП C++ или всё же закупаться книгами по крестам?

Заранее благодарен.

для быдлокодеров

Смотря что в твоём пониманиии «быдлокодерство»

Deleted
()

STL+IDE - это благо или зло? Ускоряет процесс создания или это для быдлокодеров, а программисты используют только Vim и встроенные инструменты?

Смешал две сущности.

STL

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

IDE - это благо или зло? Ускоряет процесс создания или это для быдлокодеров, а программисты используют только Vim и встроенные инструменты?

Да попробуй уже то и то. Что однозначно круто - vim mode, даже в IDE. Для того чтобы ему обучиться лучше пользоваться vim в том числе. Рекомендую прочитать книгу чтобы познать дзен, иначе будешь потом знать три команды и не понимать почему всем это нравится. А если будет не понимать, то естественно прийдешь в выводам что «не нужно», как все не понимающие зачем нужно

Если в планах только системное программирование в Linux на C

Что это за самоцель такая? Просто чтобы ни случилось, надо писать на С? Что ты вкладываешь в понятие «системное программирование»?

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от BceM_IIpuBeT

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

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Благодарю

ООП не получается осилить.

Есть вакансия в конторе, которая пишет разный низкоуровневый софт для UNIX-only. Обещали стажёром взять, если C/C++ основы освою. Дали полгода для этого.

Начал я с ассемблера. Просто почитать и немного вспомнить времена Синклера. Но теперь Си нужно начинать. А вот ООП меня убивает. Хочется плюнуть на всё...

le_legioner ★★
() автор топика
Ответ на: Благодарю от le_legioner

ООП не получается осилить.

А что именно не получается? Просто в разных языках этим пользуются до разной степени. В С++ вообще в большинстве случаев дальше инкапсуляции не идет. По сути повальное большинство классов в С++, даже в сложных проектах - структуры с присобачеными методами и названые гордо «класс». В С++ больше ценость в программировании на шаблонах, шаблонном полиморфизме, так как сообщетво любит бесплатные для процессора абстракции, а это единственное что стоит 0 при исполнении. Тестирование делается через него же часто.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Я даже твой текст не очень осилил. ;-) Короче, без практики - не пойму. Нужно погружение. Значит пока буду Си учить, а кресты уже попытаюсь осилить уже, работая.

Благодарю за подсказки.

le_legioner ★★
() автор топика

закупись книгами по питону, и пиши на нем. import posix, и в бой

заодно и ооп освоишь, в намного более приятном, чем в с++, виде

если любишь всё французское, можешь еще раст взять

MyTrooName ★★★★★
()
Ответ на: комментарий от MyTrooName

Понимаешь... нет у меня времени, если честно. Хотел только Си освоить и вообще не лезть в ООП. Староват я уже для такихще перемен в жизни - из админа в программеры. А тут предлагают вообще С++ учить. И дурной вопрос: учить сначала Си, а затем кресты? Но говорят, что это вредно... говорят они - учи С++. Это и есть Си, только с классами. ;-) Боюсь, что и классы не выучу и Си не осилю с ними. ;-)

le_legioner ★★
() автор топика
Ответ на: комментарий от le_legioner

Староват я уже для такихще перемен в жизни - из админа в программеры

Будешь себе это внушать, будет еще хуже.

vertexua ★★★★★
()
Ответ на: комментарий от le_legioner

Боюсь, что и классы не выучу и Си не осилю с ними. ;-)

Ну читай книги, задавай конкретные вопросы на ЛОРе. Нужно говорить о конкретике, а не о общих делах. Иначе невозможно помочь

vertexua ★★★★★
()
Ответ на: комментарий от le_legioner

Боюсь, что и классы не выучу и Си не осилю с ними. ;-)

концепции ООП все равно пригодятся скорее всего. если хочешь стать программером - надо языка 3 освоить хотя бы туда-сюда. 1) что-нибудь со строгой динамической типизацией и GC 2) что-нибудь со строгой статической типизацией и GC 3) что-нибудь со строгой статической типизацией и без GC

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

MyTrooName ★★★★★
()

Vim

Сейчас тебе будут рассказывать какой он крутой. Не слушай. Просто запусти сам и прикинь нужен ли тебе инструмент, который позволяет делать очень хитрые вещи с текстом, такой ценой. Особенно учитывая что программистам не нужно делать странных вещей с текстом.

Deleted
()
Ответ на: комментарий от Deleted

Vim

просто поиграй в nethack несколько часов без кейпада, потом пройди vimtutor, и всё, ты - вимер

MyTrooName ★★★★★
()

Я так понял, что ты новичек в погромировании. Начни с книги «c++ за 21 день. Джесс Либерти» ну и K&R «Язык программирования С». Только на ней не останавливайся. А после нее уже можешь всяких Страуструпов начинать.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от BceM_IIpuBeT

Лол-то. Набор текста, беготня по нему курсором и поиск с заменой (нужно пару раз в год). Вот, собственно и всё. С этим справится любой редактор любой IDE. В IDE важнее такие вещи как интерфейс к gdb и valgrind. Вот это действительно важные вещи, сохраняющие волосы шелковистыми. И вот как раз с этим у Vim огромнейшие такие проблемищи.

Deleted
()

Использую консольный vim, использую stl в проектах.

andreyu ★★★★★
()
Ответ на: комментарий от le_legioner

И дурной вопрос: учить сначала Си, а затем кресты?

Именно так.

Но говорят, что это вредно...

Ничего вредного. Просто на учебных прогах классы не очень нужны.

Это и есть Си, только с классами.

Когда-то так и было (лет 30 назад). Сейчас — не совсем так. Но если у них Си++ — это просто си с классами, то можно учить по первому изданию Страуструпа, там вообще ничего сложного, если си знаешь.

aureliano15 ★★
()
Ответ на: комментарий от BceM_IIpuBeT

K&R «Язык программирования С»

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

aureliano15 ★★
()
Ответ на: комментарий от aureliano15

Благодарю за разъяснение. Пару месяцев сэкономил мне.

le_legioner ★★
() автор топика
Ответ на: комментарий от aureliano15

У Прата очень хорошие книги для новичков: Си и С++

Прямо по очереди можно учить, т.к. построены книги (контент) одинаково. Легко пересаживаться.

le_legioner ★★
() автор топика
Ответ на: комментарий от le_legioner

Если там Unix-only, то после си и си++ ещё очень желательно posix выучить.

aureliano15 ★★
()

Имхо

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

Кидаться сразу во всё - будет только каша в голове.

anonymous
()

Начинал плюсы учить сразу, так же ,как и вим.

Не знал ни того ни другого, плюсы сложнее чем вим.

Вимтутор и я влюбился в этот редактор, круче тучи ))) серьёзно.

Любое начинание требует усилий, начинайте с малого, с вима, там первый хелловорлд пишите.

Но сначала откройте консоль и наберите vimtutor

qqsi
()
Ответ на: vimtutor от le_legioner

И в дальнейшем советую консольный вим, без гуёв тобишь.

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

vim

vifm

cmus

zathura

vimium в браузере

qqsi
()
Ответ на: комментарий от qqsi

Немного оффтоп, не подскажешь просмотрщик картинок с vim like управлением?
Вроде пересмотрел несколько, но вдруг не заметил. Даже желание возникло взять какой-нибудь viewnior и переделать управление :)
Т.е. хочу что-то вроде zathura но для картинок.

anonymous
()
Ответ на: комментарий от le_legioner

ты, очевидно, не понимаешь, что учить нужно не языки программирования, а область применения, в основном. «выучить» C может любой школяр. писать на нём, как показывает практика, может далеко не каждый. толку с того, что ты формально выучишь синтаксис, будет мало. вся сложность в том, где ты будешь его применять. тем более, что ты заикнулся про системное программирование, а эта область мало подходит для начинающих. и кроме синтаксиса есть целый вагон паттернов и стандартых решений типовых задач. без знания алгоритмов и внутреннего устройства систем и архитектуры железа туда соваться даже близко не стоит.

поэтому все эти «С/C++ за 21 день» - это туфта. десять лет - нормальный срок, чтобы стать профессиональным программистом.

Iron_Bug ★★★★★
()

Нахера тебе вим? Бери проше, Qt Develop, eclipse, vscode.

Тебе шашечки или ехать?

AUX ★★★
()
Ответ на: комментарий от BceM_IIpuBeT

Например?

Нет, вроде в более новых изданиях получше. В том, по которому учился я, все функции объявлялись так:

power(base, n)
int base, n;
{
  /* тело */
}

А сейчас открыл первую попавшуюся google-ссылку на книгу — вроде нормально объявляются, только power нашёл, да и то с примечанием:

Историческая справка. Самые большие отличия ANSI-Си от более ранних версий языка как раз и заключаются в способах объявления и определения функций. В первой версии Си функцию power требовалось задавать в следующем виде:

/* power: возводит base в n-ю степень; n >= 0 */
/* (версия в старом стиле языка Си) */
power(base, n)
int base, n;
(
 int i, p;
 P = 1;
 for (i = 1; i <= n; ++i)
 p = p * base;
 return p;
}
Здесь имена параметров перечислены в круглых скобках, а их типы заданы перед первой открывающей фигурной скобкой. В случае отсутствия указания о типе параметра, считается, что он имеет тип int. (Тело функции не претерпело изменений.))

Но даже в таком варианте первая же программа hello_world вызовет с опцией -Wall предупреждения gcc и любого другого нормального компилера:

#include <stdio.h>
main()
{
 printf ("здравствуй, мир\n");
}
test_kr.c:2:1: предупреждение: по умолчанию возвращаемый тип функции - «int» [-Wreturn-type]
 main()
 ^
test_kr.c: В функции «main»:
test_kr.c:5:1: предупреждение: control reaches end of non-void function [-Wreturn-type]
 }
 ^
aureliano15 ★★
()
Ответ на: комментарий от Iron_Bug

ты заикнулся про системное программирование, а эта область мало подходит для начинающих

Ну, его же на фирму берут, зная кого берут. :-) А значит начинающие там тоже годятся. Кстати, не так уж долго нужно учиться, чтоб писать. Точно не 10 лет. У нас студенты нормально обучались за несколько лет. Здесь больше от человека зависит, а не от срока.

aureliano15 ★★
()
Ответ на: комментарий от aureliano15

десять лет - это если человек сообразительный и достаточно упорный. остальные через год или два отсеиваются.

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

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

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 3)
Ответ на: комментарий от Iron_Bug

поэтому все эти «С/C++ за 21 день»

Это просто название такое. Из конца 90-х. Никто и не говорит, что за пол года можно стать специалистом.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от BceM_IIpuBeT

я в курсе, кэп. но просто люди думают, что вот они «выучили» язык программирования - и они уже программисты :)

Iron_Bug ★★★★★
()
Ответ на: комментарий от xaizek

Благодарю тебя и qqsi за список, смотрел все в своё время.
Вспомнил чем мне не понравился sxiv.
Допилю его под себя.

anonymous
()
Ответ на: комментарий от Iron_Bug

нормальный код обычно появляется где-то лет через десять

Я знал людей, достигавших этого раньше. А ещё знал людей, которые после 3-5 летнего стажа самостоятельно проектировали собственные платы с нуля и писали для них прошивки на си, вполне рабочие.

aureliano15 ★★
()
Ответ на: комментарий от le_legioner

Обнадёжил... ;-)

На самом деле если ты админ, то не совсем новичок, т. к. специальности хоть и разные, но во многом пересекающиеся: и терминами, и пониманием, как работает тот или иной протокол, и многим другим.

aureliano15 ★★
()
Ответ на: комментарий от linuhs_user

gcc -ansi

Я и говорю, что

без специальных опций совместимости компиляться не будут.

Ну, в данном случае будут, но с предупреждениями. В любом случае K&R морально уже устарел. Если бы ещё не было выбора, жили бы как в Советском Союзе, где книжки печатались миллионными тиражами, но сама номенклатура была невелика, тогда можно ещё учить по K&R на безрыбье, но при наличии выбора, зачем пользоваться старьём? Ну можно прочитать потом лёжа на диване как беллетристику, — классика всё-таки, потом можно всем говорить, что K&R читал... Но учиться по этой книге, чтоб сразу начать переучиваться, смысла не вижу.

aureliano15 ★★
()
Ответ на: комментарий от BceM_IIpuBeT

Что ты предлагаешь на замену K&R?

Я ничего не могу предложить, т. к. чтобы предлагать, надо прочитать и заценить. Но, как я понял, у ТС'а есть 2 книги одного автора по сям и крестам. Насколько они хороши — не знаю.

aureliano15 ★★
()
Ответ на: комментарий от aureliano15

Именно так.

Уже давно не так. И вряд ли когда либо было так.

С и C++ — это разные языки, программировать на них нужно по-разному. И то, что изрядная часть C является подмножеством C++, этого факта не отменяет.

Ничего вредного.

Ваш совет, например, вполне себе вредный.

eao197 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.