Jaka jest różnica między informatyką a programowaniem?

32

Jestem nowy w informatyce i programowaniu i zastanawiałem się, czy istnieje różnica między informatyką a programowaniem? i czy możesz studiować tylko jeden z nich na uniwersytecie, czy oba?

xXSarahXx
źródło
42
Zły czas analogii.
Mike Weller
10
Jaka jest różnica między architekturą a budową?
Oded
6
są tak daleko od siebie jak geologia i kopanie rowów
Steven A. Lowe
27
Nauka jest tym, za co płacisz, aby się uczyć. Programowanie jest tym, za co płacisz.
jfrankcarr
5
Różnica polega na tym, że używasz smoothsort zamiast sortowania bąbelkowego.
deadalnix

Odpowiedzi:

68

Informatyka to nauka o tym, co potrafią komputery; programowanie to praktyka polegająca na zmuszaniu komputerów do robienia różnych rzeczy.

Spójrz na kursy / sylaby oferowane przez uniwersytety, którymi jesteś zainteresowany, aby dowiedzieć się, czy jest to kurs CS, kurs programowania, coś innego (na przykład Inżynieria oprogramowania), a nawet kombinacja powyższych. Wiele kursów reklamowanych jako „informatyka” oferuje znaczący komponent programistyczny, który może być w stanie wprowadzić w życie części teoretyczne kursu lub może być dla nich samych, abyś mógł nauczyć się umiejętności tworzenia programów.


źródło
1
Bardzo dobra odpowiedź, chociaż nie odpowiada na praktyczną część pytania;)
back2dos
@ back2dos OK, rozszerzyłem odpowiedź.
Należy zauważyć, że większość kursów z zakresu informatyki wcale nie dotyczy teoretycznych CS, TCS jest co najmniej tak samo oddzielny od praktycznego CS, jak CS od programowania.
Ben Brocka
3
Nie sądzę, że powinieneś zbyt blisko wiązać CS (pomimo nazwy) z komputerami: przede wszystkim jest to badanie informacji . Zdarza się, że termin „komputer” obejmuje większość różnych fizycznych narzędzi, których używamy do pracy z informacjami, więc prawie każde badanie informacji będzie wymagało programowania komputera.
Tikhon Jelvis
Taksonomia może mieścić się w kręgu informatyki. Ale nie wydaje mi się, że idealnie pasuje do CS. Przydatne w sensie interdyscyplinarnym, ale CS jest nierozerwalnie związane z rzeczami, które możemy zrobić z komputerami, IMO. Być może twoja definicja dowolnego „komputera” jest bardziej ogólna, ale nie definicja CS.
Erik Reppen
36

Zastrzeżenie: „Informatyka” we współczesnych czasach stała się błotnistą dziedziną, ponieważ (przynajmniej w Stanach Zjednoczonych) uniwersytety nie mają dyplomów z „programowania”. Oznacza to, że osoby zainteresowane programowaniem muszą zapisać się na studia informatyczne, a w odpowiedzi programy informatyczne coraz bardziej kładą nacisk na programowanie.

To powiedziawszy, sama informatyka jest nauką silnie matematyczną - matematyka obliczeniowa mogłaby być lepszym terminem. Obejmuje badanie teorii grafów, złożoności algorytmicznej, logiki formalnej, automatów i ogólnie dowolnej struktury logicznej, która może opisać transformację lub odpowiedź na algorytmy wejściowe. Informatyk w klasycznym sensie mógłby rozumować reguły rządzące dowolnym systemem komputerowym (w tym nowoczesnymi komputerami), niekoniecznie znając szczegóły implementacji w obecnej architekturze. Silne doświadczenie w informatyce daje możliwość opracowania (lub przywołania) wydajnych, skalowalnych algorytmów, przewidywania logicznych redukcji i rozsądnego uzasadnienia tego, co jest możliwe.

Natomiast programowanie jest tym, co robi osoba, która używa języka programowania do przekształcania algorytmu w coś, co może zrobić maszyna. (To powinno uwidocznić intymne połączenie z informatyką i skąd bierze się większość zamieszania.) Programista (w odniesieniu do środowiska i języka) powinien być w stanie wziąć praktycznie dowolny zestaw algorytmów i przekształcić je w formę zarówno ludzką - i do odczytu maszynowego przez napisanie kodu. Silne doświadczenie w programowaniu (jak zapewni większość stopni CS) umożliwia pisanie lepszego kodu - tam, gdzie „lepszy” kod jest łatwiejszy do zrozumienia dla innych i bardziej skuteczny w wyrażaniu implementowanego algorytmu.

