Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN



Benzer belgeler
Bölüm 1. Ön Hazırlıklar ISBN

Bölüm1. İlk Bilgiler ISBN

5. PROGRAMLA DİLLERİ. 5.1 Giriş

Konular. Hafta 1 BLG339 PROGRAMLAMA DİLİ KAVRAMLARI

Bilgisayarda Programlama. Temel Kavramlar

PROGRAMLAMA DİLLERİ. Programlama Dilleri Programlama Dillerinin Önemi Dilleri Sınıflandırılması Anlambilim BNF Notasyonu Kontrol Deyimleri

1.1. Yazılım Geliştirme Süreci

Bilgisayar Programlama Dilleri

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu

GÖRSEL PROGRAMLAMA - I

PROGRAMLAMA TEMELLERİ

Bahar. BM 211 Programlama Dilleri 3 1

Dr. Fatih AY Tel: fatihay@fatihay.net

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

BLM210 HAFTA 1 INTRODUCTION (GİRİŞ)

1) Programlama dillerinin temel kavramlarını öğrenir. 1,2,4 1

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Java Temel Özellikleri

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

C# nedir,.net Framework nedir?

Öğr. Gör. Serkan AKSU 1

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

BİLGİSAYAR ORGANİZASYONU

Windows Programlama Güz Dönemi

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Program Nedir?(1) Programlamaya Giriş

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

BÖLÜM 1: PROGRAMLAMAYA GİRİŞ

Bölüm 5. Adlar(Names), Bağlamalar(Binding s),tip Kontrolleri (Type Checking), ve Etki Alanları ( Scopes) ISBN

BİL1001 Bilgisayar Bilimlerine Giriş 1

C #

4. Bölüm Programlamaya Giriş

Ünite-3 Bilgisayar Yazılımı.

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Bölüm 2. Ana programlama dilerinin evrimi ISBN

ALGORİTMA VE PROGRAMLAMA I

BİL 458 Web Programlama dersi. Yrd. Doç. Dr. Murat YEŞİLYURT

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Programlama Dilleri (COMPE 325) Ders Detayları

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 1. Bölüm C# Programlamaya Giriş

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

BİL-142 Bilgisayar Programlama II

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

PROGRAMLAMA DİLLERİ. Teknoloji Fakültesi Bilgisayar Mühendisliği Öğr.Gör. Günay TEMÜR. Öğr.Gör.Günay TEMÜR

Programlama Dilinin Özellikleri

Programlama Dilleri II. Bilgisayar ve Öğretim Teknolojileri Öğretmenliği

Bölüm 6. Veri Türleri ISBN

Bölüm 5. İsimler, Bağlama, Tür Kontrolü ve Kapsam(Etki Alanı) ISBN

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

İfadeler bir programlama dilinde hesaplamaları belirtmede temel araçtır. İfadelerin değerlendirmesini anlamak için,

Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir?

Nesne Yönelimli Programlama

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

BIM Bahar Programlama Dilleri

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ

Bilgisayar Programlama. 1.Hafta

Bölüm 9. Altprogramlar ISBN

1.PROGRAMLAMAYA GİRİŞ

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Yordamsal Tabanlı Programlama

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Bilgisayarın Yapıtaşları

Bilgisayar Mühendisliği ve Yeni Teknolojiler. İbrahim SARAÇOĞLU

YZM 2116 Veri Yapıları

BIM Bahar Programlama Dilleri

Ruby Nedir? 1.1 Amaçlar. 1.2 Ruby nin Yapısal Sıradüzeni

Bağlama (Binding) Kavramı

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

JAVASCRIPT JAVASCRIPT DİLİ

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

Programlama Dillerinde Kullanılan Veri Tipleri

BLM 4811 MESLEKİ TERMİNOLOJİ II Salı , D-109 Dr. Göksel Biricik

C++ Dersi: Nesne Tabanlı Programlama

Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks ve semantik bir dilin tanımı sağlar

EĞİTİM ÖĞRETİM MÜNEVVER ÖZTÜRK ORTAOKULU II. DÖNEM BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ DERS NOTLARI

