Do jakiej dyscypliny należy informatyka? [Zamknięte]

15

Czy informatyka, matematyka stosowana, inżynieria, sztuka, filozofia? "Inny"?

Aby zapewnić tło, oto blog Stevena Wartika dla Scientific American zatytułowany „ Nie jestem prawdziwym naukowcem i to jest w porządku ”. Artykuł obejmuje kilka dobrych tematów na to pytanie, ale pozostawia więcej otwartości niż odpowiedzi.

Jeśli potrafisz wymyślić dyscyplinę, w jaki sposób informatyka pasuje do jej definicji? Czy dyscyplina informatyki powinna opierać się na tym, co robią programiści , czy co robią naukowcy ? Jakie odpowiedzi otrzymujesz od osób, które zdawały się głęboko o tym myśleć? Jakie podają powody?

Macneil
źródło
1
Kiedykolwiek spotkałem akademika, który twierdzi, że informatyka jest nauką, ma zupełnie inny powód, aby wyjaśnić, dlaczego.
Macneil
5
Informatyka to nauki polityczne z nieco mniejszą polityką.
Job
1
informatyka jest dziedziną matematyki stosowanej ... „nauka” oznacza zastosowanie metody naukowej, która nie istnieje w informatyce; ale została nazwana, gdy każda nowa dyscyplina chciała umieścić słowo nauka na końcu nazwy.
czerwono-brud
2
@ red-dirt To nieprawda. W CompSci istnieje metoda naukowa; masz eksperymenty, formalne dowody itp. Większość zapalonych informatyków interesuje się matematyką i logiką formalną (patrz: rachunek lambda, problem zatrzymania itp.) i publikuje artykuły w recenzowanych czasopismach. Nie myl ich z ludźmi, którzy wymyślają „metodologie”, które z definicji nie są naukowcami.
Andres F.,
1
@ red-dirt Podobnie jak w AndresF, po bardziej praktycznej stronie aplikacji, podstawowa metoda naukowa (hipoteza, testowanie, sprawdzanie, powtarzanie) wchodzi w grę podczas debugowania - co zwykle zajmuje większość czasu spędzonego na programowaniu.
Izkata

Odpowiedzi:

30

Istnieją dwie odrębne dyscypliny informatyczne:

  • Informatyka - to dyscyplina komputerowa i obliczeniowa z wykorzystaniem metody naukowej.

  • Inżynieria oprogramowania - jest dyscypliną projektowania i wdrażania oprogramowania zgodnie z odpowiednimi zasadami inżynierii.

Obie pokrywają się nieco, ale tak naprawdę różnica polega na pożądanych wynikach nauki w porównaniu z inżynierią. Pożądanym rezultatem dyscypliny naukowej jest wiedza. Pożądanym rezultatem dyscypliny inżynierskiej są rzeczy, które działają.

Aby odpowiedzieć na twoje pytanie:

Czy informatyka, matematyka stosowana, inżynieria, sztuka, filozofia? "Inny"?

Informatyka jest nauką ... jeśli jest właściwie wykonana. Jednak, podobnie jak inne dyscypliny, CS nakłada się na matematykę, inżynierię, nauki fizyczne, nauki społeczne, filozofię i tak dalej.

Dodałbym również, że większość programistów nie jest ani informatyką, ani inżynierią oprogramowania. Bardziej przypomina to, co robi rzemieślnik.

I przykro mi to mówić, ani akademicka informatyka, ani zawód inżyniera oprogramowania nie są tak rygorystyczne, jak starsze dyscypliny nauki i inżynierii. (Istnieją dziedziny informatyki, które są tradycyjnie rygorystyczne; na przykład te o silnych podstawach matematycznych. Ale dla wielu dziedzin po prostu zbyt trudne / kosztowne jest przeprowadzenie odpowiednich badań naukowych w kwestiach, które naprawdę mają znaczenie.)

Stephen C.
źródło
1
Jest też inżynieria sprzętu - ktoś musi zaprojektować fizyczne komputery, na których będzie działać oprogramowanie - i to naprawdę (główna) subdyscyplina inżynierii elektronicznej.
Donal Fellows
+1 za analogię rzemieślnika, zdałem sobie sprawę, że jest to najdokładniejsza koncepcja wyjaśniająca, co robi CS inżyniera oprogramowania. Oto link do darmowej książki O'Reilly na ten temat. apprenticeship-patterns.labs.oreilly.com/ch01.html
romeroqj
„Przykro mi to mówić, ani akademicka informatyka, ani zawód inżyniera oprogramowania nie są tak rygorystyczne jak starsze dyscypliny nauki i inżynierii”: Nie zgadzam się z tym stwierdzeniem. Między innymi, gdyby informatyka nie była rygorystyczna, nie mielibyśmy postępu w językach programowania, kompilatorach (i całej formalnej teorii języków za nimi), kryptografii i tak dalej. Wszystkie te aplikacje mają solidne podstawy, które zostały opracowane głównie w środowisku akademickim.
Giorgio
@Giorgio - Szkoda, że ​​nie przeczytałeś tego, co napisałem bezpośrednio po zdaniu, które zacytowałeś ...
Stephen C
@Stephen C: Przeczytałem go i wciąż nie jestem przekonany, że informatyka jest mniej rygorystyczna niż inne nauki (ale oczywiście się mylę). A może najpierw należy zdefiniować, co uważa się za „naukowe” i „rygorystyczne”, a co nie, ale myślę, że może to wymagać długiej dyskusji.
Giorgio
12

