LINUX.ORG.RU
Ответ на: комментарий от JaneDoe

Кстати, в паскале уже можно реализовать ReadLn средствами языка?

Лет 20 как, с разморозкой.

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

Хочу научиться программированию. Не знаю, в какой области буду в будущем прикладывать, поэтому интересует что-то типа «классики».

В таком случае начинать надо с C++ т.к. он включает в себя ООП, которого в языке C нет. Освоив C++, ты впоследствии без труда освоишь любой другой язык, а вот освоив сначала C потом придётся ещё не мало попотеть над вниканием в ООП, так что лучше не откладывать изучение парадигмы ООП в долгий ящик и сразу начинать с C++.

Единственное что хочется отметить, если ранее ты не сталкивался серьёзно с изучением программирования, то ни в коем случае не изучай C++ по книге Страуструпа, для новичка идеальный вариант это книга «Х.М. Дейтел, П.Дж. Дейтел Как программировать на C++», там сначала подробно разжёвывают самые азы (как если бы ты изучал просто C) постепенно переходя на более сложные материи.

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

C++ т.к. он включает в себя ООП, которого в языке C нет.

лол

anonymous
()

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

thesis ★★★★★
()

Довольно странно начинать обучение программированию с любого из этих языков: C слишком низкоуровневый (чтобы написать хоть что-то, имеющее реальную отдачу, нужно осознать много непрофильных вещей вроде типов данных, указателей, управления памятью), а C++ слишком замороченный и неочевидный (поди объясни неофиту сходу, почему cout << 12 печатает число, а 1 << 12 делает что-то другое).

Сам в свое время начинал с BASIC на spectrum-е. Думаю, что и по сей день BASIC — годный язык для начинающего.

kawaii_neko ★★★★
()

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

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

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

ни в коем случае не изучай C++ по книге Страуструпа

У Страуструпа кроме «Языка программирования» есть еще и «Программирование. Принципы и практика». Вроде бы более щадящий вариант, написанный для новичка. Правда, по объему он от «Языка» не отстает.

JaneDoe
()

Потому что С++ - это ООП, поэтому если с него начинать, то придётся решать сразу две задачи: учиться собственно программированию ЭВМ и осваивать объектно-ориентированный подход. В итоге есть вероятность запутаться и не понять ни того, ни другого. Кстати, начинать сразу с Си - тоже не лучшая идея, потому что Си - это профессиональный, а не учебный ЯП, в нём многое реализовано так, чтобы решать задачи эффективно, но не всегда понятно. А учиться программированию лучше по такой схеме: BASIC->Pascal->C->{C++,Python,Perl,...}

x-signal ★★
()
Ответ на: комментарий от kawaii_neko

basic это укоцанный до ассемблера(см wang-)fortran - так что если тока как асм многорегистровой машины basic годен как язык для начинающих - тогда уж можно dc ( man dc) как язык для начинающих - там(в dc) хоть Quine-прога клёвая - почти как в HQ9

qulinxao ★★☆
()
Ответ на: комментарий от x-signal

Потому что С++ - это ООП

откуда вы все???(не, ну биологически очевидно - но вот что за система образования то )

попробуй С++ with STL and without class

qulinxao ★★☆
()
Ответ на: комментарий от x-signal

всёж отсутствие(до сих пор) шаблонов в чистом С хоть и легко обходится самопальным препроцессингом но stl как идея (а она и на схеме была как и на аде как и на чистом Си) - редко когда/где в экосистеме чистого Си исползуеится

где аналог того же бууста для чистаСи???

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

Паскаль в рамках школьной программы.

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

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

При такой постановке вопроса ищи вакансии джуна в том городе где хочешь работать и смотри требования.

Это что шутка такая? При такой постановке вопроса надо искать работу в другой области, потому что практически с нуля учиться программированию и одновременно с этим искать работу программистом - это нонсенс.

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

Человек хочет научиться программировать но не знает за какой язык взяться. Это решает вопрос и с умением и с выбором языка.

ya-betmen ★★★★★
()

Потому что поехавших маньяков и так достаточно.

devl547 ★★★★★
()

Потому что С++ нереально сложен, а для обучения нужно что-то простое как три рубля. Посмотри на объём учебника по крестам (учебник прата больше 1000 страниц) и по си (k&r 250 страниц) - сравни и подумай. И это при том, что после k&r в принципе больше ничего не надо, а после учебника прата нужно прочитать ещё 5 книжек про всякие нюансы языка. Такие дела.