Konular. Hafta 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Bölüm 7. İfadeler ve atamalar ISBN

Bilgisayar Mimarisi Nedir?

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

BMT 101 Algoritma ve Programlama I Güz Dönemi. Yük. Müh. Köksal Gündoğdu 1

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Algoritma ve Programlamaya Giriş. Mustafa Kemal Üniversitesi Kırıkhan Meslek Yüksekokulu Bilgisayar Teknolojileri Bölümü

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Göstericiler (Pointers)

Üst Düzey Programlama

YAZILIM KAVRAMINA BİR BAKIŞ. Gürcan Banger Elektrik Yük. Müh. ESOGÜ - 9 Nisan 2007

Transkript:

Bilgisayar Mühendisliğine Giriş Yrd.Doç.Dr.Hacer KARACAN

PROGRAMLAMA DİLLERİ Programlama Dilleri ni neden öğrenmeliyiz? Programlama alanları Dil değerlendirme kriterleri Dil tasarımı üstündeki etkiler Dil kategorileri Gerçekleştirim metodları Programlama ortamları

Programlama Dilleri ni neden öğrenmeliyiz? Fikirlerimizi ifade etmemizi kolaylaştırır. Uygun dil seçmek için konuyla ilgili altyapımızı sağlamlaştırır. Yeni dil öğrenme becerimiz artar. Gerçekleştirimin (implementation) önemini kavramamızı sağlar. Bilgisayar programlama çalışmalarımızda çok daha başarılı olmamızı sağlar.

Programlama Alanları (Programming Domains) Bilimsel uygulamalar Çok sayıda kayan nokta (floating-point) hesaplamaları Fortran İş yaşamı uygulamaları Rapor oluşturma COBOL Yapay zeka Sayılar yerine sembollerle yapılan hesaplamalar LISP Sistem programlama Sürekli kullanımdan ötürü hızlı bir sistem yaratılması C Web yazılımları Birçok dilin derlenmiş koleksiyonu: markup (örn. XHTML), scripting (örn. PHP), genel amaçlı (örn. Java)

Dil Değerlendirme Kriterleri (Language Evaluation Criteria) Okunabilirlik (Readability): O dille yazılan bir programın okunmasının kolay ve anlaşılırlığının yüksek olması gereklidir. Yazılabilirlik (Writability): Program yaratmak için dilin kolaylıkla kullanılabiliyor olması gereklidir. Güvenilirlik (Reliability): Dilin beklentilere ve standartlara uygun olması gereklidir. Maliyet (Cost): Faydası maliyetinden yüksek olmalıdır.

Değerlendirme Kriterleri: Okunabilirlik Overall Simplicity Yönetimi kolay özellikler/yapılar bulunması Aynı operasyonlar için farklı farklı özelliklerin/yapıların bulunmaması Operatör yüklemelerinin en az seviyede olması Orthogonality Az sayıda ilkel/basit yapıların yine az sayıda yöntem kullanılarak birleştirilmesi Her kombinasyonun doğru (legal) olması Control statements İyi organize edilmiş kontrol deyimlerinin bulunması (örn., while deyimi) Data types and structures Veri yapılarının iyi tanımlanmış olması Syntax considerations Karmaşık ifadelerin oluşturulması için belirli özel deyimlerin kullanılması Anlamlı anahtar sözcükler ve anlaşılabilir yapılar kullanılması

Değerlendirme Kriterleri: Yazılabilirlik Simplicity and orthogonality Az sayıda ilkel/basit yapıların yine az sayıda kural kullanılarak birleştirilmesi Support for abstraction Karmaşık yapıların ya da operasyonların,gereksiz detayları göz ardı etmeye olanak sağlayacak şekilde, tanımlanabilmesi ve kullanılabilmesi Expressivity Operasyonları ifade etmek için uygun deyimler bulunması Örn: for deyiminin tüm modern dillere eklenmesi