Programiści rzadko „zajmują się informatyką”. Oni głównie wykorzystywać wyniki „inżynierii oprogramowania”, która jest dyscypliną inżynierii, oczywiście.

Poza tym informatyka to matematyka stosowana. Jeśli porównasz CS z czymś, co niewątpliwie należy do stosowanej matematyki, zauważysz duże podobieństwo.

Informatycy projektują i badają sposoby obliczeń (algorytmy), czerpiąc większość teorii z matematyki (logika, teoria grafów, kombinatoryka itp.) - i jednocześnie wnoszą do niej swój wkład. Podobnie jak reszta matematyki stosowanej.

Teoretycznie oceniają właściwości tych modeli i algorytmów i przeprowadzają eksperymenty modelowania (pisz programy testowe). Podobnie jak zastosowani matematycy symulują przepływ cieczy w tubach na klastrach, informatycy wykorzystują komputery do eksperymentowania z implementacjami swoich algorytmów. Wyniki tych eksperymentów trafiają bezpośrednio do produkcji: do rafinerii ropy naftowej lub do oprogramowania do analizy zapasów.

Na uniwersytecie, które ukończyłem, nie ma nawet specjalnego wydziału informatyki: między innymi domenami nie komputerowymi krzesło informatyki jest częścią Wydziału Matematyki Stosowanej.

P Shved
źródło
ale na innych uniwersytetach Informatyka jest odrębnym działem w ramach Wydziału Matematyki, wydziału Inżynierii, Wydziału Nauk lub… żadnego z powyższych. Są to kwestie administracyjne / organizacyjne i mają niewiele wspólnego z faktycznym materiałem tematycznym.
Stephen C
@Stephen, dlatego podałem uniwersytet, zamiast mówić „na większości uniwersytetów” lub „na wielu uniwersytetach” :-) To tylko mały przykład, a nie sedno odpowiedzi.
P Shved
1
pewnie, że jest to „mały przykład”, ale chodzi mi o to, że nie jest to reprezentatywny przykład i nie ma on nawet szczególnego znaczenia dla twojego argumentu. Aby to zilustrować, uniwersytet, na którym pracuję, jest w trakcie restrukturyzacji wydziałów ... nie z powodu głębokiego zastanowienia się nad tym, co się z tym wiąże ... ale w celu zmniejszenia kosztów administracyjnych . Kilka lat temu szkoły CS i Elec Eng zostały połączone z tego samego powodu .
Stephen C
Jak powiedziałem w mojej pierwszej odpowiedzi, informatyka jest dyscypliną matematyki stosowanej, która zajmuje się projektowaniem i stosowaniem automatów obliczeniowych. Programowanie nie jest informatyką. Oprogramowanie to sposób na zaimplementowanie automatów obliczeniowych bez wyciągania lutownicy (każdy program można wdrożyć za pomocą logiki sekwencyjnej i kombinatorycznej, biorąc pod uwagę wystarczającą ilość nieruchomości). Architektura von Neumann różniła się od architektur, które ją poprzedziły, ponieważ jest to automat ogólnego przeznaczenia, który służy jako podstawa do tworzenia „miękkich” automatów specjalnego przeznaczenia.
bit-twiddler
1
@ bit-twiddler - Twoja definicja jest zbyt wąska. Wyklucza to wiele dziedzin akademickich tradycyjnie klasyfikowanych jako „informatyka”.
Stephen C
5

Informatyka to termin, który obecnie obejmuje wiele, wiele rzeczy:

  • Mistrzowscy rzemieślnicy wykonują pracę dla innych w oparciu o ich doświadczenia ze swoimi narzędziami (i mają uczniów itp.)
  • Kowal narzędzie wymyśla i tworzy nowe narzędzia dla rzemieślników
  • Naukowcy opracowujący nowe stopy i inne materiały - takie jak plastik - dla kowali narzędziowych.
  • Naukowcy teoretyczni zastanawiają się, jak działają rzeczy, aby twórcy alloymentów wiedzieli, jak działają ich narzędzia.

Zwróć uwagę, że wszystkie powyższe mają wyraźne nazewnictwo zamiast po prostu „informatyków”. Różnica polega na tym, że informatyka jest zbyt nowa, aby nazewnictwo mogło się rozstrzygnąć.


źródło
Punkt 2 jest bardziej stonogą narzędziową , ale ta odpowiedź jest słuszna :)
ZJR
1

Przede wszystkim jest to informatyka . Dotyczy to matematyki obliczeniowej.
Istnieją inne dyscypliny, które są bardziej zorientowane na inżynierię.

