В чем разница между информатикой и программированием?

32

Я новичок в информатике и программировании, и мне было интересно, есть ли разница между информатикой и программированием? и вы можете выбрать, чтобы учиться только один из них в университете, или оба?

xXSarahXx
источник
42
Плохая аналогия времени.
Майк Веллер
10
В чем разница между архитектурой и строительством?
Одед
6
они так же далеки друг от друга, как геология и рытье канав
Стивен А. Лоу
27
Информатика - это то, что вы платите, чтобы учиться. Программирование - это то, за что вам платят.
jfrankcarr
5
Разница в том, что заставляет вас использовать плавную сортировку вместо пузырьковой сортировки.
Deadalnix

Ответы:

68

Информатика - это изучение того, что могут делать компьютеры; программирование - это практика, заставляющая компьютеры делать вещи.

Взгляните на курсы / учебные планы, предлагаемые интересующими вас университетами, чтобы узнать, является ли этот курс курсом CS, курсом программирования, чем-то еще (например, разработкой программного обеспечения) или даже комбинацией вышеперечисленного. Многие курсы, рекламируемые как «информатика», предлагают значительный программный компонент, который может быть таким, чтобы вы могли применять теоретические части курса на практике, или может быть ради них самих, чтобы вы могли научиться навыкам создания программ.


источник
1
Очень хороший ответ, хотя он не отвечает практической части вопроса;)
back2dos
@ back2dos Хорошо, я расширил ответ.
Важно отметить, что большинство курсов по компьютерным наукам вообще не имеют отношения к теоретической CS, так как TCS, по крайней мере, так же отделен от практической CS, как и CS от программирования.
Бен Брокка
3
Я не думаю, что вы должны привязывать CS (несмотря на название) слишком близко к компьютерам: в первую очередь, это изучение информации . Просто случается, что термин «компьютер» охватывает большинство различных физических инструментов, которые мы используем для работы с информацией, поэтому практически любое изучение информации будет включать программирование компьютера.
Тихон Джелвис
Таксономия может подойти под прозвищем информатики. Но это не кажется мне подходящим под CS. Полезно в междисциплинарном смысле, но CS неразрывно связан с тем, что мы можем сделать с компьютерами, IMO. Я мог бы сделать ваше определение «компьютера» более общим, но не определение CS.
Эрик Реппен
36

Предостережение: «Компьютерные науки» стали запутанной областью в наше время, потому что (по крайней мере, в Соединенных Штатах) университеты не имеют степеней в «программировании». Это означает, что люди, интересующиеся программированием, должны зарегистрироваться для получения степени информатики, и в качестве реакции на это программы информатики делают упор на программирование все больше и больше.

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

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

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

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

shanef22
источник
4
Да, последнее предложение - загвоздка, не так ли? Это вызывает в воображении образы помятых профессоров с вьющимися волосами и меловыми пальцами, развевающимися вокруг пригоршни пергамента, и напоминает цитаты типа «информатика не больше о компьютерах, чем астрономия о телескопах». Если наука в конце концов так или иначе не превратится в машину, то какой в ​​этом смысл? Какой астроном в здравом уме никогда не смотрит в телескоп?
Роберт Харви
Я не думаю, что меня когда-либо просили «превратить алгоритм в то, что может делать машина» за последние 30 лет. Вы думаете не о программисте, а о компиляторе.
gnasher729
2
@ gnasher729 Хорошо, допустим, у меня есть алгоритм: «Для каждого слова в списке, если оно начинается с буквы A, переместите его в начало». Какой компилятор вы бы порекомендовали?
shanef22
18

Информатика имеет дело с теоретическими основами информации, вычислений, а также с практическими методами их реализации и применения. http://en.wikipedia.org/wiki/Computer_science

~

Информатика не больше о компьютерах, чем астрономия о телескопах. Эдсгер Дейкстра

Программирование - это умение создавать компьютерную программу.

Гари Уиллоуби
источник
11

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

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