Değerlendirme Kriterleri: Güvenilirlik Type checking Yazım hatalarına karşı testleri yapılmış olmalı Exception handling Yürütme süresi (run-time) hataları önlenmeli, önlenemediği durumlarda ise program tarafından düzeltilip çalışmaya devam edilmeli Aliasing Aynı hafıza lokasyonu için iki veya daha fazla sayıda ayrı referans metodunun bulunması Readability and writability Bir programı yazmak ve kodunu anlamak ne kadar kolaysa, doğru olarak çalışma şansı da o kadar yüksek olacaktır.

Değerlendirme Kriterleri: Maliyet Maliyet için gözönüne alınması gerekenler: Dili kullanabilmeleri için programcıların eğitilmesi Programların yazılması Programların derlenmesi (compile) Programların çalıştırılması (execute) Programın hayata geçirilmesi: ücretsiz derleyicilerin (compiler) bulunması Güvenilirlik düşük güvenilirlik yüksek maliyet demektir Program güncellemelerinin ve olası değişikliklerin uygulanması

Diğer Değerlendirme Kriterleri Portability Programların bir uygulamadan diğerine geçişlerinin kolay olması Generality Çok sayıda uygulama alanı olması Well-definedness Dilin bütünlük ve kesinlik içeren bir tanımlamasının bulunması

Dil Tasarımı Üzerindeki Etkiler Bilgisayar Mimarisi Programlama dilleri yaygın bilgisayar mimarisine (von Neumann) uygun olarak geliştirilir Programlama Metodolojileri Yeni yazılım geliştirme metodolojileri (örn. nesne yönelimli yazılım geliştirme) yeni programlama metodlarının ve dolayısıyla yeni programlama dillerinin ortaya çıkmasını sağlar

Bilgisayar Mimarisinin Etkileri En bilinen bilgisayar mimarisi: Von Neumann Veri ve programlar hafızada saklanır Hafıza CPU dan ayrıdır Komutlar ve veriler hafızadan CPU ya aktarılır Bu mimariye uygun baskın dillerin özellikleri Değişkenler hafıza hücrelerinin birer modelidir Atama ifadeleri (assignment statements) veri aktarımının birer modelidir İterasyonlar verimlidir

von Neumann Mimarisi

Von Neumann Bottleneck Bir bilgisayarın hafızasıyla işlemcisi arasındaki bağlantı hızı bilgisayarın hızını belirler Program yönergeleri genellikle bu bağlantı hızından çok daha hızlı bir şekilde çalıştırılır ve bu sebeple bilgisayarın hızı bir darboğaz (bottleneck) haline gelir Bu durum von Neumann darboğazı olarak adlandırılır ve bilgisayarın hızıyla ilgili temel sınırlama faktörüdür

Programlama Metodolojilerinin Etkileri 1950 ler ve 1960 ların başı: Basit uygulamalar; Makine verimliliğine yönelik kaygılar 1960 ların sonu: İnsan verimliliği; okunabilirlik ve daha iyi kontrol yapıları önem kazandı Yapısal (structured) programming Yukardan-aşağıya (top-down) tasarım ve adım-adım düzenleme 1970 lerin sonu: Süreç-tabanlı tasarımlardan veri-tabanlı tasarımlara geçiş Veri soyutlama (data abstraction) 1980 lerin ortaları: Nesne yönelimli programlama Veri soyutlama + kalıtım + polimorfizm

Programlama Dili Kategorileri Imperative Merkez yapıyı değişkenler, atama ifadeleri ve iterasyon oluşturur Örn: C, Pascal Functional Verilen parametrelere fonksiyonları uygulayarak hesaplamalar yapma temeline dayanır Örn.: LISP, Scheme Logic Kural-tabanlı (Rule-based) Örn: Prolog Object-oriented Veri soyutlama, kalıtım Örn: Java, C++ Markup Programlama dili değil, dokumanların genel gorunumlerini düzenlemek amacıyla kullanılır Örn: XHTML, XML

Programlama Dilleri Tasarımı Güvenilirlik X Yürütme giderleri Örn: Java tüm dizi elemanlarının referanslarının düzgün indexleme için kontrol edilmesini talep eder ama bu yürütme giderlerini arttıran bir durumdur Okunabilirlik X Yazılabilirlik Örn: APL karmaşık programların yazılabilirliği arttırmak için birçok güçlü operatör ve çok sayıda yeni sembol sunar ancak bu durum programların okunabilirliğini ciddi şekilde düşürür Yazılabilirlik X Güvenilirlik Örn: C++ işaretçileri oldukça güçlü ve esnek bir yapıdadır ancak güvenilir bir biçimde kullanılmaları zordur