Różnica jest taka sama, jak w przypadku innych powiązanych dziedzin nauki i inżynierii. Jedna dotyczy dokładności, druga precyzji. Informatyka jest teoretyczna, inne dotyczą nauki stosowanej do problemów: inżynierii.

CMR
źródło
1
MIT nie zgadza się z tobą eecs.mit.edu
Armand
@Aison, popraw również wpis wiki ( en.wikipedia.org/wiki/Computer_science ).
CMR
0

Informatyka stosowana i matematyka eksperymentalna .

filozofodad
źródło
0

Informatyka to dziedzina matematyki stosowanej, która zajmuje się projektowaniem i stosowaniem automatów obliczeniowych. Inżynieria oprogramowania to właściwy podzbiór informatyki, który zajmuje się sformalizowanym projektowaniem i budową kodu dla architektury von Neumanna. Architektura von Neumann jest tylko jednym sposobem na wdrożenie maszyny obliczeniowej. Na przykład maszyna używana do łamania wiadomości zakodowanych w Enigmie nie była maszyną von Neumanna.

Inżynieria oprogramowania jest dyscypliną praktyków. Informatyka to dyscyplina badawcza. Większość licencjatów z informatyki kończy się na tworzeniu oprogramowania, ponieważ badania wymagają posiadania co najmniej stopnia magistra, co potwierdza przekonanie, że informatyka jest uwielbionym certyfikatem programistycznym.

bit-twiddler
źródło
3
Nie sądzę, aby wielu akademickich informatyków zaakceptowało tak wąską definicję CS.
Stephen C
0

Dyscyplina najdokładniej nazywana „informatyką” jest, na większości uniwersytetów, które sprawdziłem, nauką stosowaną, podobną do dyscyplin inżynierskich; jeśli się na tym specjalizujesz, otrzymasz „BS” lub „MS”. Dyplom CS Texas Texas Tech otrzymał inżynierska. Dyscyplina, zgodnie z nauczaniem, jest głównie teoretyczna; poznajesz koncepcję maszyn Turinga, DA / NDA i inne podstawowe koncepcje, których „codzienny” programista nie musi tak naprawdę grzechotać w głowie. Dostajesz również ładunek wyższej matematyki; tytuł Texas Tech CS, i założę się także o wiele innych, prawie wręczam ci drobne matematykę. Do tego większość dyplomów uniwersyteckich dodaje ogromną szczyptę praktycznej aplikacji na niskim poziomie; uczysz się języka asemblera, języka 3. generacji,

Jednak większość ludzi, którzy kodują życie, nie jest „informatykami”; są ściśle mówiąc „twórcami oprogramowania” lub (po dodaniu do analizy / projektu) „inżynierami oprogramowania”; zadanie to jest znacznie mniej na poziomie sprzętowym (choć musisz znać podstawy tego), znacznie więcej analizy systemów, projektowania i prostego kodowania. Wiele uniwersytetów ma po temu inną ścieżkę; w Texas Tech nazwano go „Zarządzanie systemami informatycznymi” i był to stopień naukowy (BBA / MBA). Ścieżka ta była lżejsza na wyższych poziomach matematycznych (to, co trzeba wiedzieć o algebrze i obliczeniach różnicowych / całkowych, została ściśnięta na dwa semestry „matematyki biznesowej” i nie obejmowała obliczeń wektorowych / tensorowych, algebry liniowej itp.), Znacznie cięższa na matematyka finansowa (semestr każdy ze statystyk i finansów, po dwa rachunki i ekonomia). Lżejsze w systemach operacyjnych, w większym stopniu w technologiach „stosowych”, takich jak bazy danych, serwery sieciowe, sieci i ogólne administrowanie systemami. Lżejsze w przypadku języków niskiego poziomu, projektowania obwodów i sztucznej inteligencji, cięższe w przypadku języków 3. i 4. generacji, analizy systemów i zarządzania projektami. Uzyskałem ten tytuł w Texas Tech i zanim opuściłem szkołę, miałem przynajmniej semestr w języku Java, VB, C # i językach internetowych (HTML / CSS / PHP), a także rok OOA & D i różne inne kursy w zarządzaniu projektami informatycznymi.

Co jest lepsze w prawdziwym świecie? Mam MIS BBA, mój brat dostał CS BS i oboje jesteśmy zatrudnieni na mniej więcej tym samym poziomie wynagrodzeń (dostosowując się do kosztów utrzymania) jak starsi inżynierowie oprogramowania. Musiał nauczyć się wielu wymaganych OOA i D w pracy, a także dość szybko rozkręcać w C # / Java ze swojej podstawowej znajomości C ++. Ze swojej strony chciałbym mieć dwa semestry analizy algorytmu pojęciowego, które dostał, gdy utknąłem na kursach zarządzania biznesem (tak, MIS to stopień zarządzania, ale odkryłem, że 99% mojej wiedzy o tym, jak na przykład nauczyłem się zarządzać innymi osobami i nimi nie zarządzać).

KeithS
źródło