no-such-file ★★★★★
()
Ответ на: комментарий от greenman

Как считаешь, надо для этого знать ассемблер?

Хотя бы в общих чертах. Чтобы видеть, происходит ли вызов или инлайн, развернут ли цикл, применилось ли (N)RVO

Uter
()

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

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

Что тут обосновывать, всё и так очевидно: Rust в общем менее гибок плюсов и не менее сложен в разработке благодаря своей ссылочной семантике, заморочками с lifetime-ами и упёртостью его разработчиков. Последнее в основном выражается в навязывании некоторых стилей разработки через костыли и неприятие альтернативных подходов (например, наследование, исключения ... всё предлагают костылить через композицию руками).

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

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

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

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

Оказывается, MIT говнокодеров выпускает.

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

Оказывается, MIT говнокодеров выпускает.

А ты не знал? Для кого-то это еще новость?

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

В сухом остатке: Rust в относительно скором времени (когда поправят всякие шероховатости с массивами фиксированной длины, специализацией трейтов, удобным IDE и прочим), будет полноценным конкурентом С++. Постепенно, с добавлением поддержки различных платформ, станет и конкурентом С.

До «примерно одной мажорной фичи» Rust'а С++ не доберётся никогда из-за груза обратной совместимости. А именно эта мажорная фича (гарантированно безопасная работа с памятью) позволяет избавиться от уязвимостей, приводящих к удалённому выполнению кода, упоминание о которых вы внимательно пропустили мимо глаз.

Очень рекомендую почитать http://www.cvedetails.com/vulnerability-list/cvssscoremin-9/cvssscoremax-10/v...

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

считающих что одной мегафичей можно побороть человеческую глупость

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

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

red75prim ★★★
()
Ответ на: комментарий от ya-betmen

Хорошая книжка, кстати. Любимая, моя, книжка.

Мимо-молчун.

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

Rust в относительно скором времени ... когда поправят всякие шероховатости ...

Мечтать не вредно, главное заранее губозакатываетль приобрести.

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

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

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

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

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

Очень рекомендую почитать...

В очередной раз задаю очередному любителю советовать мне что-то почитать вопрос: почему бы тебе сначала самому хорошенько не ознакомиться со своей ссылкой?

Что же там можно обнаружить: а) ошибки работы с памятью далеко не единственные в этом мире и даже не являются подавляющими; б) много ошибок касаются Си-шного кода и значительная их часть во всяих прошивках и ядрах, где и так будут часто использовать unsafe { ... } когда туда доедет Rust; в) существует куча ошибок вне c/c++ сводящих на нет любые потуги повышения безопасности системного кода.

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

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

Чей действительности не соответсвует если я, например, в этой уже встал в такую позу? Как же тебе поможет Rust с подобной спутанностью мыслей...

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

этот бред наивных дурачков

Аргументы будут? Достаточно примера кода без unsafe, содержащего уязвимость, приводящую к удалённому выполнению произвольного кода.

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

PVS-studio много анализов публикует, вполне можно составить мнение какие ошибки наиболее часты.

Большинство ошибок случаются именно из-за пренебрежения этими техниками

И как это мешает использовать компилятор, который предотвращает обширный класс опасных ошибок?

ошибки работы с памятью далеко не единственные в этом мире и даже не являются подавляющими

Давайте посмотрим. 3 buffer overflow, misconfiguration, не указано (remote code execution), misconfiguration, не указано (elevation), не указано, не указано (logic error?), 60 уязвимостей у Adobe (code execution, memory corruption), не указано, integer overflow, 2 не указано (code execution) ну и так далее.

Большинство ошибок в порядке убывания: ошибки в работе с памятью (как иначе можно получить remote code execution?) (и не только у Adobe), ошибки в конфигурации, sql injection, ошибки работы с правами доступа. Так что читайте больше.

где и так будут часто использовать unsafe

За unsafe бить по рукам намного проще, чем за то, что не заметил, что UB в коде в комплекте с оптимизатором привели к удалению проверки на null или чему-нибудь повеселее.

существует куча ошибок вне c/c++

Три-четыре примера реального взлома с использованием этой кучи ошибок? Ошибки в железе, надо полагать?

кардинально в целой картине ничего не меняя