Gerçekleştirim Metodları Derleme (Compilation) Programlar makine diline çevrilir Yorumlama (Interpretation) Programlar bir yorumlayıcı (interpreter) vasıtasıyla yorumlanır Hibrid gerçekleştirim sistemleri Derleyiciler ve yorumlayıcıların birlikte kullanımı

Derleme (Compilation) Üst-seviye programı (kaynak dili) makine koduna (makine dili) çevirir Çevirim yavaş, yürütme hızlıdır Derleme işleminin birçok fazı bulunmaktadır: Sözcüksel (lexical) analiz: kaynak program içindeki karakterleri sözcüksel birimlere dönüştürür Sözdizim (syntax) analizi: sözcüksel birimleri programın sözdizimsel yapısını ifade eden ayrıştırma ağaçlarına (parse tree) dönüştürür Anlambilim (semantics) analizi: orta seviye program kodunu üretir Kod üretme: makine kodu üretilir

Yorumlama (Interpretation) Çeviri yoktur Programların gerçekleştirimini kolaylaştırır (yürütüm aşaması hataları kolaylıkla ve vakit kaybetmeden görüntülenir) Daha yavaş çalışır (derlenen programlardan 10 ila 100 kat daha yavaştır) Genellikle geniş hafıza alanına ihtiyaç duyar Üst-seviye dillerde kullanımı yaygın değildir Bazı web scripting dilleriyle (örn. JavaScript) ciddi bir geridönüş yapmıştır

Hibrit Gerçekleştirim Sistemleri Derleyiciler ve yorumlayıcıların birlikte kullanımı Yüksek-seviyeli bir dille yazılan program kolayca yorumlanmasını sağlayacak orta-seviye bir dile çevrilir Tek başına yorumlama sürecinin işlediği durumlardan daha hızlıdır Örnek: Perl programları hataları yakalayabilmek için yorumlanmadan önce kısmen derlenir Java dilinin ilk uygulamaları hibrit bir gerçekleştirim sistemi kullanıyordu; orta-seviye form (byte kod) byte kod yorumlayıcısı ve run-time sistemi olan her makinede (Java Virtual Machine) programın çalışmasını sağlıyordu.

Just-in-Time Gerçekleştirim Sistemleri Başlangıçta programları orta-seviye bir dile çevirir Daha sonra bu dili makine koduna derler (compilation) Makine kodu versiyonu daha sonraki çağrılar için saklanır JIT sistemleri Java programları için sıklıkla kullanılır.net dilleri de JIT sistemleriyle gerçekleştirilir

Programlama Ortamları Yazılım geliştirmek için kullanılan araçların oluşturduğu bir koleksiyon olarak tanımlanabilir. UNIX Eski bir işletim sistemi ve araç koleksiyonu Günümüzde genellikle UNIX üzerinde çalışan bir GUI (e.g., CDE, KDE, or GNOME) ile kullanılır Borland JBuilder Java dili için geliştirme ortamıdır Microsoft Visual Studio.NET Geniş, karmaşık bir görsel ortamdır C#, Visual BASIC.NET, Jscript, J#, ve C++ dilleriyle yazılan programlarda kullanılır

Özet Programlama dillerini öğrenmek birçok açıdan yararlıdır Farklı yapıları kullanmamızı kolaylaştırır Uygun programlama dilini kolaylıkla seçmemize yardımcı olur Yeni bir programlama dili öğrenmemizi kolaylaştırır Bir programlama dilini değerlendirmek için en önemli kriterler: Okunabilirlik, yazılabilirlik, güvenilirlik, maliyet Programlama dilleri üzerindeki temel etkileri makine mimarisi ve yazılım geliştirme metodolojileri yapmaktadır Programlama dillerini gerçekleştirmek için ana metodlar şunlardır: Derleme Yorumlama Hibrit gerçekleştirim sistemleri