Linux ile Programlama



Benzer belgeler
A. Murat Eren. VI. Linux ve Özgür Yazılım Şenliği

Qt ile Bir Ağ Uygulaması

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Compiere Açık kodlu ERP + CRM yazılımı. Hüseyin Ergün Önsel Armağan Serkan Demir

Düzenli İfadeler & Kullanım Alanları

Düzenli İfadeler & Kullanım Alanları

REALTIME LINUX. 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara

Nasıl Pardus Geliştiricisi Olunur?

Linux Assembly Programlamaya Giriş

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

Linux ve Windows Üzerinde C ve C++ Kullanımı

QT Eğitimi - 4 : İkili Saat (Binary Clock)

Bilgisayarda Programlama. Temel Kavramlar

ALGORİTMA VE PROGRAMLAMA I

Bilgisayar Programlama Dilleri

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

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

LKD Kendi İlacını Kullanıyor

Dr. Fatih AY Tel: fatihay@fatihay.net

Açık Kaynak Kodlu Yazılım

Ruby On Rails. Hüseyin Gömleksizoğlu

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

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi

Karma C/C + + Kodlama

Bölüm1. İlk Bilgiler ISBN

PROGRAMLAMA TEMELLERİ

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

Programlama Dilinin Özellikleri

Özgür Yazılım Proje Yönetimi

PostgreSQL Veritabanı Sunucusu Devrim GÜNDÜZ.

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

BİLGİSAYAR ORGANİZASYONU

I. Oturum: GNU/LINUX A GİRİŞ

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

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

C++ Dersi: Nesne Tabanlı Programlama

QT Eğitimi - 2 :Yerleşim (Layout)

Sınav tarihi : Süre : 60 dak.

INTEGER OVERFLOW ***************************************************************/

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Özgür Yazılım Lisansları

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması

C Programlama Dili'ne Giriş

Linux Terminal Sunucusu. Afşin Taşkıran

GNU/Linux ve Özgür Yazılım. Mahir B. Aşut EkoPC Kurucu Ortağı ve Yöneticisi, LKD Üyesi

Web Programlama Kursu

INF101 Bilgisayar Mühendisliğine Giriş 09/12/ Programlama Dilleri

Windows Programlama Güz Dönemi

5. PROGRAMLA DİLLERİ. 5.1 Giriş

Finans Dünyasında Linux ve Özgür Yazılımlar

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.

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Bahar. BM 211 Programlama Dilleri 3 1

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

Akademik Uygulamalar ve Linux. Fatih Mehmet AVCU İnönü Üniversitesi Enformatik Bölümü

Bilgisayar Sistemlerine Genel Bakış

FreeBSD Nedir? Ömer Faruk Şen EnderUNIX.ORG Core Team Üyesi

Teknikleri. Önsöz. iskender atasoy

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

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

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

Bilgi Güvenliği Denetim Sürecinde Özgür Yazılımlar. Fatih Özavcı Bilgi Güvenliği Danışmanı

4. Bölüm Programlamaya Giriş

2. Bölüm Programlama Bilgisi

Python ile Programlamaya Giriş DERS 1: PYTHON YÜKLENMESİ VE GENEL BİLGİLER DR. HÜSEYİN BAHTİYAR

Java Temel Özellikleri

Mantıksal Hacim Yönetimi (LVM)

Python GELECEK. Barış Metin Linux Sistemleri. Python Programlama Dili

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

Başlık: Windows Sistem Yöneticisi Yardımcısı

AÇIK KAYNAK KODLU İŞLETİM SİSTEMLERİ DERS NOTLARI 1-İşletim Sisteminin görevi nedir? En çok kullanılan işletim sistemleri nelerdir?

Özgür Yazılım, İş ve Kariyer Modelleri. Mahir B. Aşut EkoPC Kurucu Ortağı ve Yöneticisi, LKD Üyesi

Linux e Giriş ve Dağıtımlar

Java Programlamaya Giriş

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

Neden Linux ve Java Birlikte İyi Gidiyor? Bora Güngören Portakal Teknoloji Akademik Bilişim 07, Kütahya

Bilgi güvenliği konusunda farkındalık yaratmak. Mobil cihazlardaki riskleri anlatmak. Mobil uygulamaların bilgi güvenliği açısından incelemek 2

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

Program Nedir?(1) Programlamaya Giriş

TCMB Deneyim Raporu. Kurumsal Java Uygulama Platformu. Sacit Uluırmak. Türkiye Cumhuriyet Merkez Bankası Sistem Araştırma ve Planlama Müdürlüğü

Açık Kaynak Kodlu Yazılım Geliştirme Ortamı ve Araçları

Wikipedia'nın Kardeş Projeleri. Özlem Özgöbek

Linux un Temel Bileşenleri. Linux Nedir? Aydın ÜSTÜN (Selçuk Üniversitesi) e-posta:

1.1 Metodolojiyi Gerçeklemek Üzere Geliştirilen Altyapı

