Яка різниця між інформатикою та програмуванням?


32

Я новачок у галузі інформатики та програмування, і мені було цікаво, чи є різниця між інформатикою та програмуванням? і чи маєте ви вибір вибирати лише одного з них в університеті чи обох?


42
Поганий час аналогії.
Майк Веллер

10
Яка різниця між архітектурою та будівництвом?
Одід

6
вони настільки ж далеко, як геологія та копання канав
Стівен А. Лоу

27
Інформатика - це те, що ти платиш за навчання. Програмування - це те, за що вам платять.
jfrankcarr

5
Різниця полягає в тому, що змушує вас використовувати гладкий сорт замість сортування бульбашок.
deadalnix

Відповіді:


68

Інформатика - це вивчення того, що можуть робити комп’ютери; програмування - це практика змушувати комп'ютери робити речі.

Погляньте на курси / навчальні програми, які пропонують університети, які вас цікавлять, щоб дізнатись, чи є курсом CS, курсом програмування, чимось іншим (наприклад, Software Engineering) або навіть комбінацією вищезазначеного. Багато курсів, що рекламуються як "інформатика", пропонують важливий компонент програмування, який може бути таким, що ви можете втілити теоретичні частини курсу на практиці, або, можливо, заради них самих, щоб ви могли навчитися майстерності створення програм.


1
Дуже гарна відповідь, хоча це не відповідає практичній частині питання;)
back2dos

@ back2dos Гаразд, я продовжив відповідь.

Важливо зауважити, що більшість курсів з інформатики теж зовсім не стосуються теоретичних CS, TCS принаймні настільки ж не відрізняється від практичного CS, як CS від програмування.
Бен Брокка

3
Я не думаю, що ви повинні занадто тісно зв'язувати CS (незважаючи на назву) з комп'ютерами: в першу чергу, це вивчення інформації . Просто буває так, що термін "комп'ютер" охоплює більшість фізичних інструментів, які ми використовуємо для роботи з інформацією, тому практично будь-яке вивчення інформації передбачає програмування комп'ютера.
Тихон Єлвіс

Таксономія може підходити під монітор інформатики. Але це не вражає мене як ідеально підходить під CS. Корисно в міждисциплінарному сенсі, але CS частково нерозривно стосується речей, які ми можемо зробити з комп'ютерами, IMO. Я можу зробити ваше визначення поняття "комп'ютер" більш загальним, але не визначенням CS.
Ерік Реппен

36

Застереження: «Інформатика» стала замуленою сферою в сучасний час, оскільки (принаймні, в США) університети не мають ступеня «програмування». Це означає, що люди, зацікавлені в програмуванні, повинні записатися на ступінь інформатики, і як реакція на це програми Computer Computer все більше наголошують на програмуванні.

Однак, комп’ютерна наука є сильно математичною наукою - обчислювальна математика могла бути кращим терміном. Він передбачає вивчення теорії графів, алгоритмічної складності, формальної логіки, автоматів і взагалі будь-якої логічної структури, яка може описати перетворення або відповідь на вхід - алгоритми. Комп'ютерний науковець у класичному розумінні може міркувати про правила, які керують будь-якою обчислювальною системою (включаючи сучасні комп'ютери), не обов'язково знаючи деталі впровадження поточної архітектури. Сильний досвід в галузі інформатики дає вам можливість розробляти (або відкликати) ефективні, масштабовані алгоритми, передбачати логічні скорочення та обґрунтовано міркувати про те, що можна простежити.

Навпаки, програмування - це те, що людина робить, коли використовує мову програмування для перетворення алгоритму в те, що може зробити машина. (Це повинно зробити очевидним інтимний зв’язок з інформатикою, і звідки походить велика плутанина.) Програміст (щодо середовища та мови) повинен мати можливість приймати практично будь-який набір алгоритмів і перетворювати їх у форму, як людську - і машиночитабельний, написавши код. Сильний фон в програмуванні (як це забезпечить більшість ступенів CS) дає змогу писати кращий код - де «кращий» код легше зрозуміти іншим та більш успішно виражати алгоритм, який ви реалізуєте.

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

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


4
Так, це останнє речення - це не так? Він сполучає образи пом'ятих професорів з волохатим волоссям і крейдяними пальцями, що розмахують кулаками пергаменту, і приводить до відома цитати на кшталт "інформатика не більше про комп'ютери, а про астрономію - про телескопи". Якщо наука врешті-решт не перетворить її на машину, то який сенс? Який астроном у своєму правильному розумі ніколи не дивиться через телескоп?
Роберт Харві

Я не думаю, що мене ніколи не просили "перетворити алгоритм на те, що машина може зробити" за останні 30 років. Про що ти думаєш - це не програміст, а компілятор.
gnasher729