Oczywiście istnieje duża ilość przesłuchów, a wysoki poziom doświadczenia w jednym będzie silnie odpowiadał rozwojowi w drugim - jak wspomniano, CS-dur jest prawie zawsze kompetentnym programistą, a doświadczony programista podniósł wiele zasad CS. Pomyśl o fizyce i inżynierii.

Dobrym sposobem na zapamiętanie różnicy jest to, że jeśli komputer wymaga sprawdzenia, czy działa, programuje - jeśli możesz to zrobić ołówkiem i papierem, to jest to informatyka.

shanef22
źródło
4
Tak, to ostatnie zdanie jest otarciem, prawda? Przywołuje obrazy pogniecionych profesorów z kędzierzawymi włosami i kredowymi palcami machającymi wokół garści pergaminu i przypomina takie cytaty, jak: „informatyka to nie tylko komputery, ale astronomia to teleskopy”. Jeśli nauka ostatecznie nie przekształci się w maszynę, to po co? Który astronom przy zdrowych zmysłach nigdy nie patrzy przez teleskop?
Robert Harvey
Nie sądzę, żeby kiedykolwiek byłem proszony o „przekształcenie algorytmu w coś, co może zrobić maszyna” w ciągu ostatnich 30 lat. To, o czym myślisz, nie jest programistą, ale kompilatorem.
gnasher729
2
@ gnasher729 Ok, powiedzmy, że mam algorytm „Jeśli każde słowo na liście zaczyna się od litery A, przenieś je na początek”. Jaki kompilator poleciłbyś?
shanef22
18

Informatyka zajmuje się teoretycznymi podstawami informacji, obliczeń oraz praktycznymi technikami ich implementacji i zastosowania. http://en.wikipedia.org/wiki/Computer_science

~

Informatyka to nie tylko komputery, ale astronomia to teleskopy. Edsger Dijkstra

Programowanie polega na tworzeniu programu komputerowego.

Gary Willoughby
źródło
11

Z mojego punktu widzenia informatyka powinna być twardą nauką, taką jak fizyka.

Obejmuje badanie kompilatorów i generatorów kompilatorów, koncepcji architektury sprzętowej, różnych form systemów liczbowych, algorytmów i wydajności / wydajności algorytmu oraz teorii operacji arytmetycznych na procesorze. Kiedy tworzyłem CS na uniwersytecie, spędziliśmy dużo czasu na zabawie z asemblerem, poznawaniu różnicy między kompilacją, łączeniem i tłumaczeniem, itp.

Wiele z tego zostało zrobionych przez programowanie - to znaczy pisanie kodu, który został następnie skompilowany lub uruchomiony za pośrednictwem interpretera, z zamiarem generowania wyników w celu rozwiązania problemu. Oznacza to, że programowanie polega na rozwiązywaniu problemów, które można opisać za pomocą wiedzy z informatyki. To rodzaj podziału na czystą matematykę / matematykę stosowaną.

Nie musisz mieć stopnia informatyki, aby zostać programistą, ale programista z doświadczeniem CS prawdopodobnie lepiej zrozumie zachowanie programów komputerowych.

Mcfinnigan
źródło
1
Nie sądzę, aby studenci CS byli lepsi od studentów innych kursów programistycznych.
Tjaart
5
Nie powiedziałem lepiej , powiedziałem, że prawdopodobnie będę miał głębsze zrozumienie.
mcfinnigan
@mcfinnigan powiedziałbym, bardziej wprowadzony w błąd. CS studenci, którzy sami ziemia teoretycznie wydają się mieć mniej zrozumienia, ponieważ w rzeczywistości nie mają doświadczenia, aby wiedzieć, co komputery mogą zrobić , ani jak się tam dostać w różnych językach.
Izkata
3
znowu mnie źle zrozumiałeś. Mówię, że programista, który poświęcił czas na przyswojenie sobie teorii CS, jest bardziej prawdopodobne, aby wiedzieć, dlaczego Zestaw jest lepszy niż Lista w pewnych sytuacjach lub dlaczego zmiennoprzecinkowe jest trudne.
mcfinnigan
2
@TikhonJelvis: inżynieria wykorzystuje matematykę, ale dzieli ją tylko dwa kroki. CS to gałąź matematyki.
kevin cline
3