GÖRSEL PROGRAMLAMA - I

Özgür Yazılım ve GNU/Linux'a Giriş

Yazılım Mühendisliği Bölüm - 3 Planlama


Derleme Make Hata Ayıklama

ALGORİTMA VE PROGRAMLAMA I DERS#3

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

C# nedir,.net Framework nedir?

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

İnternet Programcılığı

Bağlama (Binding) Kavramı

Selçuk Akyıldız. Kişisel Bilgiler. Eğitim Bilgileri 1 / 5. Adres Bilgileri

BİL1001 Bilgisayar Bilimlerine Giriş 1

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Transkript:

Linux ile Programlama Linux Kullanıcıları Derneği http://www.linux.org.tr http://www.lkd.org.tr Barış Metin baris@uludag.org.tr Serdar Köylü serdar@uludag.org.tr

Özgürsünüz! Bu belgeyi, Free Software Foundation tarafından yayınlanmış bulunan GNU Özgür Belgeleme Lisansının 1.2 ya da daha sonraki sürümünün koşullarına bağlı kalarak kopyalayabilir, dağıtabilir ve/veya değiştirebilirsiniz. Lisans'ın bir kopyasını http://www.gnu.org/copyleft/gfdl.html adresinde bulabilirsiniz. Bu belgedeki bilgilerin kullanımından doğacak sorumluluklar ve olası zararlardan belge yazarı sorumlu tutulamaz. Bu belgedeki bilgileri uygulama sorumluluğu uygulayana aittir. Tüm telif hakları aksi özellikle belirtilmediği sürece sahibine aittir. Belge içinde geçen herhangi bir terim, bir ticarî isim ya da kuruma itibar kazandırma olarak algılanmamalıdır. Bir ürün ya da markanın kullanılmış olması ona onay verildiği anlamında görülmemelidir.

İçerik Programlama Linux ortamında programcı Dezavantajlar Diller/Ortamlar Kütüphaneler Yardımcı araçlar Özgür yazılım projelerine ilk adımlar

Programlama Bilgisayara işi nasıl yapacağını anlatmaktır. Bilgisayar aptaldır! Bir işi aptal a anlatırsanız, kendiniz de daha iyi anlarsınız ;). (işi kavrayışınızdaki muğlaklığı, ortadan kaldırırsınız) Tembelliktir! Eğlencedir!

Linux: Programcının Evi Bilgi birikimi: Belgeler ve kaynak kod... Tam donanımlı araçlar. Esnek yapı. Binlerce programcı ortağınız/arkadaşınız. Fotoğraf: Rahat bir yazılım geliştirme ortamı.

Eksiler (!) Dağınık bileşenler Hızlı gelişen/değişen projeler Yetersiz dökümantasyon

Dağınık Bileşenler Küçük, becerikli bileşenler çok. Bileşenleri birleştirmek zevkli, fakat ilk adımı atmayı zorlaştırıyor. Programlama ortamının gücünü de bu bileşen bolluğu sağlıyor. Bütünleşik geliştirme ortamları mevcut.

Gelişen Ortam Özgür yazılım geliştiricileri çalışkan. Ortam yaşıyor, sürekli gelişiyor. Geriye uyumluluk büyük oranda korunuyor. Fakat son teknolojiyi yakalamak bilgi, deneyim ve çaba istiyor.

Programcı Belgeleri Programcıya yol gösterici belgeler, örnekler, vs. çok. Çalışma ortamları, kütüphaneler, genellikle çok iyi belgeleniyor. Fakat bazı durumlarda belgeler geliştirmenin hızını yakalayamıyor. Gelişimi takip etmek için en iyi yol geliştirmenin içinde olmak (e-posta listeleri, CVS). Kısaca: Ekmek yoksa pasta yiyin! (Döküman yoksa kodu okuyun)

Neler var? Ruby Mono/C# Pascal Ada Php Aleph Pike Kylix TCL C Haskell C++ Fortran Ocaml Python Java Perl Mathlab Bash Octave Lisp Awk Asm SmallTalk Prolog

Hangi Dil? C++ 13.529 C 13.446 Java 12.096 PHP 9.047 Perl 5.553 Python 3.256 Visual Basic 1.842 JavaScript 1.743 Delphi/Kylix 1.475 UnixShell 1.472

GNU Compiler Collection C den daha fazlasını derler C, C++, Objective C, GCC (çeşitli C lehçeleri ), Fortran, Pascal, Modula-3, Ada... gcc : C stili bağlama ile derler g++: C++ stili bağlama ile derler GCC modülerdir Önişleme (cpp) Derleme (gcc) Object code (gas) Bağlayıcı (ld) gcc -E gcc -S gcc -c

