Может изучение C или C++ быть опасным для моего компьютера? [закрытый]

Можно также сделать a:

g/pattern/#

, который распечатает шаблон, который Вы хотите и количество строки.

21
задан Gordon Potter 13 September 2009 в 22:50
поделиться

10 ответов

Нет

В операционной системе уже есть защита от ошибочных программ. Мы говорим, что C «опасен» просто потому, что он имеет необработанные указатели и массивы.

Эти вещи делают C и C ++ в некотором роде близкими к оборудованию, быстрыми и эффективными с точки зрения памяти, но они позволяют программе на C работать забить что-то случайное в своей собственной памяти. Его собственная память, а не какая-либо другая программа. Это не повреждает память, это просто меняет то, что делает одна программа на C ... обычно она прерывается.

Вы не можете случайно повредить что-либо, если не выполните что-то такое же опасное, если ввести его в командной строке, скажем, «rm -rf» передается в system (3) изнутри вашей программы.

Но вы можете создать опасную команду ОС на любом языке. Собственно, это '

44
ответ дан 29 November 2019 в 06:08
поделиться

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

24
ответ дан 29 November 2019 в 06:08
поделиться

если вы действительно беспокоитесь, Virtualize! Я сомневаюсь, что вы случайно что-то испортите ОБУЧЕНИЕ C ++, но если это вас успокоит, запустите виртуальный компьютер и делайте всю свою работу на нем.

6
ответ дан 29 November 2019 в 06:08
поделиться

Несколько лет назад на моем 386-м я учился писать кодирование низкоуровневой видеокарты на C и, должно быть, напортачил, потому что вместо записи в конкретный регистр VGA я ударил по звуковой карте и Мой компьютер издавал самый неземной крик. Совершенно напугал меня! Это было по-прежнему безопасно, но я извлек ценный урок - власть дает ответственность.
По природе использования такого языка, как C или C ++, вы, естественно, хотите взаимодействовать с вашим ПК / рабочей станцией / ОС на более низком уровне, поэтому примите последствия.
Вот почему многие современные ОС имеют доступ на уровне «супервизор» и «пользователь». Если вы ДЕЙСТВИТЕЛЬНО хотите испортить свой компьютер, поиграйте с DDK

== Edit == Только что вспомнил еще один. Несколько лет назад я работал с нестандартным оборудованием и получил одну из первых плат-прототипов. Я тестировал новый звуковой чип, поэтому набрал какой-то быстрый код и отправил его, затем я услышал мощный хлопок и наблюдал, как будто в замедленной съемке, как конденсатор взорвался и отправил его содержимое прямо мне в глаз. К счастью, он просто промахнулся мимо моей головы на несколько дюймов. Кто сказал, что программирование на C не вредно для вашего здоровья!

9
ответ дан 29 November 2019 в 06:08
поделиться

Если у вас есть разумные разрешения, установленные в вашей OS X, вам не нужно беспокоиться о случайном удалении.

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

Чтобы подробнее рассказать о возможных опасностях разработки на уровне ядра:

  1. Перезапись секторов жесткого диска.

  2. Повреждение памяти в других процессах, вызывающее непредвиденное поведение.

  3. Управление оборудованием. с неожиданными последствиями. (Это может привести к перегреву, поломке плохо спроектированного оборудования или переписыванию микропрограммы с тарабарщиной.)

Эти проблемы можно устранить, запустив виртуальную машину.

6
ответ дан 29 November 2019 в 06:08
поделиться

Нет, это не проблема. C и C ++, как и все другие языки программирования, имеют дело с тем, что происходит в вашей программе на CPU. Конечно, вы можете сделать системный вызов, который форматирует ваш жесткий диск, но «форматирование жесткого диска» не является частью языка C ++. Обычный код с ошибками просто дает сбой (или, если вам не повезло, не дает сбоев и ведет себя странно)

В этом отношении он не более опасен, чем Java, Python или любой другой язык. Все они позволяют выполнять системные вызовы, которые могут вызвать проблемы. Но пока вы остаетесь «внутри» языка, играя с конструкциями, определенными языком (функциями, классами, указателями, циклами и т. Д.), Худшее, что может случиться, - это то, что вы испортите свою собственную программу.

5
ответ дан 29 November 2019 в 06:08
поделиться

Честно говоря, я думаю, вы ответили на свой вопрос, когда сказали, что неплохо проверить / понять код, который вы запускаете из Интернета. Если вы купите себе респектабельную книгу вроде Язык программирования C , шансы на то, что вы допустите ошибку, достаточно серьезную, чтобы полностью разрушить ваш компьютер, ничтожны. Вам действительно нужно знать, что вы делаете, чтобы написать код, разрушающий вашу систему. Вы намного с большей вероятностью случайно rm -rf / при запуске от имени root или установке какой-то плохой библиотеки, которая влияет на стабильность системы.

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

1
ответ дан 29 November 2019 в 06:08
поделиться

Если вы не вошли в систему как root, вы не сможете нанести большой вред своей машине.

1
ответ дан 29 November 2019 в 06:08
поделиться

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

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

1
ответ дан 29 November 2019 в 06:08
поделиться

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

3
ответ дан 29 November 2019 в 06:08
поделиться