Многое из этого было сделано с помощью программирования, то есть акта написания кода, который затем компилировался или выполнялся через интерпретатор с целью генерирования результатов для решения проблемы. То есть программирование - это процесс решения проблем, который можно описать с помощью знаний информатики. Это что-то вроде Pure Maths / Applied Maths.

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

mcfinnigan
источник
1
Я не думаю, что студенты CS лучше, чем студенты других курсов по программированию.
Tjaart
5
Я не сказал лучше , я сказал, что, вероятно, будет более глубокое понимание.
McFinnigan
@mcfinnigan, я бы сказал, более ошибочный. Студенты CS, которые обосновывают себя в теории, как правило, имеют меньше понимания, потому что они на самом деле не имеют опыта, чтобы знать, что компьютеры могут сделать , или как добраться на разных языках.
Изката
3
опять вы меня не так поняли. Я говорю, что программист, который потратил время на то, чтобы овладеть некоторой реальной теорией CS, с большей вероятностью узнает, почему Set лучше, чем List в определенных ситуациях, или почему с плавающей запятой сложно.
mcfinnigan
2
@TikhonJelvis: инженерия использует математику, но это два шага. CS это раздел математики.
Кевин Клайн
3

Я бы перефразировал ваш вопрос как "В чем разница между информатикой и разработкой программного обеспечения?" Ведь оба связаны с программированием.

Информатика - это теоретическое исследование того, что такое вычисления, а что возможно, а что нет. Здесь рассматриваются такие вещи, как теорема Годельса и проблема Остановки.

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

Jaydee
источник
Нет. Зачем перефразировать его вопрос? Он спросил, что он спросил. Программная инженерия отличается от программирования и ТАКЖЕ противоречива, потому что она означает разные вещи в разных странах (например, в США и Канаде)
Дуглас Хелд
2

Информатика - это теория программирования. Программирование - это реализация.

Информатика ... это научный и практический подход к вычислениям и их приложениям. Специалист по информатике специализируется на теории вычислений и проектировании вычислительных систем.

Его подполя можно разделить на различные теоретические и практические дисциплины. Некоторые области, такие как теория вычислительной сложности (которая исследует фундаментальные свойства вычислительных задач), являются в высшей степени абстрактными, в то время как такие области, как компьютерная графика, акцентируют внимание на реальных визуальных приложениях. Другие области сосредоточены на проблемах реализации вычислений. Например, теория языка программирования рассматривает различные подходы к описанию вычислений, в то время как изучение самого компьютерного программирования исследует различные аспекты использования языка программирования и сложных систем. Взаимодействие человека с компьютером рассматривает проблемы, связанные с тем, чтобы сделать компьютеры и вычисления полезными, удобными и универсально доступными для людей ...

Том Сквайрс
источник
12
Я искренне верю, что информатика - это больше, чем программирование.
Ubermensch
2
@Ubermensch: я искренне верю, что программирование - это больше, чем информатика.
Майкл Боргвардт
1
@MichaelBorgwardt На самом деле, оба наших взгляда верны. Но информатика все еще намного больше, чем программирование (Вы можете спорить и наоборот). Известная цитата Нильса Бора: «Существует два вида истины: маленькая истина и великая правда. Вы можете распознать маленькую истину, потому что ее противоположность - это ложь. Противоположность великой истины - это другая правда».
Ubermensch
@ Ubermensch Твоя вера - это факт. Информатика - это не просто теория программирования. Информатика существовала до появления компьютеров.
Кейси Паттон
1

Если программирование - это столярное дело, то информатика - это архитектура / дизайн.

редактировать

Больше информации: в столярных изделиях вас интересуют такие вещи, как то, что для того, чтобы строить вещи (каркас, затем основание, затем внутренние стены, затем гипсокартон и т. Д.). Как вы строите это так, чтобы это заняло меньше времени, но может быть изменено позже.

В случае с архитектурой (в любом случае ее частью, например, CS) вас интересуют такие вещи, как возможности материалов, насколько велика ширина балки, необходимая для того, чтобы выдержать этот промежуток стены / крыши?

