• Hack kategorilerindeki birçok içerik Gizli içeriktir yani sadece cevap yazarakı erişebileceğiniz türden içeriklerdir, ancak yeni üyelerin hack kategorilerine cevap yazması engellenmiştir ! spam ve sömürüye karşı bir tedbirdir, forumumuza katkı sunarsanız rütbeniz kısa sürede yükselir ve tüm forumu engelsiz kullanabilirsiniz.

Hacker Olmak Yada Olmamak -2-

llegalYaşam

HEKIR LEMIR
Temel Yazılım Kotarma Becerileri
Üstat davranış biçimleri önemlidir, ama gerekli becerilere sahip olmak daha da önemlidir. Davranış biçimi, yetkinliğin yerini tutamaz ve sahip olmadığınız müddetçe kimsenin size üstat demeyi hayal bile etmeyeceği bazı temel beceriler vardır:
Teknoloji değiştikçe bu beceri kümesi de zaman içinde değişmektedir. Örneğin önceleri makina dilinde programlama yapabilmek önemli idi ve yakın zamana kadar HTML bilmek önemli bir beceri değildi.
Şu sıralarda, üstat olmak için gerekli temel beceri listesi şunlardan oluşmaktadır:
Program yazmayı öğrenin.
Bu, elbette ki üstat olmak için temel önşarttır. Eğer bir programlama dili bilmiyorsanız, size Python ile başlamanızı öneririm. Python, tasarımı temiz, belgelendirmesi iyi yapılmış ve yeni başlayanlara kolaylık tanıyan bir dildir. Öğrenebilecek ilk dil olarak iyi bir seçim olmasına rağmen, oyuncak değil, güçlü ve esnek bir dildir ve büyük projeler geliştirmek için de çok uygundur.Bu konuyla ilgili "Python' da gelişim" adında daha ayrıntılı bir yazı yazmıştım. Python ile ilgili iyi öğretici belgeler Python web sitesinde bulunabilir.
Java da programlamayı öğrenmek için iyi bir dildir. Python'dan daha zordur ama ürettiği kod daha hızlıdır. İkinci dil olarak öğrenebilecek en iyi dil olduğunu düşünüyorum. Ne yazık ki, Sun'ın referans uygulamaları hala tescillidir. Bu Java dilinin kendisiyle çok fazla ilgili bir konu değildir; yüksek kaliteli, açık-kaynak kodlu Java yorumlayıcılar mevcuttur, esas problem Java ile birlikte gelen sınıf kütüphaneleridir. Açık kaynak kodlu sınıf kütüphaneleri Sun'ın kütüphanelerinin gerisinde kalmaktadır. Eğer Java öğrenmeye karar verirseniz bunu Sun'ın tescilli kodlarına bağımlı kalmak yerine açık-kaynak kodlu uygulamalar ile yapın.
Ancak, sadece bir veya iki dil öğrenerek tam bir programcı olamayacağınızı ya da üstat seviyesine ulaşamayacağınızı da bilmeniz gerekiyor. Herhangi bir dilden bağımsız olarak programlama problemleri hakkında düşünmeyi öğrenmelisiniz. Gerçek bir üstat olabilmek için, yeni bir dili, el kitabında yazanlarla, bildiklerinizi bağdaştırarak bir kaç gün içerisinde öğrenebilir durumda olmalısınız. Bu, birbirinden çok farklı bir kaç dil bilmeniz gerektiği anlamına geliyor.
Eğer ciddi programlamaya girecekseniz, Unix'in ana dili olan C'yi öğrenmelisiniz. C++, C ile alakalıdır; birini öğrenirseniz, diğerini öğrenmek zor olmayacaktır. Her iki dil de, ilk dil olarak öğrenmek için uygun değildir ve C programlamasından ne kadar kaçınırsanız, veriminiz o kadar artar.
C, kaynak kullanımında tutumlu ve verimli bir dildir. Maalesef, C, bu verimliliği, pek çok kaynağın (bellek gibi) yönetimini doğrudan size bırakarak elde eder. Bu düşük seviyeli (donanıma yakın) kodlama karmaşık ve hataya açıktır ve hata ayıklamak için pek çok zamanınıza mal olur. Makinaların güçlü olduğu günümüzde, makinanın çalışma verimliliği yerine sizin çalışma verimliliğinize öncelik tanıyan bir dil ile program yazmak daha akıllıca olacaktır. Sonuç olarak Python'u tercih etmenizi öneririm.
Perl ve LISP gibi bazı diller üstatlar için özel bir önem taşır. Perl öğrenmek pratik sebeplerden dolayı önemlidir. Dinamik web sayfalarında ve sistem yönetiminde çok yaygın bir şekilde kullanılır. Hiç Perl kodu yazmayacak olsanız dahi okumasını öğrenmelisiniz. C'nin makine verimliliğine ihtiyaç duyulmayan işlerde C kullanmaktan imtina eden birçok kişi, size Python'u önerdiğim nedenlerle Perl'ü kullanır. Onların yazdıkları kodları anlamanız gerecektir.
LISP öğrenmek başka bir sebepten dolayı önemlidir - sonunda anladığınız zaman elde edeceğiniz aydınlanma deneyiminden dolayı. Bu deneyim, bir daha hiç LISP kullanmasanız dahi, hayatınızın kalan kısmında çok daha iyi bir programcı olmanızı sağlayacaktır. (Emacs metin düzenleyicisi için basit düzenleme modları yazarak ya da varolanları değiştirerek veya GIMP için Script-Fu eklentileri yazarak küçük LISP deneyimleri kazanabilirsiniz.)
En iyisi, bahsettiğim bu beş dilin (Python, Java, C/C++, Perl ve LISP) hepsini öğrenmektir. Bu diller, en önemli kotarım dilleri olmalarının yanında, programlamaya farklı yaklaşımlarıyla size önemli bir eğitim kazandırır.
Google'ın en önemli üstatlarından ve yaygın olarak kullanılan AI kitabının yazarlarından biri olan Peter Norvig On Yılda Programlama Öğrenin başlıklı harika bir deneme yazdı."Programcılıkta başarı için tavsiyeleri" dikkate değerdir.
Size burada nasıl programlama yapılacağına dair tam bir yönerge listesi sunamam ama, bunu kitapların ve kursların da vermeyeceğini söyleyebilirim (en iyi üstatların büyük çoğunluğu kendi kendine öğrenmiştir). Dil özelliklerini -- bilginin küçük bir kısmı -- kitaplardan öğrenebilirsiniz, ama o bilgiyi yaşayan bir beceri haline getiren şey, pratik yapmak ve çıraklıktır. Bunu da, program okumak ve program yazmak ile edinirsiniz.
Programlamayı öğrenmek, bir doğal dilde iyi yazmayı öğrenmek gibidir. En iyi yöntem, bu işin ustalarının yazdıklarını okumak, kendiniz bir şeyler yazmak, biraz daha okumak, biraz daha yazmak... Ve yazdıklarınız, örnek aldıklarınızda gördüğünüz kuvvet ve iktisadı gösterene kadar tekrar etmektir.
Önceleri okumak için iyi kod bulmak zordu, çünkü üstatlık yolunda ilerlemek isteyenlerin kaynak kodlarını okuyabileceği ve üzerinde deneme yapabileceği az sayıda büyük program vardı. Bu durum dramatik bir şekilde son buldu: Açık kaynak kodlu yazılımlar, programlama araçları ve işletim sistemleri (hepsi de üstatlar tarafından geliştirilmiş) artık yaygın bir şekilde bulunabilmekte.
Açık kodlu Unix'lerden birini edinin, kullanmasını ve çalıştırmasını öğrenin.
Bir kişisel bilgisayarınızın bulunduğunu ya da kullanabileceğiniz bir tane olduğunu varsayıyorum (zamane çocuklarının hayatı kolay :)). Yeni başlayan birinin ustalık yolundaki en önemli adımı, Linux veya BSD Unix'lerden birinin kopyasını edinmesi, kurması ve çalıştırmasıdır.
Evet dünyada Unix'ler dışında başka işletim sistemleri de var ama, onlar ikilik düzendeki (binary) kodlarıyla dağıtılırlar -- kodlarını okuyamaz ve değiştiremezsiniz. Windows, MacOS veya başka bir kapalı kaynak sistemde ustalaşmaya çalışmak, üzerinizde zırh varken dans etmeye benzer.
Mac OS X altında ustalaşmak mümkündür ama sistemin sadece bir parçası açık kaynak kodludur – pek çok duvarla karşılaşırsınız ve Apple'a ait sahipli kodlara muhtaç duruma düşmemek için özel gayret sarfetmeniz gerekir. Eğer Unix' e yoğunlaşırsanız, kaportanın altına girerek işe yarar şeyler öğrenebilirsiniz.
Unix, Internet'in işletim sistemidir. Unix'i bilmeden Internet'i kullanabilirsiniz ama Unix'i anlamadan bir Internet üstadı olamazsınız. Bu nedenle, bugün hacker kültürü yoğun olarak Unix merkezlidir. (Bu her zaman böyle değildi ve bazı eski zaman üstatları bundan halen hoşnut değil, ama Unix ile Internet arasındaki ilişki, bugün Microsoft'un bile diş geçiremeyeceği kadar güçlüdür.)
Bir Unix edinin -- ben şahsen Linux'u severim ama başka yollar da var (ve evet, Linux ve Windows'u aynı makinede çalıştırabilirsiniz). Öğrenin. Çalıştırın. Kurcalayın. Internet'e bağlanmakta kullanın. Kodlarını okuyun. Değiştirin. Linux ile herhangi bir Microsoft işletim sisteminin sunmayı hayal edebileceğinden çok daha iyi programlama araçlarına (C, LISP, Python ve Perl dahil) sahip olacaksınız. Hoş zaman geçireceksiniz ve günün birinde bir üstat olarak geriye baktığınızda farketmeden pek çok şey öğrenmiş olduğunuzu göreceksiniz.
Unix öğrenme ile ilgili daha fazla bilgi için The Loginataka'ya bakın.
Linux kopyası edinmek için "Nereden Linux Bulurum?"'a bakın
BSD Unix hakkında yardım alma ve kaynak edinme için www.bsd.org adresine bakın.
Benim yazdığım Unix ve Internet'in Temelleri elkitabına da bakabilirsiniz.

Not
Eğer yeniyseniz, Linux veya BSD'yi tek başınıza kurmanızı tavsiye etmem. Linux için yerel bir Linux Kullanıcıları Grubu (www.linux.org.tr) bulun ve yardım isteyin veya Open Projects Network (Açık Projeler Ağı) ile iletişim kurun. LISC, yardım alabileceğiniz IRC kanalları da sunmaktadır.
 
Üst Alt