2
@ gnasher729 Добре, скажімо, у мене є алгоритм "Для кожного слова в списку, якщо воно починається з A, перенесіть його на початок". Який компілятор ви б рекомендували?
shanef22

18

Інформатика розглядає теоретичні основи інформації, обчислення та практичні прийоми їх реалізації та застосування. http://en.wikipedia.org/wiki/Computer_science

~

Інформатика - це не більше комп’ютерів, а астрономія - телескопи. Едсгер Дійкстра

Програмування - це майстерність створення комп’ютерної програми.


11

З моєї точки зору, інформатика повинна бути такою важкою наукою, як фізика.

Він включає вивчення компіляторів та генераторів компіляторів, концепцій архітектури апаратних засобів, різних форм систем числення, алгоритмів та алгоритмічної ефективності / продуктивності та теорії, що стоїть за арифметичними операціями на процесорі. Коли я робив КС в університеті, ми витратили багато часу на спілкування з асемблером, дізнавшись про різницю між складанням, зв'язуванням та інтерпретацією та ін.

Багато цього було зроблено програмуванням - тобто актом написання коду, який потім був складений або виконаний через інтерпретатора, з наміром створити результати для вирішення проблеми. Тобто програмування - це акт вирішення завдань, який можна описати знаннями з інформатики. Це своєрідний розкол чистої математики / прикладної математики.

Вам не потрібен ступінь з інформатики, щоб бути програмістом, але програміст з фоном CS, швидше за все, буде глибше розуміти поведінку комп'ютерних програм.


1
Я не думаю, що студенти CS не кращі, ніж студенти інших курсів програмування.
Тярт

5
Я не сказав краще , я сказав, що, мабуть, глибше зрозуміти.
mcfinnigan

@mcfinnigan Я б сказав, більш помилково. Студенти CS, які ґрунтуються на теорії, як правило, мають менше розуміння, оскільки вони насправді не мають досвіду знати, чим можуть займатися комп'ютери або як дістатися туди на різних мовах.
Ізката

3
знову ти мене неправильно розумієш. Я кажу, що програміст, який знайшов час, щоб придбати деяку фактичну теорію CS , швидше знає, чому набір кращий за список у певних ситуаціях, або чому плаваюча точка є хитрою.
mcfinnigan

2
@TikhonJelvis: в інженерії використовується математика, але це в двох кроках. CS - галузь математики.
кевін клайн

3

Я б переформулював ваше запитання як "Яка різниця між інформатикою та програмною інженерією?" Адже обидва передбачають програмування.

Інформатика - це теоретичне дослідження того, що таке обчислення, а що таке, а що неможливо. Він розглядає такі речі, як теорема Годельса і проблема зупинки.

Інженерія програмного забезпечення полягає в тому, як писати програми, які роблять те, що їм було призначено, і вони є керованими.


Ні. Навіщо переробити його питання? Він запитав, що запитував. Інженерія програмного забезпечення відрізняється від програмування і ТАКОЖ суперечлива, оскільки означає різні речі в різних країнах (наприклад, США та Канада)
Douglas Held

2

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

Інформатика ... - це науково-практичний підхід до обчислень та його застосування. Комп'ютерний вчений спеціалізується на теорії обчислень та проектуванні обчислювальних систем.

Його підполі можна розділити на різноманітні теоретичні та практичні дисципліни. Деякі поля, такі як теорія складності обчислювальної техніки (яка досліджує основні властивості обчислювальної задачі), є надзвичайно абстрактними, тоді як поля, такі як комп’ютерна графіка, підкреслюють візуальні програми у реальному світі. Інші сфери зосереджуються на проблемах у здійсненні обчислень. Наприклад, теорія мови програмування розглядає різні підходи до опису обчислень, в той час як саме вивчення комп'ютерного програмування досліджує різні аспекти використання мови програмування та складних систем. Взаємодія людини і комп'ютера розглядає проблеми в тому, щоб зробити комп’ютери та обчислення корисними, зручними та універсально доступними для людини ...


12
Я чесно вважаю, що інформатика - це більше, ніж програмування.
Ubermensch

2
@Ubermensch: Я чесно вважаю, що програмування - це більше, ніж інформатика.
Майкл Боргвардт

1
@MichaelBorgwardt Насправді обидва наші погляди вірні. Але інформатика все ще набагато більша, ніж програмування (Ви можете посперечатися і навпаки). Відома цитата Ніельса Бор "Є два види істини, мала правда і велика істина. Ви можете розпізнати малу правду, оскільки її протилежність - неправда. Протилежність великій істині - інша істина".
Ubermensch

