Bilgisayar bilimi

alt=Expression for Church numerals in lambda calculus|Programming language theory|link=Programming language theory alt=Hızlı sıralama algoritması|Hesaplamalı karmaşıklık teorisi|link=Hesaplamalı karmaşıklık teorisi alt=Hareket yakalamayla oluşturulmuş bir bilgisayar animasyonu örneği|Yapay zekâ|link=Yapay zekâ alt=Half-adder devresi|Bilgisayar mimarisi|link=Bilgisayar mimarisi Bilgisayar biliminin temel alanları bilgisayar programlama dillerini (sol üst), algoritmaların dizayn ve analizini (sağ üst), akıllı sistemlerin yapılmasını (sol alt) ve elektrik donanımları (sağ alt) kapsar. alt=|küçükresim|Bilgisayar bilimi; pratik tekniklerle birlikte veri ve hesaplamanın teorik temellerini de ele almaktadır. Şekilde en kısa yol problemi ve çözüm algoritması animasyonu veriliyor. Bilgisayar bilimi, bilgisayarların tasarımı ve kullanımı için temel oluşturan teori, deney ve mühendislik çalışmasıdır. Hesaplamaya ve uygulamalarına bilimsel ve pratik bir yaklaşımdır. Bilgisayar bilimi; edinim, temsil, işleme, depolama, iletişim ve erişimin altında yatan yönteme dayalı prosedürlerin veya algoritmaların fizibilitesi, yapısı, ifadesi ve mekanizasyonunun sistematik çalışmasıdır. Bilgisayar biliminin alternatif, daha özlü tanımı "büyük, orta veya küçük ölçekli algoritmik işlemleri otomatikleştirme çalışması" olarak nitelendirilebilir. Bir bilgisayar bilimcisi, hesaplama teorisi ve hesaplama sistemlerinin tasarımı konusunda uzmanlaşmıştır.WordNet Search 3.1 Wordnetweb.princeton.edu. Retrieved 2012-05-14 Alanları teorik ve pratik disiplinlere ayrılabilir. Bilgisayar grafikleri gibi alanlar, gerçek dünya görsel uygulamalarını vurgularken, hesaplamalı karmaşıklık teorisi (hesaplama ve zor olan sorunların temel özelliklerini araştıran) gibi bazı alanlar oldukça özeldir. Diğer alanlar sıklıkla hesaplamanın uygulanması konusunda karşılaşılan zorluklara odaklanmaktadır. Örneğin, programlama dili teorisi, hesaplamanın tanımlamasına yönelik çeşitli yaklaşımları ele alırken, bilgisayar programcılığının kendisi de programlama dili ve karmaşık sistemlerin kullanımının çeşitli yönlerini inceler. Bununla beraber insan- bilgisayar etkileşimi alanı; bilgisayarları ve hesaplamaları yararlı, kullanışlı ve evrensel olarak insanlara ulaştırmaya yönelik zorlukları tanımlamaya ve onları aşmaya çalışmaktadır. == Tarihi == Daha sonraları bilgisayar bilimi haline gelecek olgunun en eski temelleri, modern dijital bilgisayarın icadından önce gelmektedir. Abaküs gibi sabit sayısal işlemler için kullanılan hesap makineleri, antik çağlardan beri var olmuştur. Bunlar çarpma ve bölme gibi temel hesaplamalara yardımcı oluyordu. Ayrıca, hesaplamaları gerçekleştirmek için kullanılan algoritmalar, antik çağlardan beri, hatta gelişmiş bilgisayar ekipmanlarının geliştirilmesinden önce de var olmuştur. Blaise Pascal, 1642'de kendi ismini verdiği mekanik hesap makinesini tasarladı ve geliştirdi."Blaise Pascal" . School of Mathematics and Statistics University of St Andrews, Scotland. 1673'te Gottfried Leibniz, "Stepped Reckoner" adında bir dijital mekanik hesap makinesi tasarladı. İlk bilgisayar bilimcisi ve bilgi teorisyeni olarak düşünebilir. Leibniz'i ilk bilgisayar bilimcisi olarak kabul etmemiz için diğer sebeplerin yanı sıra kendisinin, ikili sayı sisteminde belgeli ve sistemli biçimde çalışmış olması yeterlidir. Thomas de Colmar, 1820'de mekanik hesap makinesi endüstrisini başlattı ve basitleştirilmiş aritmometre'yi piyasaya sundu. Bu hesap makinesi, günlük olarak ofis ortamında kullanılabilecek kadar donanımlı ve güvenilir ilk hesap makinasıydı. Charles Babbage, 1822'de ilk "Otomatik çalışan mekanik hesap makinesi" olan Fark Makinesi'nin (İngilizce: Difference Engine) tasarımını başlattı ve bu çalışmalarının neticesinde ona ilk programlanabilir mekanik hesap makinesi fikri olan "Analitik Tabanlı Motor" ismini verdi. Bu makineyi 1834'te geliştirmeye başladı ve iki yıldan az bir sürede modern bilgisayarın göze çarpan özelliklerinin çoğunu çizmişti.a b Anthony Hyman (1982). Charles Babbage, pioneer of the computer. 1843 yılında Ada Lovelace, "Analitik Motor" hakkındaki bir Fransız makalesinin çevirisi sırasında, içerdiği birçok nottan birinde, günümüzde ilk bilgisayar programı olarak düşünülen Bernoulli sayılarını hesaplamak için bir algoritma yazdı."A Selection and Adaptation From Ada's Notes found in Ada, The Enchantress of Numbers," by Betty Alexandra Toole Ed.D. Strawberry Press, Mill Valley, CA". Archived from the original on February 10, 2006. Retrieved 2006-05-04. 1885 civarında Herman Hollerith, istatistiksel bilgileri işlemek için delikli kartlar kullanan çizelgeleyiciyi (tabulator) icat etti; Sonunda çalışmaları kendi şirketi IBM'in bir parçası haline geldi. 1937'de, Babbage'ın imkânsız rüyasından yüz yıl sonra, Howard Aiken, her türden delikli kart ekipmanı üreten IBM'i ikna etti ve Babbage'ın Analitik Motor fikrinden yola çıkarak dev programlanabilir hesap makinesi geliştirmek için çalışmalar yaptı. Başarıyla yürüttüğü çalışmalarının sonucunda "ASCC / Harvard Mark I" hesap makinesini icat etti."In this sense Aiken needed IBM, whose technology included the use of punched cards, the accumulation of numerical data, and the transfer of numerical data from one register to another", Bernard Cohen, p.44 (2000) Bu cihazda kartlar ve merkezi işlem birimi (CPU) kullanıldı. Makine çalışması bittiğinde, çevresindekiler "Babbage'nin hayali gerçeğe dönüştü!" diyerek Howard Aiken'i takdir ettiler.Brian Randell, p. 187, 1975 1940'lı yıllarda, yeni ve daha güçlü bilgi işlem makineleri geliştirildiğinde, hesaplama terimi için insanlardan ziyade makinelere atıfta bulunulmaktaydı.The Association for Computing Machinery (ACM) was founded in 1947. Bilgisayarların sadece matematiksel hesaplamalardan daha fazlası için kullanılabileceği netleştikçe, bilgisayar bilimi alanı, genel olarak hesaplamayı incelemek üzere genişletildi. Bilgisayar bilimi, 1950'lerde ve 1960'ların başında ayrı bir akademik disiplin olarak kurulmaya başlandı.a b c Denning, Peter J. (2000). "Computer Science: The Discipline" (PDF). Encyclopedia of Computer Science. Archived from the original (PDF) on 2006-05-25."Some EDSAC statistics" . Cl.cam.ac.uk. Retrieved 2011-11-19. Dünyanın ilk bilgisayar bilimleri lisans programı olan Cambridge Bilgisayar Bilimleri diploması, 1953'te Cambridge Bilgisayar Laboratuvarı'nda verilmeye başladı. ABD'deki ilk bilgisayar bilimleri programı, 1962'de Purdue Üniversitesi'nde kuruldu."Computer science pioneer Samuel D. Conte dies at 85" . Purdue Computer Science. July 1, 2002. Retrieved December 12, 2014. Pratik bilgisayarlar piyasaya çıktığından beri, birçok bilgisayar uygulaması, kendi sistemlerine sahip farklı birer çalışma alanları haline geldi. Başlangıçta pek çok insanın, bilgisayarın bilimsel bir çalışma alanı olmasının imkânsız olduğuna inanmasına rağmen, bilgisayarlar 1950'li yıllarda giderek daha fazla akademik nüfus arasında kabul gördü.a b Levy, Steven (1984). Hackers: Heroes of the Computer Revolution. Doubleday. ISBN 0-385-19195-2.a b c d Tedre, Matti (2014). The Science of Computing: Shaping a Discipline. Taylor and Francis / CRC Press. Bu süre zarfında bilgisayar bilimleri devriminin bir parçasını oluşturan günümüzde geniş kitleler tarafından bilinen IBM markası sesini duyurmaya başladı. IBM (International Business Machines'in kısaltması), IBM 704 "IBM 704 Electronic Data Processing System—CHM Revolution". Computerhistory.org. Retrieved 2013-07-07. ve daha sonra bu tür cihazların arama periyodu boyunca yaygın olarak kullanılan IBM 709 bilgisayarlarını piyasaya sürdü. "Yine de bu ilkel IBM bilgisayarı ile çalışırken bir harfi yanlış yerleştirmiş olsaydınız sinir bozucu olurdu, çünkü program çökerdi ve bütün süreci yeniden baştan başlatmanız gerekirdi." 1950'lerin sonlarında bilgisayar bilimleri disiplini gelişim aşamasındaydı ve bu tür sorunlar sıradan olarak kabul görmekteydi."IBM 709: a powerful new data processing system" (PDF). Computer History Museum. Retrieved December 12, 2014. Zaman, bilgisayar teknolojisinin kullanışlılığında ve etkinliğinde önemli gelişmeler kaydetti."Timeline of Computer History" . Computer History Museum. Retrieved November 24, 2015. Modern toplumda, bilgisayar teknolojileri yalnızca uzmanlar ve profesyoneller tarafından değil, neredeyse her yerde bulunan kullanıcı tabanına ulaştı. Bilgisayar teknolojisi kullanıcılarında ciddi ve belirgin bir artış yaşandı. Başlangıçta, bilgisayarlar oldukça pahalıydı ve kısmen profesyonel bilgisayar operatörleri tarafından verimli bir şekilde kullanılmak için bir miktar insan yardımına yani teknik desteğe ihtiyaç vardı. Bilgisayarın geniş kitleler tarafından benimsenmesi ancak bilgisayarların daha geniş ve uygun fiyatlı hale gelmesiyle ve ortak kullanım için daha az insan faktörüne ve teknik desteğe ihtiyaç duyulduğunda mümkün hale geldi. == Katkıları == Bilgisayar bilimi, resmi bir akademik disiplin olarak kısa geçmişine rağmen, bilime ve topluma bir takım önemli katkılar sağlamıştır. -özellikle elektronikle birlikte- Bilgi Çağında kurulan bir bilimdir ve insanlığın ilerlemesinde adeta bir şoför haline gelmiştir. İnsanlığın teknolojik ilerlemesinde büyük sıçrayış olarak görülen bilimsel bilgiye dayalı karar verme ve günümüzün bilgi toplumu ideallerinin temel yapı taşlarından birisi haline gelmiştir. Bu katkılar şunları içerir: Mevcut bilgi çağını ve İnternet'i içeren dijital devrimin başlangıcıdır."Computer Science : Achievements and Challenges circa 2000"(PDF). Archived from the original (PDF) on September 11, 2006. Retrieved January 11, 2007. Hesaplamanın ve hesaplanabilirliğin biçimselleştirilmiş bir tanımıdır. Bilgisayar bilimi; hesaplanamaz, çözülemez ve zor olarak kabul edilmiş problemlerin çözülebileceğinin bir nevi kanıtıdır.Constable, R. L. (March 2000). "Computer Science: Achievements and Challenges circa 2000" (PDF). Çeşitli soyutlama seviyelerinde metodolojik bilgilerin tam olarak ifade edilmesi için araç olan programlama dili kavramı türemiştir.Abelson, H.; G.J. Sussman with J. Sussman (1996). Structure and Interpretation of Computer Programs (2nd ed.). MIT Press. ISBN 0-262-01153-0. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology — the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Kriptografi alanında örneğin Enigma kodunu kırmak, İkinci Dünya Savaşı sırasında Müttefiklerin zaferine katkıda bulunan önemli bir faktördü.David Kahn, The Codebreakers, 1967, ISBN 0-684-83130-9. Bilgisayar uygulamaları sayesinde bilimsel hesaplama yöntemleri gelişmiştir. Böylelikle süreçlerin ve durumların pratik olarak değerlendirilmesi ve kısmi de olsa süreçleri kontrol edilebilir bir karmaşıklığa indirgenmesi mümkün hale gelmiştir. Aynı zamanda insan zihni üzerinde ileri düzeyde çalışmayı mümkün kıldı ve "İnsan Genomu Projesi" ile insan genomunun haritalandırılması mümkün oldu. Örneğin Folding@home gibi dağıtık bilgi işlem projeleriyle protein katlanması keşfedildi. Algoritmaya dayalı ticaret alanında yapay zekâ, makine öğrenimi, istatistiksel ve sayısal teknikler vb. bilgisayar bilimleri konuları kullanılarak finansal piyasalardaki verimlilik ve likidite arttı."Black box traders are on the march". The Telegraph. August 26, 2006. Archived from the original on June 21, 2008. Ayrıca yüksek frekanslı algoritmik ticaret de volatiliteyi artırmıştır."The Impact of High Frequency Trading on an Electronic Market" . Papers.ssrn.com. doi:10.2139/ssrn.1686004. Retrieved 2012-05-14. Bilgisayar grafikleri ve bilgisayar tarafından oluşturulmuş görüntüler, özellikle televizyon, sinema, reklam, animasyon ve video oyunlarında kullanılmış ve özetle modern eğlence dünyasında her yerde kullanılır hale gelmiştir. Hatta kullanılan tekniğe göre değişmekle beraber yapaylık içermeyen CGI teknolojili filmler genellikle dijital kameralar üzerinde filme alınmakta, dijital video düzenleyicisi kullanılarak düzenlenip veya post-processing tekniğiyle işlenebilmektedir. Bu sayede günümüz filmlerindeki efektler başarılı şekilde uygulanmaktadır.Matthau, Charles. "How Tech Has Shaped Film Making: The Film vs. Digital Debate Is Put to Rest" . Wired. Retrieved November 24, 2015. Akışkanlar dinamiği hesaplamalarında, fiziksel, elektriksel ve elektronik sistemlerde, devre tasarımlarında, toplumların yaşantısı, sosyal durumlar (özellikle savaş oyunları) ve ortak yaşam alanları gibi çeşitli süreçlerde bilgisayar simülasyonları kullanılmaktadır. Modern bilgisayarlar, uçak gibi özel tasarımların optimizasyonunu mümkün kılmaktadır. Elektrikli ve elektronik devre tasarımında dikkat çeken unsurlar SPICE ve yeni (veya değiştirilmiş) tasarımların fiziksel olarak gerçekleştirilmesi için yazılımlardır. Ayrıca, entegre devreler için gerekli tasarım yazılımının kullanılması da mümkündür. Yapay zekâ daha verimli ve karmaşık bir hal aldığından giderek önem kazanmaktadır. Yapay zekânın birçoğu evde görülebilen formdadır, örneğin robotik elektrikli süpürgeler gibi birçok yapay zekâ uygulaması vardır. Video oyunları, modern savaş teknolojilerinde dronlar ve füze savar sistemleri kullanılmaktadır. Ve ayrıca takım destekli robotlar da yapay zekanın kullanım alanlarına örnek olarak gösterilebilir. == Etimoloji == İlk 1956'da önerilmiş olmasına rağmen "bilgisayar bilimi" terimi 1959'da ACM'nin İletişim Bildirisinde ortaya çıkarLouis Fine (1959). "The Role of the University in Computers, Data Processing, and Related Fields". Communications of the ACM. 2 (9): 7–14., çünkü Louis Fein 1921 yılında Harvard Business School'un yaratılışına benzer şekilde bilgisayar bilimleri için de bir enstitünün kurulmasını savunmaktadır. Yönetim bilimi (management science) gibi bir alanın akademik disipline özgü özelliklere sahip olarak tanınmasına rağmen pek çok konuda uygulanmış ve disiplinler arası bir nitelikte olan bilgisayar biliminin akademik yönlerini savunarak kendini haklı çıkarmıştır."Stanford University Oral History" . Stanford University. Retrieved May 30, 2013. Kendisinin bu yöndeki çabaları ve diğer pek çok sayısal analizci George Forsythe gibi isimlerin çabaları ödüllendirildi: Üniversiteler 1962'de Purdue'den başlayarak üniversitelerinin bünyesinde bu tür programlar açmaya başladı.Donald Knuth (1972). "George Forsythe and the Development of Computer Science" . Comms. ACM. Archived October 20, 2013, at the Wayback Machine. Bu kabule rağmen kayda değer bir kitle de bilgisayar biliminin salt bilgisayardan ibaret olmadığını ve kelimenin yetersiz olduğunu savunmaktaydı. Bu nedenle birkaç alternatif isim önerildi.Matti Tedre (2006). "The Development of Computer Science: A Sociocultural Perspective" (PDF). p. 260. Retrieved December 12, 2014. Büyük üniversitelerin bazı bölümleri, bu farkı tam olarak vurgulamak için bilgisayar bilimi terimini tercih etmektedir. Danimarkalı bilim insanı Peter Naur, bu bilimsel disiplinin yani bugün bilgisayar bilimleri olarak anılan alanın, veri ve veri işleme konuları etrafında şekillenmesi gerektiğini savunmaktaydı ve dataloji (datalogy) Peter Naur (1966). "The science of datalogy". Communications of the ACM. 9 (7): 485. doi:10.1145/365719.366510 terimini önerdi; bu sayede bahsi geçen disiplinin uğraş alanına mutlaka bilgisayarların dahil olmadığı savunuluyordu. Bu terimi kullanan ilk bilimsel kurum, 1969'da kurulan Kopenhag Üniversitesi'nde Dataloji Bölümü'nden ve Peter Naur'un dataloji bölümünün ilk profesörü olmasından kaynaklanmaktadır. Terim ağırlıklı olarak İskandinav ülkelerinde kullanılmaktadır. Naur tarafından da önerilen alternatif bir terim veri bilimidir; ancak bu terim artık istatistik ve veritabanlarının dahil edildiği farklı bir veri analizi alanı disiplini için kullanılmaktadır. Ayrıca, bilgisayarlı hesaplamanın ilk dönemlerinde Communications of the ACM bünyesinde çalışan bazı pratisyenlerin birkaç kelimesi önerildi: turingineer, turologist, flow-charts-man, applied meta- mathematician, ve applied epistemologist.Weiss, E. A.; Corley, Henry P. T. "Communications of the ACM". Communications of the ACM. 1 (4): 6. doi:10.1145/368796.368802. Üç ay sonra aynı dergide comptologist kavramı öne sürüldü ve ertesi sene bunu hypologist kelimesi takip etti.Communications of the ACM 2(1):p.4 Sonraki çalışmalarda computics terimi de önerildi.IEEE Computer 28(12):p.136 Avrupa'da, "automatic information" ifadesinin (örneğin, İtalyanca'daki "informazione automatica") sözleşmeli çevirileri yapılmasından sonra "information and mathematics" gibi kavramlar türetilmiş, örneğin; informatique (Fransızca), Informatik (Almanca), informatica (İtalyanca, Hollanda dili), informática (İspanyolca, Portekizce), informatika (Slav dilleri ve Macarca) veya Yunanca olarak pliroforiki (πληροφορική: bilişim anlamına gelir). Benzer kelime, Birleşik Krallık'ta (as in the School of Informatics of the University of Edinburgh) kabul edilmiştir.P. Mounier-Kuhn, L'Informatique en France, de la seconde guerre mondiale au Plan Calcul. L'émergence d'une science, Paris, PUPS, 2010, ch. 3 & 4. "Bununla birlikte, ABD'de informatics, uygulamalı bilgisayar bilimleriyle ilişkilidir veya bilgisayarlı hesaplama alanında çalışılan başka bir uğraş ile birlikte anılmaktadır." İlk kez Edsger Dijkstra tarafından formüle edilmemiş olmasına rağmen sıklıkla Dijkstra'ya atfedilen bir alıntıda kendisi bilgisayar bilimi için "teleskop ile kozmoloji ne kadar ilintiliyse, bilgisayar ile bilgisayar bilimleri de aynı şekilde ilintilidir." sözlerini belirtmektedir. Bilgisayarların, bilgisayar sistemlerinin tasarımı ve yerleştirilmesi genel olarak bilgisayar bilimleri dışındaki disiplinler olarak düşünülür. Örneğin, ticari bilgisayar sistemlerinin incelenmesi ve konuşlandırılmasına genellikle bilgi teknolojisi veya bilgi sistemleri denirken, bilgisayar donanımının çalışması genellikle bilgisayar mühendisliğinin bir parçası olarak düşünülür. Bununla birlikte, bilgisayar bilimi ile çeşitli disiplinler arasında ciddi bir etkileşim söz konusudur ve akademik çevrelerce göz ardı edilmemesi gerektiği düşünülmektedir. Bu nedenle bilgisayar bilimi araştırmaları; felsefe, bilişsel bilim, dil bilimi, matematik, fizik, biyoloji, istatistik ve mantık gibi diğer disiplinleri de sıklıkla kesiştirir. Bilgisayar bilimleri ve etkileşimde bulunduğu disiplinler hakkında bazı gözlemciler, örneğin hesaplama alanının matematiksel bir bilim olduğunu savunarak, bilgisayar bilimlerinin birçok bilimsel disiplinden ziyade matematikle daha yakın bir ilişki kurduğunu düşünüyordu.Erken bilgisayar bilimi Kurt Gödel ve Alan Turing gibi matematikçilerin çalışmalarından büyük ölçüde etkilenmiştir ve matematiksel mantık, kategori teorisi, alan teorisi ve cebir gibi alanlar göz önünde bulundurulduğunda bilgisayar bilimi ve matematik arasında bilgilerin yararlı bir şekilde değişimi açıkça görülmektedir. Bilgisayar bilimi ve yazılım mühendisliği arasındaki ilişki ise tartışmalı bir konudur. "Yazılım mühendisliği" teriminin ne anlama geldiği ve bilgisayar biliminin nasıl tanımlandığına dair anlaşmazlıklar nedeniyle karışıklığa neden olur.Tedre, M. (2011). "Computing as a Science: A Survey of Competing Viewpoints". Minds and Machines. 21 (3): 361–387. Diğer mühendislik ve bilim disiplinleri arasındaki ilişkiden bir ipucu alarak David Parnas, yazılım mühendisliğinin temel odağının pratik nitelikli amaca ulaşmak için spesifik hesaplamalar dizayn etmek olduğunu, bilgisayar biliminin odak noktasının ise genel olarak hesaplama ve onun özelliklerini incelediğini iddia etti. Bu iki alanların ayrı ama birbirini tamamlayıcı disiplinler oldukları düşünülmekteydi.Parnas, D. L. (1998). "Software engineering programmes are not computer science programmes". Annals of Software Engineering. 6: 19–37. Bilgisayar biliminin akademik, politik ve finansman yönleri, bu bölümün matematiksel bir vurguyla veya bir mühendislik vurgusu ile oluşup oluşmadığına bağlıdır. Matematik ağırlıklı ve sayısal oryantasyona sahip bilgisayar bilimleri bölümleri, sayısal bilimlerle uyum sağlamayı yani entegrasyonu esas almaktadırlar. Mühendislik ya da matematik ağırlıklı bilgisayar bilimleri bölümlerinin her ikisi de kendi alanlarına eğitici nitelik kazandırmak için diğer bilimlerle bağlantı kurmak ve disiplinler arası bir eğitim modeli yaratmak için çaba harcamaktadırlar. == Felsefe == Birtakım bilgisayar bilimcisi, bilgisayar bilimlerini üç ayrı paradigmaya ayırmak için fikir beyan ettiler. Peter Wegner, bu paradigmaların bilim, teknoloji ve matematik olduğunu savundu.Wegner, P. (October 13–15, 1976). Research paradigms in computer science—Proceedings of the 2nd international Conference on Software Engineering. San Francisco, California, United States: IEEE Computer Society Press, Los Alamitos, CA. Peter Denning'in çalışma grubu ise, bu paradigmaların teori, soyutlama (modelleme) ve tasarım olduğunu savundu.Denning, P. J.; Comer, D. E.; Gries, D.; Mulder, M. C.; Tucker, A.; Turner, A. J.; Young, P. R. (Jan 1989). "Computing as a discipline". Communications of the ACM. 32: 9–23. Amnon H. Eden ise "rasyonalist paradigma" (bu yaklaşım teorik bilgisayar bilimlerinde yaygın olarak kullanılan tümdengelim gibi konuların matematik kökenli olmasından dolayı bilgisayar bilimini matematiğin bir branşı olarak kabul etmektedir.) "teknokratik paradigma" (mühendislik yaklaşımlarını, belirgin olarak yazılım mühendisliğini bilgi işlem teknolojilerinde esas alma ve toplumda statülendirme) ve "bilimsel paradigma" (yapay zekânın bazı dallarında tanımlanabilen bilgisayarlarla ilgili çalışmalara doğal bilimin ampirik bakış açısıyla yaklaşmaktadır) ayrımlarından bahsetmiştir. == Bilgisayar biliminin alanları == Bilgisayar bilimi, bir disiplin olarak, algoritmaların teorik çalışmalarından hesaplama ve hesaplama sınırları çalışmalarına, donanım ve yazılım alanlarında bilgisayar sistemlerinin uygulanmasına ilişkin pratik ve teorik olmak üzere bir dizi konuyu kapsar.Computing Sciences Accreditation Board (May 28, 1997). "Computer Science as a Profession". Archived from the original on 2008-06-17. Retrieved 2010-05-23.Committee on the Fundamentals of Computer Science: Challenges and Opportunities, National Research Council (2004). "Computer Science: Reflections on the Field, Reflections from the Field. " National Academies Press. Computing Sciences Accreditation Board (Computing Sciences Akreditasyon Kurulu) olarak adlandırılan ve Computing Machinery Association (ACM) ve IEEE Computer Society (IEEE CS) "CSAB Leading Computer Education" . CSAB. 2011-08-03. Retrieved 2011-11-19. temsilcilerinden oluşan CSAB, bilgisayar disiplininde önemli olduğunu düşündüğü dört alanı şöyle tanımlamaktadır: # Hesaplama teorisi # Algoritmalar ve veri yapıları # Programlama metodolojisi ve dilleri # Bilgisayar elemanları ve mimarisi CSAB ayrıca, bilgisayar bilimlerinin önemli alanları olarak; yazılım mühendisliği, yapay zekâ, bilgisayar ağı ve iletişim, veritabanı sistemleri, paralel hesaplama, dağıtık hesaplama, insan-bilgisayar etkileşimi, bilgisayar grafikleri, işletim sistemleri ve sayısal ve sembolik hesaplama gibi alanları tanımlamaktadır. === Teorik bilgisayar bilimleri === Teorik bilgisayar bilimleri, matematiksel ve soyut olarak özetlenebilir, ancak motivasyonunu pratik ve günlük hesaplamalardan almaktadır. Amacı, hesaplamanın doğasını anlamak ve bu anlayışın bir sonucu olarak daha etkili metodolojiler geliştirmektir. Günümüzde matematiksel, mantıksal, standart kavram ve yöntemleri izah eden tüm makaleler, motivasyonlarının kaynağı olarak bilgisayar bilimi uygulamalarını net bir şekilde belirtip belirtmemesi ölçütünde kabul görmektedirler. ==== Hesaplama teorisi ==== Peter Denning'e göre, bilgisayar bilimi altında yatan temel soru "Ne, verimlilik sağlayacak biçimde otomatikleştirilebilir?" Hesaplama teorisi, nelerin hesaplanabileceği ve bunları gerçekleştirmek için ne kadar kaynak harcanacağı gibi temel sorulara cevap vermeye odaklanmıştır.Birinci soruyu cevaplamak için, hesaplanabilirlik teorisi hesaplamanın çeşitli teorik modellerinde hangi hesaplama problemlerinin çözülebileceğini inceler. İkinci soru, çok sayıdaki hesaplama problemlerini çözmeye yönelik farklı yaklaşımlarla ilişkili zaman ve mekan maliyetlerini inceleyen hesaplama karmaşıklığı teorisi tarafından ele alınmaktadır. "Millennium Prize Problems" problemlerinden biri olan Ünlü P = NP? problemi Clay Mathematics Institute P = NP October 14, 2013, at the Wayback Machine., hesaplama teorisinde hala açık ve çözülememiş bir sorundur. Dosya:NFAexample.svg| Dosya:Complexity classes.svg Dosya:Visual cryptography animation.gif| Dosya:Qubit registry.jpg| Otomata Teorisi Hesaplamalı karmaşıklık teorisi Kriptografi Kuantum hesaplama teorisi ==== Bilgi ve kodlama teorisi ==== Bilgi teorisi, bilginin nicelleştirilmesi ile ilgilidir. Bu teori, veri sıkıştırması,verilerin depolanması ve iletilmesi gibi sinyal işleme operasyonlarının temel sınırlarını bulmak için Claude Shannon tarafından geliştirildi.P. Collins, Graham (October 14, 2002). "Claude E. Shannon: Founder of Information Theory". Scientific American. Retrieved December 12, 2014. Kodlama teorisi, kodların özelliklerinin incelenmesi (bilgileri bir formdan diğerine dönüştürmek için kullanılan sistemler) ve bunların belirli bir uygulama için uygunluğunu inceler. Kodlar veri sıkıştırma, şifreleme, hata algılama ve düzeltme ve daha yakın zamanda ağ kodlaması için de kullanılır. Kodlar, etkin ve güvenilir veri iletim yöntemleri tasarlamak amacıyla incelenir. ==== Algoritmalar ve veri yapıları ==== Algoritmalar ve veri yapıları, yaygın olarak kullanılan hesaplama yöntemlerinin ve bunların hesaplama verimliliğinin incelenmesidir. ==== Programlama dili teorisi ==== Programlama dili teorisi, programlama dillerinin tasarımı, uygulanması, analizi, karakterizasyonu ve sınıflandırılması ile tekil özellikleri ele alan bir bilgisayar bilimi dalıdır. Hem matematiğe, hem yazılım mühendisliğine hem de dil bilimine bağlı olan bu alan bilgisayar biliminin disiplini içine girmektedir. Çok sayıda akademik dergisi bulunan etkin bir araştırma alanıdır. ==== Biçimsel yöntemler ==== Biçimsel yöntemler, yazılım ve donanım sistemlerinin spesifikasyonu, geliştirilmesi ve doğrulanması için matematik temelli bir tekniktir. Yazılım ve donanım tasarımı için biçimsel yöntemlerin kullanılması, diğer mühendislik disiplinlerinde olduğu gibi, uygun matematiksel analizlerin yapılması sayesinde geliştirilmekte olan bir tasarımın sağlamlığına ve güvenilirliğine katkıda bulunabileceği beklentisinden kaynaklanmaktadır. Yazılım mühendisliği için, özellikle emniyet veya güvenlikle ilgili önemli teorik bir temel oluşturmaktadır. Biçimsel yöntemler, hataları önlemeye yardımcı olduklarından ve sınama için bir çerçeve oluşturabildiklerinden, yazılım testi için kullanışlı bir yardımcıdır. Endüstriyel kullanım için ise takım desteği gereklidir. Bununla birlikte, biçimsel yöntemleri endüstride kullanmanın yüksek bedelinden ötürü,kullanım alanı genellikle güvenlik veya güvenliğin çok önemli olduğu, yüksek bütünlük gerektiren kritik yaşam sistemleri vb. alanların geliştirilmesi gibi uygulamalarla sınırlıdır. Biçimsel yöntemler en temel teorik bilgisayar bilimi konularının, özellikle mantık hesapları, biçimsel diller, otomata teorisi ve program semantiği gibi oldukça geniş bir çeşitliliğin uygulanması olarak tanımlanır; aynı zamanda, yazılım ve donanım özelliklerinde sorunların üstesinden gelmek için programlama dillerindeki tip sistemleri,cebirsel veri türleri ve doğrulama vb. alanları kullanmaktadır. === Uygulamalı bilgisayar bilimleri === Uygulamalı bilgisayar bilimi, gerçek dünya problemlerini çözmede doğrudan kullanılabilecek bazı bilgisayar bilimi kavramlarını araştırmayı, tanımlamayı, modellemeyi ve geliştirmeyi amaçlamaktadır. ==== Yapay zekâ ==== Yapay zekâ (Artifical Intelligence), insanlarda ve hayvanlarda bulunan problem çözme, karar verme, çevresel uyarlama, öğrenme ve iletişim gibi hedef odaklı süreçleri sentezlemeyi amaçlamaktadır veya bunları sentezlemek zorundadır. Sibernetik ve Dartmouth Konferansı'ndan (1956) sonra,nitelikli bir yapay zekâ araştırması için; matematik, sembolik mantık, göstergebilim, elektrik mühendisliği, zihin felsefesi, nörofizyoloji ve sosyoloji gibi uzmanlık alanları üzerine muhakkak disiplinler arası bir araştırma yapılması gerektiği sonucuna varılmıştır. Yapay zekâ, popüler düşüncede robotik gelişme ile ilişkilidir, ancak pratik uygulamada genelleştirilmesi ya da tanımlanması "hesaplama anlayışı gerektiren yazılım geliştirme alanlarında kullanılan gömülü bir bileşen" olmuştur.Yapay zekânın başlangıç ​​noktası 1940'ların sonunda, Alan Turing'in "Bilgisayarlar düşünebilir mi?" sorusudur ve Turing testi hala insan-istihbarat ölçeğindeki bilgisayar çıktılarını değerlendirmek için kullanılsa da, soru hala etkili bir şekilde cevaplanmamıştır. Ancak, karmaşık formdaki gerçek dünya verilerini içeren bilgisayar uygulaması alanlarında; insan gözlemi ve müdahalesinin yerini alması nedeniyle değerlendirme, tahmini görevler ve otomasyon uygulamalarında gittikçe başarılı olmuştur. Dosya:Nicolas P. Rougier's rendering of the human brain.png| Dosya:Human eye, rendered from Eye.png| Dosya:Albert Einstein and Mathematics with Image processing-5.png| Makine öğrenimi Bilgisayarlı görü Görüntü işleme Dosya:KnnClassification.svg| Dosya:Julia iteration data.png| Dosya:Sky.png| Örüntü tanıma Veri madenciliği Evrimsel algoritma Dosya:Neuron.svg| Dosya:Latin alphabet.svg| Dosya:Robotics at IIT Kharagpur.jpg| Bilgi temsili Doğal dil işleme Robotik ==== Bilgisayar mimarisi ve mühendisliği ==== Bilgisayar mimarisi veya dijital bilgisayar organizasyonu, bir bilgisayar sisteminin kavramsal tasarımı ve temel operasyonel yapısıdır. Büyük ölçüde merkezi işlem birimini. (CPU) dahili olarak nasıl çalıştığına ve hafızadaki adreslere erişim sistemine odaklanmaktadır.A. Thisted, Ronald (April 7, 1997). "Computer Architecture" (PDF). The University of Chicago. Bu çalışma alanı; işlevsellik, performans ve maliyet hedeflerini karşılayan bilgisayarlar oluşturmak için donanım bileşenlerini seçip entegrasyon çalışmaları yürüten bilgisayar mühendisliği ve elektrik mühendisliği disiplinlerini sık sık içerir. ==== Bilgisayar performans analizi ==== Bilgisayar performans analizi; çıktıları iyileştirme, yanıt süresini kontrol etme, kaynakları verimli bir şekilde kullanma, tıkanıklığı ortadan kaldırma ve yoğun yüklenmelerde sistem performansı tahmin etme gibi genel hedefleri olan ve bunları iyileştirme çalışmaları yürütülen alandır. ==== Bilgisayar grafikleri ve görselleştirme ==== Bilgisayar grafikleri, dijital görsel içeriğin incelenmesi ve görüntü verisinin sentezi ve manipülasyonu ile ilgilidir. Bu çalışmalar, bilgisayar bilimi, görüntü işleme ve hesaplama geometrisi de dahil olmak üzere bilgisayar bilimlerindeki diğer alanlarla da bağlantılıdır ve özel efektler ile video oyunları alanlarında yoğun bir şekilde uygulanmaktadır. ==== Bilgisayar güvenliği ve kriptografi ==== Bilgisayar güvenliğinin amacı; sistemin, amaçlanan kullanıcılar için erişilebilirliğini ve kullanılabilirliğini korurken, yetkisiz erişim, bozulma veya harici modifikasyona karşı bilgilerin korunmasını içeren bir bilgisayar teknolojisi dalıdır. Kriptografi gizleme (şifreleme) ve dolayısıyla şifre kırma (ya da şifre çözme) bilgisinin uygulanması ve incelenmesidir. Modern şifreleme, büyük oranda bilgisayar bilimi ile ilgilidir, çünkü birçok şifreleme ve şifre çözme algoritmaları hesaplama karmaşıklığı alanına dayalıdır. ==== Hesaplamalı bilim ==== Hesaplamalı bilim (veya bilimsel hesaplama), matematiksel modellemeler ve niceliğe dayalı analiz teknikleri oluşturmak ve bilimsel problemleri analiz etmek ve çözümlemek için bilgisayarı araç olarak kullanan bir çalışma alanıdır. Pratikte, bilgisayar simülasyonunun ve diğer hesaplama biçimlerinin, çeşitli bilim dallarındaki sorunlara uygulanması anlamına gelmektedir. Dosya:Lorenz attractor yb.svg| Dosya:1u04-argonaute.png| Sayısal analiz Biyoenformatik ==== Bilgisayar ağları ==== Bilgisayar bilimlerinin bu dalı, bilgisayarlar arasındaki ağları dünya çapında yönetmeyi ve problemleri aşmayı amaçlamaktadır. ==== Eşzamanlı, paralel ve dağıtılmış sistemler ==== Eşzamanlılık, birçok hesaplamanın aynı anda ve potansiyel olarak birbiriyle etkileşime girdiği sistemlerin bir özelliğidir. Petri ağları, süreç hesapları ve Paralel Rastgele Erişim Makinesi modeli de dahil olmak üzere genel eşzamanlı hesaplama için bir takım matematiksel modeller geliştirilmiştir. Dağıtılmış bir sistem eşzamanlılık fikrini bir ağ üzerinden bağlanan birden fazla bilgisayara genişletir. Aynı dağıtılan sistem içindeki bilgisayarlar kendi özel belleğine sahiptir ve ortak bir amaç edinmek için bilgi kendi aralarında sıklıkla değiştirilir. ==== Veritabanları ==== Veritabanı, büyük miktardaki veriyi kolayca organize etmek, depolamak ve transfer etmek için tasarlanmıştır. Sayısal veritabanları, veritabanı modelleri ve sorgu dilleri aracılığıyla veri saklamak, oluşturmak, korumak ve aramak için veritabanı yönetim sistemleri sıklıkla kullanılmaktadır. Özellikle finans, emniyet ve kamusal alanlarda kullanımı yaygındır. ==== Yazılım mühendisliği ==== Yazılım mühendisliği, yüksek kalitede, ekonomik, bakıma açık ve hızlı geliştirmeyi sağlamak için yazılım tasarlama, uygulama ve değiştirme çalışmasıdır. Yazılım tasarımına sistematik ve bilimsel yaklaşım, mühendislik çalışmalarının yazılıma uygulanmasıyla mümkün hale gelmektedir. Yazılım mühendisliği, yazılımın organizasyonu ve analizi ile ilgilenmektedir-sadece yeni yazılımların oluşturulması veya üretimi ile değil, dahili bakım ve düzenleme ile de ilgilenmektedir. Her iki bilgisayar uygulamaları yazılım mühendisi ve bilgisayar sistemleri yazılım mühendisi, 2008-2018 yılları arasında en hızlı büyüyen meslekler arasında yer alması bekleniyor. == Bilgisayar bilimlerindeki bazı büyük yaklaşımlar == Hesaplama filozofu Bill Rapaport "Great Insights of Computer Science" adlı eserinde bilgisayar bilimlerinde büyük yaklaşımların üçünü kaydetti:"What Is Computation?" . buffalo.edu. Gottfried Wilhelm Leibniz, George Boole, Alan Turing, Claude Shannon ve Samuel Morse'ın bilgisayar bilimlerine bakış açısı: Bilgisayarın "herhangi bir şeyi" temsil etmek için kullanması gereken iki nesne var. Hesaplanabilir bir problemle ilgili tüm bilgiler sadece 0 ve 1 (veya "açma / kapama", "mıknatıslanmış / mıknatıssız","yüksek gerilim / düşük gerilim" vb.) gibi kolayca ayırt edilebilir iki durum arasında geçiş yapabilen diğer dengeli çiftler kullanılarak temsil edilebilir. Ayrıca bkz: Dijital fizik Alan Turing'in anlayışı: Bir bilgisayarın "herhangi bir şey" yapmak için gerçekleştirmesi gereken yalnızca beş eylem var. Her algoritma, yalnızca beş temel talimattan oluşan bir bilgisayar için bir dilde ifade edilebilir: Bir yerden sola hareket et; Sağa herhangi bir yere git; Geçerli konumda sembolü oku; Geçerli konumda 0 yazdır; Geçerli konumda 1 yazdır. Ayrıca bkz: Turing makinesi Corrado Böhm ve Giuseppe Jacopini'nin yaklaşımı: Bir bilgisayarın "herhangi bir şey" yapabilmesi için gereken bu eylemleri (daha karmaşık olana doğru) birleştirmenin üç yolu vardır. Özetle herhangi bir temel talimat kümesini daha karmaşık olacak biçimde birleştirmek için yalnızca üç kural gereklidir: Sıralama: önce şunu yapın, sonra bunu yapın; Seçim: Böyle bir durumda bunu yapın, daha sonraki durumda bunu yapın, bu durumlardan birisi değilse bunu yapın; Tekrarlama: Şöyle bir durumda şu şartlar sağlanıyor iken durumu tekrarla ve bu esnada şu işlemleri sırasıyla gerçekleştir. == Akademi == Konferanslar bilgisayar bilimi araştırmaları için çok önemli olaylardır. Bu konferanslarda, kamu ve özel sektörde araştırmacılar yeni çalışmalarını sunmakta ve bir araya gelmektedirler. Diğer birçok akademik alanın aksine, bilgisayar bilimlerinde, konferans bildirilerinin prestijleri dergi yayınlarından daha yüksektir.Meyer, Bertrand (April 2009). "Viewpoint: Research evaluation for computer science". Communications of the ACM. 25 (4): 31–34.Patterson, David (August 1999). "Evaluating Computer Scientists and Engineers For Promotion and Tenure ". Computing Research Association. Bunun için önerilen bir açıklamada; bilgisayar bilimleri dalının, diğer dallara nispeten hızlı bir şekilde geliştirilmesini, sonuçların hızlı bir şekilde incelenmesini ve dağılımını gerektirmesidir. Bu nitelikteki çalışmalar ise dergilerden ziyade konferanslar tarafından daha iyi ele alınmaktadır ve bu sayede verimlilik artmakta, kitlelere daha etkin ulaşılabilmekte ve yapılan işlerin performansı artmaktadır. == Eğitim == Bilgisayar bilimi nispeten yeni bir alan olduğundan, okullarda ve üniversitelerde diğer akademik alanlar kadar yaygın şekilde öğretilmemektedir. Örneğin, 2014 yılında Code.org, Amerika Birleşik Devletleri'ndeki liselerin yalnızca yüzde 10'unun bilgisayar bilimi eğitimi verdiğini tahmin ediyordu."Computer Science: Not Just an Elective Anymore" . Education Week. February 25, 2014. Computing Machinery (ACM) ve Bilgisayar Bilimi Öğretmenleri Derneği (CSTA) tarafından düzenlenen 2010 raporunda, 50 eyaletten sadece 14'ünün lise bilgisayar bilimi için önemli eğitim standartlarını benimsediği ortaya çıktı."Running On Empty" (PDF). October 2010. Bununla birlikte, bilgisayar bilimleri eğitimi her yıl artan bir şekilde büyümektedir."How to Teach Computational Thinking—Stephen Wolfram Blog" . blog.stephenwolfram.com. Retrieved 2016-09-16. İsrail, Yeni Zelanda ve Güney Kore gibi bazı ülkeler halihazırda ulusal orta öğretim müfredatlarında bilgisayar bilimine yer vermektedirler."A is for algorithm" . The Economist. April 26, 2014."Computing at School International comparisons" (PDF). Retrieved 20 July 2015. Birçok ülke de bu gelişmeyi takip ederek müfredatlarını değiştirmektedir.Scott, Michael; Ghinea, Gheorghita (17 April 2013). Educating Programmers: A Reflection on Barriers to Deliberate Practice (pdf). Proceedings of the 2nd HEA Conference on Learning and Teaching in STEM Disciplines. HEA. pp. 85–90."Adding Coding to the Curriculum" . New York Times. March 23, 2014 Türkiye'de de bu yönde yapılan çalışmalar 2015 yılında bakanlık tarafından duyurulmuştur. Çoğu ülkede bilgisayar bilimleri eğitiminde önemli bir cinsiyet farkı vardır. Örneğin, ABD'de 2012'de bilgisayar bilimleri derecelerinin yaklaşık %20'si kadına verildi."IT gender gap: Where are the female programmers?". Retrieved 20 July 2015. Türkiye'de bu oranlar ise %10 ila %30 civarında değişmektedir. Bu cinsiyet arasındaki uçurum diğer Batı ülkelerinde de bulunmaktadır."IT gender gap: Where are the female programmers?". Bununla birlikte, dünyanın bazı yerlerinde, bu cinsiyet dağılımı dengesizliği küçük veya yok denecek kadar azdır. 2011'de, Malezya'daki bilgisayar bilimleri derecelerinin yaklaşık yarısı kadına verildi."what gender is science" (PDF). Retrieved 20 July 2015. 2001 yılında kadınlar, Guyana'daki bilgisayar bilimleri mezunlarının %54.5'ini oluşturuyordu. == Kaynakça ==