Chciałbym przeredagować twoje pytanie na „Jaka jest różnica między informatyką a inżynierią oprogramowania?” W końcu oba wymagają programowania.

Informatyka to teoretyczne badanie tego, czym jest obliczenie, a co jest i nie jest możliwe. Patrzy na takie rzeczy, jak Twierdzenie Godelsa i problem Haltinga.

Inżynieria oprogramowania polega na pisaniu programów, które robią to, do czego zostały zaprojektowane i są łatwe w utrzymaniu.

Jaydee
źródło
Nie. Po co przeredagować jego pytanie? Zapytał o co pytał. Inżynieria oprogramowania różni się od programowania i jest również kontrowersyjna, ponieważ oznacza różne rzeczy w różnych krajach (np. W USA i Kanadzie)
Douglas Held,
2

Informatyka to teoria programowania. Programowanie to wdrożenie.

Informatyka ... to naukowe i praktyczne podejście do obliczeń i ich zastosowań. Informatyk specjalizuje się w teorii obliczeń i projektowaniu systemów obliczeniowych.

Jego pola pomocnicze można podzielić na różne dyscypliny teoretyczne i praktyczne. Niektóre pola, takie jak teoria złożoności obliczeniowej (która bada podstawowe właściwości problemów obliczeniowych), są wysoce abstrakcyjne, podczas gdy pola takie jak grafika komputerowa podkreślają rzeczywiste zastosowania wizualne. Jeszcze inne dziedziny koncentrują się na wyzwaniach związanych z implementacją obliczeń. Na przykład teoria języka programowania uwzględnia różne podejścia do opisu obliczeń, podczas gdy samo badanie programowania komputerowego bada różne aspekty użycia języka programowania i złożonych systemów. Interakcja człowiek-komputer uwzględnia wyzwania związane z uczynieniem komputerów i obliczeń użytecznymi, użytecznymi i powszechnie dostępnymi dla ludzi ...

Tom Squires
źródło
12
Szczerze wierzę, że informatyka to coś więcej niż programowanie.
Ubermensch
2
@Ubermensch: Szczerze wierzę, że programowanie to coś więcej niż informatyka.
Michael Borgwardt
1
@MichaelBorgwardt Właściwie oba nasze poglądy są słuszne. Ale informatyka jest wciąż znacznie większa niż programowanie (można się też kłócić). Słynny cytat Niehlsa Bohra „Istnieją dwa rodzaje prawdy: mała prawda i wielka prawda. Możesz rozpoznać małą prawdę, ponieważ jej przeciwieństwem jest kłamstwo. Przeciwieństwem wielkiej prawdy jest inna prawda”.
Ubermensch
@Ubermensch Twoje przekonanie jest faktem. Informatyka to NIE tylko teoria programowania. Informatyka istniała wcześniej niż komputery.
Casey Patton
1

Jeśli programowanie to stolarstwo, wówczas informatyka to architektura / projektowanie.

Edytować

Więcej informacji: w stolarstwie interesują Cię takie rzeczy, jak to, w jakiej kolejności budować rzeczy (rama, następnie podłoże, następnie ściany wewnętrzne, następnie płyta gipsowo-kartonowa itp.). Jak to zbudować, aby zbudowanie trwało krócej, ale można je później zmodyfikować.

W przypadku architektury (i tak jej części, jak CS), martwisz się o takie możliwości, jakie są możliwości materiałów, jak dużą wiązkę potrzebujesz, aby utrzymać tę rozpiętość ściany / dachu?

Podobnie CS dotyczy teoretycznych możliwości komputerów, a programowanie dotyczy praktycznego zastosowania tej wiedzy.