@Ubermensch Ваше переконання - це факт. Інформатика НЕ ​​просто теорія програмування. Інформатика була навколо до того, як були комп'ютери.
Кейсі Паттон

1

Якщо програмування - столярне виробництво, то інформатика - це архітектура / дизайн.

Редагувати

Більше інформації: в столярній справі вас цікавлять такі речі, як, в якому порядку будувати речі (каркас, потім підлога, потім внутрішні стіни, потім гіпсокартон тощо). Як побудувати його так, що на його побудову потрібно менше часу, але згодом його можна буде змінити.

Що стосується архітектури (її частина, як і CS, так чи інакше), ви переймаєтесь такими речами, якими є можливості матеріалів, наскільки велика балка вам потрібна для підтримки цього прольоту стіни / даху?

Аналогічно CS стосується теоретичних можливостей комп'ютерів, де програмування - про практичне застосування цих знань.


3
Погана аналогія. Якщо програмування столярне, то дизайн програмного забезпечення - це архітектура / дизайн. Інформатика в цьому відношенні більше схожа на дендрологію чи, можливо, біологію взагалі.
back2dos

Гаразд, можливо, мені було незрозуміло, тому дозвольте мені пояснити, чому я думаю, що аналогія у вас не працює. Переймаючись можливостями матеріалу - це матеріалознавство, стійкість структури - статика. Жоден із них насправді не є дизайном, вони лише стримують його. Дизайн (програмне забезпечення або будівлі чи будь-що інше) полягає у прийнятті всіх вимог та обмежень (технічних, фінансових, психологічних, ...) та архітектурі рішення, що відповідає цим.
back2dos

1

Інформатика - програмування, а фізика - до машинобудування.

Інформатика є теоретичною, вона вимагає науково-математичного підходу до інформації та її обчислення.

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

Вони різні, але суміжні поля. Обидва отримали користь одне від одного.


0

Ступінь з інформатики набагато ширша за обсягом і охоплює теорію обчислювальної техніки. Ступінь в області комп'ютерного програмування , з іншого боку, орієнтована на розвиток кодування або навичок програмування студентів шляхом навчання їх на різних мовах програмування. Якщо ви розгублені, ви можете переглянути деталі обох цих програм у Каліфорнійському коледжі Сан-Дієго. Це може надати вам ясність щодо обсягу цих ступенів!


0

Інформатика : Це вивчення вирішення проблем за допомогою комп'ютерів / обчислювальних методів.

Комп'ютерне програмування: саме ця частина процесу вирішення проблем становить сферу інформатики. Комп'ютерне програмування - лише невеликий підмножина інформатики.


-1

Програмування стосується людей. Люди читають, пишуть і підтримують код. Інформатика - це математика - вони реалізують та описують алгоритми.


3
@ SK-логіка та DeadMG. Я видалив усі ці коментарі. Якщо ви хочете мати дискусію (чи справді аргумент), будь ласка, перенесіть її деінде.
ChrisF

1
Це трохи вузько. Принаймні, лабораторія "Алгоритми, машини та люди" в моєму університеті хотіла б не погодитися :). І ця лабораторія містить деяких кращих дослідників CS, періоду. Також усіх людей, що займаються ІСІ. Я трохи пильний, але CS насправді більш широкий, ніж просто алгоритми та математика.
Тіхон Єлвіс

-1

Програмування (розробка) - це заробити гроші. Наука полягає у відкритті нових речей.


7
Хтось забув розповісти спільноті з відкритим кодом.
webbiedave

2
@webbiedave - ну, там може бути один-два справжні альтруїсти, але врешті-решт, відкритий код також збирається заробляти гроші. Смію сказати, що більшість людей, які беруть участь у проектах з відкритим кодом, роблять це для підвищення своєї кваліфікації та / або резюме та підвищення їхнього потенціалу в майбутньому. Багато проектів з відкритим кодом також породжують комерційні / корпоративні версії для отримання доходу від проекту. Тож спільнота з відкритим кодом дуже сильно стоїть у циклі, коли мова заходить про заробітки;)
пап

І те ж не стосується науки? ;)
webbiedave

@webbiedave - Ні, я не згоден. Хоча гроші можуть бути двопродуктом науки, вони не є (і не повинні бути) основною метою. Наука - це про відкриття заради себе. Компанії займаються НДДКР, але справа не в тому, щоб відкривати нові речі, а про монетизацію вже відкритих речей.
пап

Єдина причина, чому більшість вчених хочуть більше грошей - це те, що вони можуть зробити більше досліджень. Я думаю, що те саме вважається і з відкритим кодом. Робота з відкритим кодом для покращення вашого резюме звучить для мене як дорога до невдачі. Йдеться про цікавість, виявлення та подряпини сверблячки.
Тяртарт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.