Точно так же CS касается теоретических возможностей компьютеров, где программирование - это практическое применение этих знаний.

Скотт Уитлок
источник
3
Плохая аналогия. Если программирование - это столярное дело, то разработка программного обеспечения - это архитектура / дизайн. Информатика больше похожа на дендрологию в этом отношении, или, может быть, биологию в целом.
back2dos
Хорошо, может быть, мне было неясно, поэтому позвольте мне объяснить, почему я думаю, что ваша аналогия не работает. Забота о возможностях материала - это материаловедение, а стабильность структуры - это статика. Ни один из них на самом деле не является тем, что представляет собой дизайн, они только ограничивают его. Проектирование (программное обеспечение или здания или что-либо еще) подразумевает принятие всех требований и ограничений (технических, финансовых, психологических, ...) и разработку решения, соответствующего этим требованиям.
back2dos
1

Информатика - это программирование, а физика - машиностроение.

Информатика является теоретической, она требует научного и математического подхода к информации и ее вычислениям.

Компьютерное программирование практично, это процесс проектирования, написания, тестирования, отладки и поддержки исходного кода компьютерных программ.

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

БББ
источник
0

Степень в области компьютерных наук гораздо шире и охватывает теорию, лежащую в основе вычислительной техники. Степень в области компьютерного программирования , с другой стороны, ориентирована на развитие кодирования или навыков программирования студентов путем обучения их на разных языках программирования. Если вы не уверены, вы можете просмотреть детали обеих этих программ в Калифорнийском колледже Сан-Диего. Это может дать вам некоторую ясность относительно объема этих степеней!

user45390
источник
0

Информатика : это изучение проблем с помощью компьютеров / вычислительных методов.

Компьютерное программирование: это часть процесса решения проблем, которая составляет область компьютерных наук. Компьютерное программирование - это лишь небольшая часть компьютерных наук.

ramneet
источник
-1

Программирование - это люди. Люди читают, пишут и поддерживают код. Информатика - это математика, они реализуют и описывают алгоритмы.

DeadMG
источник
3
@ SK-logic и DeadMG. Я удалил все эти комментарии. Если вы хотите обсудить (или даже спорить), пожалуйста, возьмите его в другом месте.
ChrisF
1
Это немного узко. По крайней мере, лаборатория "Алгоритмы, машины и люди" в моем университете хотела бы не согласиться :). И эта лаборатория содержит некоторые из лучших исследователей CS, точка. Также все люди HCI везде. Я немного шутливый, но CS действительно шире, чем просто алгоритмы и математика.
Тихон Джелвис
-1

Программирование (разработка) - это зарабатывание денег. Наука об открытии новых вещей.

кашка
источник
7
Кто-то забыл рассказать сообществу open source.
webbiedave
2
@webbiedave - ну, может быть, там один или два настоящих альтруиста, но в конце концов open-source тоже о зарабатывании денег. Я осмелюсь сказать, что большинство людей, вовлеченных в проекты с открытым исходным кодом, делают это, чтобы улучшить свои навыки и / или резюме и повысить свой потенциал будущего дохода. Многие проекты с открытым исходным кодом также порождают коммерческие / корпоративные версии для получения дохода от проекта. Так что сообщество open source очень сильно зацикливается, когда дело доходит до зарабатывания денег;)
pap
И то же самое не относится к науке? ;)
webbiedave
@webbiedave - Нет, я не согласен с этим. Хотя деньги могут быть побочным продуктом науки, они не являются (и не должны быть) основной целью. Наука об открытии ради самого себя. Компании занимаются исследованиями и разработками, но дело не в открытии новых вещей, а в монетизации уже открытых вещей.
Пап
Единственная причина, по которой большинство ученых хотят больше денег, заключается в том, что они могут проводить больше исследований. Я думаю, что то же самое имеет значение для открытого исходного кода. Работа с открытым исходным кодом для улучшения вашего резюме звучит для меня как дорога к провалу. Это должно быть о любопытстве, открытии и чесании зуда.
Tjaart