К какой дисциплине относится информатика? [закрыто]

15

Информатика, прикладная математика, инженерия, искусство, философия? "Другой"?

В качестве справки приведу запись в блоге Стивена Уортика для Scientific American под названием « Я не настоящий ученый, и это нормально ». В статье рассматриваются некоторые хорошие темы для этого вопроса, но она остается открытой, а не отвечает.

Если вы можете думать о дисциплине, как информатика вписывается в ее определение? Должна ли дисциплина по информатике основываться на том, что делают программисты или на чем работают ученые ? Какие ответы вы получаете от людей, которые, кажется, глубоко обдумали это? Какие причины они дают?

Макнейл
источник
1
Всегда, когда я встречал академика, который говорит, что информатика - это наука, есть совершенно другая причина, чтобы объяснить почему.
Макнейл
5
Информатика - политология с немного меньшей политикой.
Работа
1
информатика - отрасль прикладной математики ... «наука» подразумевает использование научного метода, которого нет в информатике; но это было названо, когда каждая новая дисциплина хотела поставить слово наука в конце своего имени.
красная грязь
2
@ красная грязь Это не правда. В CompSci есть научный метод; у вас есть эксперименты, формальные доказательства и т. д. Большинство хардкорных компьютерных специалистов разбираются в математике и формальной логике (см. лямбда-исчисление, проблема остановки и т. д. и т. д.) и публикуют статьи в рецензируемых журналах. Не путайте их с людьми, которые изобретают «методологии», которые не являются учеными по определению этого слова.
Андрес Ф.
1
@ red-dirt Подобно AndresF, с более практической стороны применения, основной научный метод (гипотезы, проверки, проверки, повторения) вступает в игру во время отладки - который обычно занимает большую часть времени, затрачиваемого на программирование.
Изката

Ответы:

30

Есть две разные ИТ-дисциплины:

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

  • Программная инженерия - это дисциплина проектирования и внедрения программного обеспечения с соблюдением надлежащих инженерных принципов.

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

Итак, чтобы ответить на ваш вопрос:

Информатика, прикладная математика, инженерия, искусство, философия? "Другой"?

Информатика - это наука ... когда все сделано правильно. Тем не менее, как и в других дисциплинах, CS имеет сходство с математикой, инженерией, физикой, общественными науками, философией и так далее.

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

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

Стивен С
источник
1
Есть также аппаратная инженерия - кто-то должен спроектировать физические компьютеры для программного обеспечения, чтобы работать на нем - и это действительно (основная) дисциплина электронной инженерии.
Donal Fellows
+1 за аналогию мастера, я понял, что это самая точная концепция, объясняющая, что делает CS из Software Engineer. Вот ссылка на бесплатную книгу от О'Рейли об этом. apprenticeship-patterns.labs.oreilly.com/ch01.html
romeroqj
«И, к сожалению, ни академическая компьютерная наука, ни профессия разработчика программного обеспечения не являются такими строгими, как старые научные и инженерные дисциплины»: я не согласен с этим утверждением. Среди прочего, если бы компьютерные науки не были строгими, у нас не было бы достижений в языках программирования, компиляторах (и всей теории формальных языков, стоящих за ними), криптографии и так далее. Все эти приложения имеют прочную основу, которая была разработана в основном в научных кругах.
Джорджио
@ Джорджио - Жаль, что вы не прочитали то, что я написал сразу после предложения, которое вы цитировали ...
Стивен С.
@Stephen C: я читал это, и все же я не уверен, что информатика менее строгая, чем другие науки (но я могу ошибаться, конечно). Или, может быть, сначала нужно определить, что считать «научным» и «строгим», а что нет, но это может потребовать длительного обсуждения, я полагаю.
Джорджио
12

Программисты редко "занимаются информатикой". В основном они используют результаты «программной инженерии», которая, очевидно, является инженерной дисциплиной.

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

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

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

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

П Швед
источник
но в других университетах компьютерные науки - это отдельный факультет математического факультета, факультет инженерного факультета, научный факультет или ... ничего из вышеперечисленного. Это административные / организационные вопросы, которые имеют мало общего с фактическим предметным материалом.
Стивен С
@ Стефен, поэтому я указал университет, а не сказал «в большинстве университетов» или «во многих университетах» :-) Это всего лишь небольшой пример, а не суть ответа.
П Швед
1
Конечно, это «маленький пример», но я хочу сказать, что это не репрезентативный пример, и он даже не имеет особого отношения к вашему аргументу. Чтобы проиллюстрировать это, университет, в котором я работаю, находится в процессе реструктуризации факультетов ... не из-за каких-либо глубоких размышлений о том, что к чему ... но для того, чтобы сократить административные расходы . Несколько лет назад школы CS и Elec Eng были объединены по одной и той же причине .
Стивен С
Как я уже говорил в своем первоначальном ответе, информатика является дисциплиной прикладной математики, которая занимается разработкой и применением вычислительных автоматов. Программирование не информатика. Программное обеспечение является средством, с помощью которого можно реализовать вычислительные автоматы без извлечения паяльника (любая программа может быть реализована с использованием последовательной и комбинаторной логики при наличии достаточного пространства). Архитектура фон Неймана отличалась от предшествующих ей архитектур тем, что это универсальный автомат, который служит основой для создания «мягких» автоматов специального назначения.
bit-twiddler
1
@ bit-twiddler - Ваше определение слишком узкое. Это исключает много академических областей, которые традиционно классифицируются как «информатика».
Стивен С
5

