linux ile programlama - seminer.linux.org.tr · katlı verin: yeterince bilgi sahibi olduğunuzu...
TRANSCRIPT
![Page 1: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/1.jpg)
Linux ile Programlama
Linux ile Programlama
Barış [email protected]
Serdar Köylü[email protected]
Linux Kullanıcıları DerneğiLinux Kullanıcıları Derneğihttp://www.linux.org.tr http://www.lkd.org.tr
![Page 2: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/2.jpg)
Linux ile Programlama
Ö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.
![Page 3: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/3.jpg)
Linux ile Programlama
İç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
![Page 4: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/4.jpg)
Linux ile Programlama
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!
![Page 5: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/5.jpg)
Linux ile Programlama
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 Fotoğraf: Rahat bir yazılım geliştirme yazılım geliştirme ortamı.ortamı.
![Page 6: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/6.jpg)
Linux ile Programlama
Eksiler (!)
● Dağınık bileşenler
● Hızlı gelişen/değişen projeler
● Yetersiz dökümantasyon
![Page 7: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/7.jpg)
Linux ile Programlama
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.
![Page 8: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/8.jpg)
Linux ile Programlama
● Ö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.
Gelişen Ortam
![Page 9: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/9.jpg)
Linux ile Programlama
● 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)
Programcı Belgeleri
![Page 10: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/10.jpg)
Linux ile Programlama
Neler var?
CC++Mono/C#
JavaPython
Perl
Lisp
Bash
Awk
SmallTalk
Ruby
Pascal
Kylix
Aleph
Ada
Php
Haskell
OcamlPike
PrologTCL
Mathlab
Octave
Asm
Fortran
![Page 11: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/11.jpg)
Linux ile Programlama
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
![Page 12: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/12.jpg)
Linux ile Programlama
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
![Page 13: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/13.jpg)
Linux ile Programlama
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) runStarting program: /home/baris/a.out Program received signal SIGSEGV, Segmentation fault.0x080483b9 in build_index (ary=0xbffff840) at a.c:2323 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) list15 build_index(intary);16 exit(EXIT_SUCCESS);17 }1819 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)
![Page 14: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/14.jpg)
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...
![Page 15: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/15.jpg)
Linux ile Programlama
Temel libc API
Linux’a özel sistem çağrıları..Sound, apm vs. çağrıları..
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..
![Page 16: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/16.jpg)
Linux ile Programlama
IPC: Interprocess Communication
stdin
stdout
Program
Filesystem
IPC
signal
File I/O
msg.que
semaphoreMemory
Threads
SharedMemory
sh.mem
![Page 17: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/17.jpg)
Linux ile Programlama
Source
Library
Obj
Derleyici
+ Program
Bağlayıcı
Debugger
Editör
Bir Programın Hayatı
![Page 18: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/18.jpg)
Linux ile Programlama
UDE
Unintegrated Development Environment
Delikanlı Programcının Geliştirme Ortamı ;)
Editör(Source)
Editör(Makefile)
manpagett
y0
tty1
tty2 tty3 tty4
Compiler(gcc)
Debugger(gdb)
![Page 19: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/19.jpg)
Linux ile Programlama
IDE: Kdevelop
![Page 20: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/20.jpg)
Linux ile Programlama
![Page 21: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/21.jpg)
Linux ile Programlama
![Page 22: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/22.jpg)
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
![Page 23: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/23.jpg)
Linux ile Programlama
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.
![Page 24: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/24.jpg)
Linux ile Programlama
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.
![Page 25: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/25.jpg)
Linux ile Programlama
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.
![Page 26: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/26.jpg)
Linux ile Programlama
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 :)
![Page 27: Linux ile Programlama - seminer.linux.org.tr · Katlı verin: Yeterince bilgi sahibi olduğunuzu düşündüğünüzde katkınızı ortaya koyun. Linux ile Programlama ... pek çok](https://reader031.vdocuments.pub/reader031/viewer/2022022008/5adeae567f8b9afd1a8baf50/html5/thumbnails/27.jpg)
Linux ile Programlama
Biz de eğlenelim!
SohbetSohbet&&
SorularSorular