Scott Whitlock
źródło
3
Zła analogia. Jeśli programowanie to stolarstwo, to projektowanie oprogramowania to architektura / projektowanie. Pod tym względem informatyka przypomina bardziej dendrologię lub ogólnie biologię.
back2dos
Ok, może byłem niejasny, więc pozwól mi wyjaśnić, dlaczego myślę, że twoja analogia nie działa. Zainteresowanie możliwościami materiału jest materiałoznawstwem, a stabilność struktury to statyka. Żaden z nich nie jest tym, o co chodzi w projekcie, tylko go ograniczają. Projektowanie (oprogramowanie, budynki lub cokolwiek) polega na przyjmowaniu wszystkich wymagań i ograniczeń (technicznych, finansowych, psychologicznych ...) i tworzeniu rozwiązania spełniającego te wymagania.
back2dos
1

Informatyka polega na programowaniu, podobnie jak fizyka na inżynierii mechanicznej.

Informatyka jest teoretyczna, wymaga naukowego i matematycznego podejścia do informacji i jej obliczeń.

Programowanie komputerowe jest praktyczne, jest to proces projektowania, pisania, testowania, debugowania i utrzymywania kodu źródłowego programów komputerowych.

Są to różne, ale powiązane pola. Obie skorzystały na sobie nawzajem.

bbb
źródło
0

Stopień informatyki ma znacznie szerszy zakres i obejmuje teorię komputerową. Z drugiej strony dyplom z programowania komputerowego koncentruje się na rozwijaniu umiejętności kodowania lub programowania uczniów poprzez szkolenie ich w różnych językach programowania. Jeśli jesteś zdezorientowany, możesz przejrzeć szczegóły obu tych programów w California College San Diego. To może dać ci jasność co do zakresu tych stopni!

użytkownik45390
źródło
0

Informatyka : jest to nauka rozwiązywania problemów za pomocą komputerów / metod obliczeniowych.

Programowanie komputerowe: jest częścią tego procesu rozwiązywania problemów, który składa się na dziedzinę informatyki. Programowanie komputerowe to tylko niewielka część informatyki.

ramneet
źródło
-1

Programowanie dotyczy ludzi. Ludzie czytają, piszą i utrzymują kod. Informatyka dotyczy matematyki - implementują i opisują algorytmy.

DeadMG
źródło
3
@ SK-logic i DeadMG. Usunąłem wszystkie te komentarze. Jeśli chcesz przeprowadzić dyskusję (lub argumentację), zabierz ją gdzie indziej.
ChrisF
1
To trochę wąskie. Przynajmniej laboratorium „Algorytmy, maszyny i ludzie” na moim uniwersytecie chciałoby się nie zgodzić :). I to laboratorium zawiera jednych z najlepszych badaczy CS, kropka. Również wszyscy ludzie HCI wszędzie. Jestem trochę żartobliwy, ale CS jest naprawdę szerszy niż tylko algorytmy i matematyka.
Tikhon Jelvis
-1

Programowanie (rozwój) polega na zarabianiu pieniędzy. Nauka polega na odkrywaniu nowych rzeczy.

papka
źródło
7
Ktoś zapomniał powiedzieć społeczności open source.
webbiedave
2
@webbiedave - cóż, może istnieć jeden lub dwóch prawdziwych altruistów, ale ostatecznie open-source dotyczy także zarabiania pieniędzy. Śmiem twierdzić, że większość osób zaangażowanych w projekty open source robi to, aby podnieść swoje umiejętności i / lub CV: oraz zwiększyć swój przyszły potencjał dochodowy. Wiele projektów typu open source odradza również wersje komercyjne / korporacyjne, aby generować przychody z projektu. Społeczność open source bardzo się kręci, jeśli chodzi o zarabianie pieniędzy;)
pap
Czy to samo nie dotyczy nauki? ;)
webbiedave
@webbiedave - Nie, nie zgadzam się, że tak. Chociaż pieniądze mogą być produktem ubocznym nauki, nie są (i nie powinny) być głównym celem. Nauka polega na odkrywaniu dla samego siebie. Firmy prowadzą prace badawczo-rozwojowe, ale nie chodzi o odkrywanie nowych rzeczy, chodzi o zarabianie na rzeczach już odkrytych.
pap.
Jedynym powodem, dla którego większość naukowców chce więcej pieniędzy, jest to, że mogą przeprowadzić więcej badań. Myślę, że to samo liczy się dla open source. Robienie open source w celu ulepszenia twojego CV brzmi dla mnie jak droga do porażki. Powinna dotyczyć ciekawości, odkrywania i drapania.
Tjaart