Информатика - это термин, который в наши дни охватывает много-много вещей:

  • Мастера работают для других, основываясь на своем опыте работы со своими инструментами (и имея учеников и т. Д.).
  • Инструмент кузнецы изобретают и создают новые инструменты для мастеров
  • Исследователи разрабатывают новые сплавы и другие материалы, такие как пластик, для кузнецов.
  • Ученые-теоретики выясняют, как все работает, чтобы производители сплавов знали, как работают их инструменты.

Обратите внимание, что все вышеперечисленное имеет разные названия, а не просто «компьютерные ученые». Разница лишь в том, что компьютерные науки слишком новы, чтобы называть их именами.


источник
Точка 2 больше похожа на многоножку инструментального мастера , но этот ответ
точен
1

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

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

CMR
источник
1
MIT не согласен с вами eecs.mit.edu
Арманд
@Alison, пожалуйста, исправьте также запись в вики ( en.wikipedia.org/wiki/Computer_science ).
CMR
0

Информатика - прикладная и экспериментальная математика.

philosodad
источник
0

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

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

бит-бездельник
источник
3
Я не думаю, что многие академические компьютерные ученые примут такое узкое определение CS.
Стивен С
0

В большинстве университетов, которые я проверил, дисциплина, наиболее точно называемая «компьютерная наука», - это прикладная наука, похожая на инженерные дисциплины; если вы занимаетесь этим, вы получаете «BS» или «MS». Степень CS Texas Tech была предложена Инженерным колледжем. Дисциплина, как преподают, в основном теоретическая; вы изучаете концепцию машин Тьюринга, DA / NDA и другие фундаментальные концепции, которые «повседневному» программисту не нужно постоянно греметь в своем черепе. Вы также получаете огромное количество высшей математики; степень Texas Tech CS, и я готов поспорить, что многие другие, в значительной степени, подадут вам младшего математика, чтобы пойти с ним. К этому большинство университетских следов степени добавляют здоровенную черту практического применения низкого уровня; Вы изучаете язык ассемблера, язык третьего поколения,

Тем не менее, большинство людей, которые пишут код для жизни, не являются «учеными-компьютерщиками»; они, строго говоря, «разработчики программного обеспечения» или (если добавить в анализ / проектирование) «инженеры программного обеспечения»; эта работа намного меньше аппаратного уровня (хотя вы должны знать основы этого), гораздо больше системного анализа, проектирования и простого кодирования. Многие университеты имеют разные пути только для этого; в Техасском технологическом институте это называлось «Управление информационными системами», и это была деловая степень (BBA / MBA). Этот трек был легче при высшей математике (то, что вы должны были знать об алгебре и дифференциально-интегральном вычислении, было сжато в два семестра «бизнес-математики» и не включал векторный / тензорный кальци, линейную алгебру и т. Д.), Гораздо тяжелее на финансовая математика (семестр по каждой статистике и финансам, с двумя по бухгалтерии и экономике). Легче в операционных системах, тяжелее в технологиях «стека», таких как базы данных, веб-серверы, сети и общее администрирование систем. Легче для языков низкого уровня, схемотехники и искусственного интеллекта, больше для языков 3-го и 4-го поколения, системного анализа и управления проектами. Я получил эту степень в Texas Tech, и к тому времени, как я ушел, у меня был, по крайней мере, семестр каждого из Java, VB, C # и веб-языков (HTML / CSS / PHP), плюс год OOA & D и различные другие курсы в управлении ИТ-проектами.

Что лучше в реальном мире? Я получил MIS BBA, мой брат получил CS BS, и мы оба работаем примерно на одном уровне зарплаты (с учетом стоимости жизни), как старшие инженеры-программисты. Ему пришлось выучить много требуемого OOA & D на работе, а также довольно быстро освоить C # / Java из своих базовых знаний C ++. Со своей стороны, я бы хотел, чтобы у меня было два семестра изучения концептуальных алгоритмов, которые он получил, когда я застрял на курсах по управлению бизнесом (да, MIS - это степень «Менеджмент», но я обнаружил, что 99% моих знаний о том, как управлять, а не управлять другими людьми, научился на примере).

Keiths
источник