Ещё раз, пожалуйста, посмотрите на список CVE. 11328 критических уязвимостей. Около половины из них - remote code execution.

качество разработки на плюсах

Качество разработки на сильно урезанном подмножестве плюсов.

Как же тебе поможет Rust с подобной спутанностью мыслей...

Несоответствие действительности можно отнести к стоянию в позе (что, как вы правильно заметили, не имеет смысла) или несоответствие действительности можно отнести к причинам стояния в позе (что вы не заметили, предпочтя считать оппонента дурачком).

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

останется навечно маргинальщиной

недоучек-романтиков

губозакатываетль приобрести

бред наивных дурачков

У тебя явно что-то личное против Rust. Ты не strncat часом?

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

И полностью переформатировать мозг, т.к. С++ настолько радикально отличается от С, что нужен совершенно иной стиль мышления, чтобы на С++ писать! Я, например, даже и не пытаюсь уйти в С++, потому как не имею объектно-виртуального стиля мышления.

anonymous
()

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

Умение же писать на С++ зависит в основном от знания его рантайма и синтаксиса, а далее от веры, кастылей и прочего.

Потом, когда умение сишки будет в районе «уровень господь» - тогда кресты будут казаться примитивной хернёй.

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

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

Он и не нужен.

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

Достаточно примера кода без unsafe, содержащего уязвимость, приводящую к удалённому выполнению произвольного кода.

Раз,
Два,
Три, обрати внимание на функцию os.system и варнинг про неё,
Четыре, дада, постскрипт тоже тюринг-полный язык, можно выполнять произвольный код,
Пять, сам когда-то делал файл ГолаяКурикова.ziр, в котором в URI запихивал fork bomb, ЛОЛ.

Так что выдыхай, бобёр, выдыхай...

shkolnick-kun ★★★★★
()
Ответ на: комментарий от anonymous

С++ настолько радикально отличается от С,

Си как и С++ состоит из мощи синтаксиса. Если ты можешь в реальный си - ты можешь в синтаксис.

что нужен совершенно иной стиль мышления, чтобы на С++ писать

Просто в крестах стандарты выше. Для написания качественного кода на си - требований не меньше. К твоему коду на си просто не предъявляются такие требования - вот и вся разгадка.

AnonCxx
()
Ответ на: комментарий от shkolnick-kun

Ойвей! И с каких пор они там выше?

Да много лет как. Как С/С++ начали перерастать.

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

Среди этих адептов качество кода вообще не котируется. Сри как угодно лишь-бы насрать.

Крестовикам хоть мозги промыли кодгайдами, они пишет не в нотепаде, не на днище рантайме как 90% крестовиков. У них больше примеров, ибо серьёзный си код находится в серьёзных проектов, которые ньюфаги читать не могут. У крестовиков с этим проще.

Плюс в крестах больше сахара, а те 90% сишку знают на уровне «массивчики/функции/операции/принтф» - т.е. на уровне первого курса.

AnonCxx
()
Ответ на: комментарий от shkolnick-kun

Раз - я просил без unsafe, FFI функции unsafe.

Два, три, пять - это - да, выполнение произвольного shell-кода возможно. Впрочем, сделать ошибку при выполнении команд системы сложнее, чем при использовании system(3):

Command::new("ls").arg("; bash").output()
не запускает баш, а возвращает ls: cannot access '; bash': No such file or directory. Да, Command::new("ls; bash") тоже не запускает баш.

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

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

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

http://stackoverflow.com/questions/5136164/is-there-a-file-io-in-postscript-f...

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

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

И да, исходный тезис был

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

Так вот, ни хрена она не позволяет.

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

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

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

По факту Rust не спасёт от выполнения произвольного кода.

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

И в случае автоматизированной системы это должен быть не матюгальник, который ругается на все подряд, а генератор кода, который анализирует зависимости и сам делает Box Rc Arc Mutex и так далее.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от umren

Наверное легко выучить язык, который разрабатываешь несколько десятков лет. Oh wait...

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

PVS-studio много анализов публикует, вполне можно составить мнение какие ошибки наиболее часты.

Нельзя. Это было бы верно, если бы pvs-studio находило _все_ ошибки.

Эти данные (без дополнительных данных), на самом деле, вообще ничего не дают. Можно точно так же сказать, что они показывают какие ошибки может находить pvs вообще.

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