Hata Ayıklamak GDB üst seviye bir hata ayıklayıcıdır (debugger). /* a buggy code to debug */ #include <unistd.h> #include <stdlib.h> #define BIGNUM 5000 void build_index(int ary[]); int main(void) { int intary[100]; build_index(intary); exit(exit_success); } void build_index(int ary[]) { int i; for(i = 0; i < BIGNUM; ++i) ary[i] = i; } baris@evliya:~$ gdb -q a.out (gdb) run Starting program: /home/baris/a.out Program received signal SIGSEGV, Segmentation fault. 0x080483b9 in build_index (ary=0xbffff840) at a.c:23 23 ary[i] = i; (gdb) backtrace #0 0x080483b9 in build_index (ary=0xbffff840) at a.c:23 #1 0x08048385 in main () at a.c:15 (gdb) list 15 build_index(intary); 16 exit(exit_success); 17 } 18 19 void build_index(int ary[]) 20 { 21 int i; 22 for(i = 0; i < BIGNUM; ++i) 23 ary[i] = i; 24 } (gdb) print i $1 = 496 (gdb) Linux ile Programlama

Kütüphaneler Programcı için gerekli altyapı büyük oranda kütüphaneler ile sağlanır. Temel Libc API Yarcımcı Kütüphaneler Ağ haberleşmesi, Veri saklama, Text Arabirim, Grafik Arabirim, Alt seviye donanım,... libxml2, libxmlrpc, libcgi, libpam-*, libldap2, gettext, glib, libpq, libwww, libace,libapr, libdb, libdiscover, gtk/gnome, qt/kde, libsnmp, libssl, libusb, newt, ncurses, AAlib, libtermcap, libcurl...

Temel libc API POSIX Uyumlu Sistem çağrıları.. syscall, ioctl, stat, fstat.. BSD & SVRv4 Uyumlu Sistem çağrıları.. memcpy, lstat, bcopy ANSI-C Uyumlu Sistem çağrıları.. Calloc, printf, sprintf, fopen, readdir, system.. Linux a özel sistem çağrıları.. Sound, apm vs. çağrıları..

IPC: Interprocess Communication Program signal stdin Memory Threads msg.que semaphore sh.mem IPC File I/O Shared Memory Filesystem stdout

Bir Programın Hayatı Derleyici Source Editör Obj Bağlayıcı + Program Library Debugger

UDE Unintegrated Development Environment tty0 tty1 tty2 Editör (Source) Editör (Make file) man page tty3 Compiler (gcc) tty4 Debugger (gdb) Delikanlı Programcının Geliştirme Ortamı ;)

IDE: Kdevelop Linux ile Programlama

Yardımcı Araçlar Sürüm Yönetimi: RCS, CVS, Subversion Hata takip: Bugzilla, Gnats, debbugs Program gözatıcı: cbrowser, cscope, exuberant-ctags, cflows Program kontrolcü: valgrind, splint, pscan Derleme: make, ccache, autotools Çağrı takip: strace, ltrace Dökümantasyon: doxygen, cxref

Nasıl katılacağız? Dinleyin: e-posta listeleri, irc kanalları, sunumlar, toplantılar İnceleyin: Topluluğu inceleyin, yaşam şartlarını öğrenin Okuyun: Belgeleri ve kaynak kodları okuyun. Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun.

Nasıl Katılacağız? (2) Proje üzerindeki tartışmaları araştırın. Proje (kaynak kod) organizasyonunu inceleyin: Dizin yapısı proje hakkında pek çok bilgi verebilir. Nasıl yapmışlar sorusunun yanıtı çoğu zaman kaynak koddan geçer. Programı derleyin, çalıştırın: Derleyici uyarıları, sistem çağrılarının analizi, oluşturulan çalıştırılabilir kodu incelemek pek çok fikir verebilir. Büyük projeleri yalnızca (küçük) bir bölümünü inceleyerek düzenleyebilirsiniz. Yazım stillerini dikkate alın.

Nasıl Katılacağız? (3) Özgür yazılımlarda kimsenin sorumlu olmadığını bilin. Kimseyi yaptıklarından/yapmadıklarından dolayı suçlamayın. X özelliği ne zaman eklenecek? sorusu çoğu zaman yanıtsız kalabilir. Sorunun cevabını kendiniz vermeye çalışın Topluluk hakkında sürekli bilgi toplayın. Güncel haber sitelerini takip edin, topluluğun bir üyesi olun. Diğerleri ile sürekli iletişim içinde olun. Tek başınıza işe başlamayın.

Nasıl Katılacağız? (4) Bulduğunuz hataları bildirin ve takip edin. Bildirilmiş hataları inceleyin. Düşüncelerinizi paylaşın Bir hatayı gözünüze kestirin ve kolları sıvayın. Size saldırılacak! Bunu bilin ve kabuğunuzu kalınlaştırın. Topluluğu inceledikten sonra kimlerden yapıcı eleştiriler alacağınızı öğreneceksiniz, önemseyin. Tüm eleştirileri de dikkate alın. Herkes gibi, eğlenin :)

Biz de eğlenelim! Sohbet & Sorular