Programlama - Alt Kategoriler :

Algoritma Java İşletim Sistemleri Mobil ve Akıllı Telefonlar Nesneye Yönelik Programlama XML Hata Yönetimi Web Programlama - Front-End Concurrency - Thread Go-Golang .NET ScalaBu Kategoriye İçerik Girin. Soru Sorun

İçerikler :

!= Operatorü ! Operatorü // Yorum İşareti /* ve */ Yorum İşareti && Operatorü <= Operatörü < Operatörü == Operatörü = Operatorü >= Operatörü > Operatorü || Operatorü ABI - Application Binary Interface ABI ile API Arasındaki Fark API - Application Programming Interface - Uyg.. Atama (Assignment) Ayhan Gökoğlu Unity'yi Anlatıyor. Unity nedir.. Bilgisayar Programı Binary Kod - İkili Kod Boolean Break Byte Case Cast Catch Char Class Code Review Collection Component (Bileşen) Constant (Sabit) Container Continue Convert Code Online Default (Varsayılan) Derleme Dizi Do Doğrudan Back-End Kitabını Zafer Teker Tanıtı.. DOM (Document Object Model) - Döküman Nesne M.. Double Do-While Else Else If Escape Operatörü Event (Olay) False Finally Float For Front-End, Back-End, Full-Stack Nedir ? Generics Godoro Tanıtım - Görüntülü Eğitim - C Godoro Tanıtım - Görüntülü Eğitim - C++ Goto Hangi Programlama Dilini Seçmelisiniz? Identifier If Iterator Kaynak Kodları Web Üzerinden Biçimlendirme Key (Anahtar) Keyword List Listener - Oracle Net Listener Literal Lua Main Method'u Makine Dili Makine Kodu Map Meta Dil Method Minification Modifier Multi Dimensional Array (Çok Boyutlu Dizi) Non-Blocking IO - Asynchronous I/O Obfuscation Obfuscator Operator Önder Teker - C / C ++ Nedir ve Nerelerde Kul.. Önder Teker - Framework Nedir ? Önder Teker - PHP Nedir ve Nerelerde Kullanıl.. Parameter Program, Programlama Dili, Programcı ve Progr.. Programcı Programcılığa Başlarken Hangi Dil ve Teknoloj.. Programcı Olacaklara Tavsiyeler Programlama Dili Programlama Dillerini kimler geliştiriyor? Programlama Dillerinin Google ve İş Bulma Sit.. Proje Bağımlılığı Recursion return Runtime Scope Seçilen Bir Metriğin Hızlı ve Kolay Olarak Di.. Shift Operasyonları SonarQube Statement Switch True Type (Tip) void While Yorum (Comment) Yorumlama

Bu Sayfayı Paylaş:

Kavram

Bilgisayar Programı

Tanım: Bir programlama dili kullanarak, bir bilgisayara bir işlemi veya işlemleri yaptırmak için yazılan komutlar, yöntemler bütünü. "İki sayıyı toplayan program yap", "Bu program daha hızlı çalışmalı"
Tanım: Kullanıcıların veya diğer bilgisayarların ihtiyaçlarını karşılamak için programlanmış bir yazılım bütünü

Kavram

Programlama Dili

Tanım: Bir bilgisayar programı geliştirmek için veya bilgisayarların değerlendirmesi için kullanılan her türlü dil. İnsanların anlayabileceği ve yazabileceği bazı diller bir derleyici aracılığıyla bilgisayarların anlayabileceği dillere çevrilirler.

Kavram

Programcı

Tanım: Bir veya daha fazla program dili kullanarak bilgisayar programı üreten kişi. Programlama dili ile programın yazılması, test edilmesi, çalıştırılması aşamalarından sorumludur.

Materyal

Programcı Olacaklara Tavsiyeler

Godoro kurucusu Önder Teker programcı olmak isteyenlere bazı önerilerde bulunmaktadır.

Materyal

Programcılığa Başlarken Hangi Dil ve Teknoloji Tercih Edilmeli

Programcılığa başlayanlar hangi dili ve teknolojiyi seçmeli. Godoro kurucusu Önder Teker programcılığa yeni girenler için teknoloji ve programlama dilleri hakkında bilgi vermektedir.

Kavram

Main Method'u

Tanım: C, C++, C# , Java gibi proglamlama dillerlerinde uygulama çalıştırıldığı zaman ilk çağrılan method. Uygulamanın başlangıç noktasıdır.

Kavram

== Operatörü

Tanım: Bir çok programlama dilinde İki değer veya nesne aynı olduğunda true, olmadığında false döndüren operatör.

Kavram

= Operatorü

Tanım: Bir çok programlama dilinde bir değişkene değer atama operatörü

Kavram

|| Operatorü

Tanım: Bir çok programlama dilinde İki boolean değerden sadece biri bile 'true' ise 'true', değilse false döndüren veya operatörü.

Kavram

&& Operatorü

Tanım: Bir çok programlama dilinde iki boolean değerden ikisi de true ise true, aksi halde false döndüren "ve" operatörü.

Kavram

! Operatorü

Tanım: Bir çok programlama dilinde bir boolean değeri tersine çeviren operatör.

Kavram

!= Operatorü

Tanım: Bir çok programlama dillerinde iki değer veya nesne aynı olmadığında true, olduğunda false döndüren operatör.

Kavram

> Operatorü

Tanım: Bir çok programlama dillerinde ilk sayının ikincisinden büyük olması durumunda true, olmadığında false döndüren "büyük" operatörü

Kavram

< Operatörü

Tanım: Bir çok programlama dillerinde ilk sayının ikincisinden küçük olması durumunda true, olmadığında false döndüren "küçük" operatörü

Kavram

<= Operatörü

Tanım: Bir çok programlama dillerinde İlk sayının ikincisinden küçük veya eşit olması durumunda true, olmadığında false döndüren "küçük-eşit" operatörü

Kavram

>= Operatörü

Tanım: Bir çok programlama dillerinde İlk sayının ikincisinden büyük veya eşit olması durumunda true, olmadığında false döndüren "büyük eşit" operatörü

Kavram

Escape Operatörü

Tanım: \ karakteri. Bir çok programlama dillerinde bir string'de özel karakterleri diğerlerinden ayırmak için kullanılan "escape" operatörü. Escape işaretinin kendisini göstermek için \\ kullanmak gerekir.

Kavram

// Yorum İşareti

Tanım: Bazı programlama dillerinde bir satırı yorum haline gelmesini sağlayan işaret

Kavram

/* ve */ Yorum İşareti

Tanım: Bazı programlama dillerinde /* ile */ arasındaki ifadeleri yorum haline getiren işaretler

Kavram

Dizi

Tanım: Birden fazla değer tutan ve onlara index (sıra numarası) aracılıyla erişim sağlayan veri grubu

Kavram

Atama (Assignment)

Tanım: Programlama dillerinde bir değişkenin değerini belirleme işlemi.

Kavram

Boolean

Tanım: Programlama dillerinde değeri sadece true (doğru) veya false (yanlış) olabilen veri tipi

Kavram

Break

Tanım: Programlama dillerinde bir döngüden veya benzeri bir block'tan normalden daha önce çıkmaya yarayan ifade.

Kavram

Byte

Tanım: 8 bitten oluşan sadece bir byte'lık yer kaplayan veri tipi.

Kavram

Case

Tanım: Programlama dillerinde birden fazla değer alabilen bir değişkenin belli bir değeri aldığı koşulunda yapılacak işleri gösteren ifade. Bu keyword switch'le birlikte kullanılır.

Kavram

Cast

Tanım: Programlama dillerinde bir değeri bir tipten başka bir tipe dönüştürmek işlemi.

Kavram

Catch

Tanım: Programlama dillerinde Exception'ları yakalamak için try ile birlikte kullanılan ifade

Kavram

Char

Tanım: Programlama dillerinde karakter değerleri içeren veri tipi

Kavram

Collection

Tanım: Programlama dillerinde İçerisinde birden fazla veri barındıran nesnelerin genel adı

Kavram

Yorum (Comment)

Tanım: Programlama dillerinde kaynak kodunun içerisinde derleyicinin değerlendirme dışı bıraktığı, sadece programı okuyanlara bilgi vermek için yazılmış metin

Kavram

Component (Bileşen)

Tanım: Bir bütünün içinde yer alan, belli basit bir işlev gören genellikle görsel olan nesne

Kavram

Constant (Sabit)

Tanım: Bazı programlama dillerinde "sabit , değişmeyen" anlamına gelen ifade. Değeri programın çalışması boyunca değişmez ve ilk atanmış olan değer kalır.

Kavram

Container

Tanım: İçerisinde birden fazla component (bileşen) bulunan ana component (bileşen)

Kavram

Continue

Tanım: Bir döngüde, sonuna kadar çalışmadan bir sonraki dönüşe geçmeye yarayan ifade

Kavram

Default (Varsayılan)

Tanım: Herhangi bir değer girilmediğinde geçerli olacak baştan verilmiş değer

Kavram

Do

Tanım: do-while yapısındaki döngü bloğunun başını belirten ifade. Do ile tanımlanan bölüm doğru olduğu sürece döngü devam eder.

Kavram

While

Tanım: Belli bir koşul gerçekleştiği sürece belli bir işlemin yapılmasını sağlayan döngü çeşiti

Kavram

Double

Tanım: Programlama dillerinde büyük kesirli sayıları belirten veri tipi.

Kavram

Do-While

Tanım: Programlama dillerinde bir işlemi belli bir koşul gerçekleştiği sürece yapılmasını sağlayan, ancak koşulu bir adımı gerçekleştirdikten sonra kontrol eden döngü

Kavram

If

Tanım: Programlama dillerinde bir koşulun gerçekleşmesi durumunda belli bir işlemin yapılmasını sağlayan ifade

Kavram

Else

Tanım: Programlama dillerinde İf ifadesiyle belirtilen koşulun gerçekleşmemesi durumunda yapılacak işlemleri belirten ifade

Kavram

Else If

Tanım: Programlama dillerinde bir önceki if'in else'inden hemen sonra yine bir if gelemsi durumunda kullanılan ifade

Kavram

Class

Tanım: İçerisinde property'ler (özellikler) ve method'lar barındıran, extend edilebilen (alt class'ları yapılabilen) ve instance'ı (nesnesi) yaratılarak kullanılabilen yapı.

Kavram

Event (Olay)

Tanım: Programlama dillerinde herhangi bir nesnenin tepki verebileceği, genellikle dışardan etkilerle gerçekleşen durum. Özellikle görsel bileşenlerde kullanıcının yaptığı işlemler bir event üretir.

Kavram

Listener - Oracle Net Listener

Tanım: Belli bir event (olay) oluştuğunda bilgilendirme almak isteyen ve tepki veren class

Kavram

False

Tanım: Programlama dillerinde "Yanlış" anlamına gelen boolan değer. Bir boolean değeri ya true olabilir yada false olabilir.

Kavram

True

Tanım: Programlama dillerinde "Doğru" anlamına gelen boolan değer. Bir boolean değeri ya true olabilir yada false olabilir.

Kavram

Finally

Tanım: Bazı programlama dillerinde try-catch bloğunda bir exception oluşsa da oluşmasa da çalışmasının istendiği kodların yazıldığı blok

Kavram

Float

Tanım: Bazı programlama dillerinde kesirli sayıları belirten veri tipi

Kavram

For

Tanım: Bazı programlama dillerinde her adımda belli bir index'in (sıra sayısı) artması esasıyla çalışan döngü

Kavram

Goto

Tanım: Bazı programlama dillerinde programın akışını bulunduğu yerde kesip : ile belirtilen yerden başlamasını sağlayan ifade.

Kavram

Identifier

Tanım: Programlama dillerinde değişken, method gibi birimleri belirten isim , tanımlayıcı

Kavram

Iterator

Tanım: Programlama dillerinde bir veri grubunun elemanlarına sırayla erişim sağlayan yapı

Kavram

Key (Anahtar)

Tanım: Programlama dillerinde bir değerle ilişkilendirilen, onu saklamak ve sonradan erişmek için kullanılan nesne

Kavram

Keyword

Tanım: Programlama dillerinde dile ait olan ve programcıların kullanamadığı kelimeler.

Kavram

List

Tanım: Programlama dillerinde içerisinde elemanları index'li ve sıralı tutan veri grubu

Kavram

Literal

Tanım: Programlama dillerinde değişken veya parametre olarak değil, aynen kullanılan değer

Kavram

Map

Tanım: Programlama dillerinde bir key'e (anahtar) karşılık bir değerin eşleştirilerek saklandığı veri yapıları

Kavram

Method

Tanım: Programlama dillerinde bir class'a (sınıfa) ait, gerektiğinde parametreler alıp, belli bir işlemi yapan ve varsa sonuç döndüren kod parçası. Bir class'a ait olan fonksiyon.

Kavram

Modifier

Tanım: Programlama dillerinde bir class, property veya method'un erişimi ve saklanması gibi özelliklerini belirten ifade.

Kavram

Multi Dimensional Array (Çok Boyutlu Dizi)

Tanım: Programlama dillerinde çok boyutlu dizi. Verilerine birden fazla index kullanılarak erişilmektedir.

Kavram

Operator

Tanım: Programlama dillerinde bir veya daha çok değer üzerinde belli bir işlem yapıp yeni bir değer üreten, genellikle belli bir işaretle belirtilen yapı.

Kavram

Parameter

Tanım: Bir fonksiyona veya method'a, çağıran tarafından verilen değerler.

Kavram

Recursion

Tanım: Bir method'un yine kendisini çağırması.

Kavram

return

Tanım: Bir method'un çalışmasının sonunda geriye değer döndürmesini sağlayan keyword

Kavram

Runtime

Tanım: Bir programın çalıştığı sıradaki zaman

Kavram

Scope

Tanım: Bazı programlama dillerinde bir değişken tanımının geçerli olduğu '{' ile başlayıp '}' bölge.

Kavram

Shift Operasyonları

Tanım: Programlama dillerinde bitlerin sağa veya sola kaymasıyla yapılan işlemleri

Kavram

Statement

Tanım: Programlama dillerinde değişken, operatör ve değerlerden oluşan, çalıştırılabilen belli bir kod parçası.

Kavram

Switch

Tanım: Programlama dillerinde bir değerin çeşitli değerleri içine yapılacakları belirlemek için kullanılan yapı

Kavram

Type (Tip)

Tanım: Bir verinin ne tür bilgi içerebileceğini belirleyen ifade

Kavram

void

Tanım: Bazı programlama dillerinde bir fonksiyon veya method'un hiç sonuç döndürülmeyeceğini belirten ifade

Kavram

Obfuscation

Tanım: Bir kaynak kodunun insanların anlayamacağı bir şekilde değiştirilmesi. Aynı zamanda kodun boyutu azaltılır

Kavram

Obfuscator

Tanım: Bir kaynak kodunu insanların anlayamacağı bir şekilde değiştiren (obfuscation işlemi) uygulamalara verilen genel isim

Kavram

Minification

Tanım: Programlama dillerinde (özellikle JavaScript) bir kodun gereksiz karakterlerden temizlenerek daha küçük boyutlu hale getirilmesi ve sıkıştırılması. Bu işlemi yapan programlara Minifier veya Compressor denilmektedir

Kavram

Proje Bağımlılığı

Tanım: Programlamada bir projenin başka projeleri kullanmasından dolayı o projeler olan bağımlılığı. Kullanılan projelerde başka projelere bağımlı olmasında dolayı bir bağımlılık yapısı oluşmaktadır. Bu problemi gidermek için çeşitli dillerde araçlar (örneğin javada Maven projesi) mevcuttur

Kaynak

Kaynak Kodları Web Üzerinden Biçimlendirme

C, Java, HTML , Javascript gibi kaynak kodları web üzerinden biçimlendirmek için kullanılabilen bir araç.

Kaynak

Convert Code Online

Kaynak kodu biçimlendirilmiş bir şekilde HTML'e çeviren online site

Kavram

Meta Dil

Tanım: Yeni bir dil yaratmak için kullanılan dil. Örneğin SGML, XML meta dilleridir ve yeni diller yaratmak için kullanılmaktadır

Kavram

DOM (Document Object Model) - Döküman Nesne Modeli

Tanım: XML,HTML gibi işaretleme dillerinde bir belgenin , programlama dillerinden ve platformdan bağımsız olarak erişilebilmesi için kullanılan , elementlerin ağaç şeklinde oluşturulduğu nesne yapısı. DOM , W3 kurumu tarafından yaratılan bir standarttır. Bir belgenin DOM nesnesine çevrilmesini sağlayan yazılımlara Parser adı verilmektedir

Kavram

Derleme

Tanım: Bir yazılım kodunu makine diline çevirme işlemi. İngilizce "compilation" kelimesinin Türkçe karşılığıdır

Kavram

Makine Dili

Tanım: Bir bilgisayarın anlayacağı ve çalıştıracağı programlama dili

Kavram

Makine Kodu

Tanım: Bir bilgisayarın anlayacağı ve çalıştıracabileceği kod parçası ve uygulaması

Kavram

Binary Kod - İkili Kod

Tanım: Bir bilgisayarın doğrudan işleyebileceği, binary (ikili , 0 veya 1) şeklindeki kod

Kavram

Yorumlama

Tanım: Bir kaynak kodun (veya başka bir kodun) çalışma anında makine koduna çevrilmesi ve çalıştırılması işlemi. İngilizce "interpretation" kelimesinin Türkçe karşılığıdır

Alıntı

Seçilen Bir Metriğin Hızlı ve Kolay Olarak Distinct Count Değerini Alma

Elimizde bir örnek ile başlamak daha anlaşılır olacaktır. Problemimiz log dosyalarından okunan IP verilerinin distinct count işleminin yapılması, diğer bir tabir ile unique ip’lerin sayılması olsun
Sahipleri : İbrahim Yıldız
 
Bu problem oluşturur mu diye sorabilirsiniz. Eğer onlarca sunucunuz var ve onların loglarından bu değeri olmaya kalkarsanız, burada yüz milyonlarca satır logdan bahsediyorum, her bir IP değerini tek tek elinizdeki distinct olarak tutuğunuz IP listeniz ile karşılaştıracaksınız demektir. Bu unique ip listesinin bir üst sınırı var mıdır? Varsa ne kadardır? 
 
Şimdi elimizde olan unique ip listesinin üst sınırını bulamasak da ne kadar hafızaya mal olabileceğini tahmin etmeye çalışalım. Örneğin 100M unique ip listesi oluşturabiliyoruz diyelim günde. Ve iki durumda bu ip değerini sakladığımı varsayalım; birincisi ip değerlerini STRING olsun, diğeri ise INTEGER olsun. Eğer STRING olarak saklayacak ise her ip değeri için “4x3 + 3” maximum karakter , “4x1 + 3” ise alabileceği minimum karakter sayısı olacaktır. Biz maximum değer üzerinden gidersek, bize her ip değeri için 15 karakter yani 15 byte değerinde hafızada yere mal olacaktır. 
 
100.000.000 x 15 = 1.5 x 10^9 byte edecektir. Bu da yaklaşık 1,40 GB hafıza alnına denk gelecektir.
 
Tabii bunların arasında bir ip değeri için 100M luk liste içinde var mıdır diye her defasında kontrol etmek ise ek olarak bir CPU maliyeti olarak karşınıza çıkacaktır.
 
 
Şimdi bir de her ip değerinin INTEGER olarak karşılığını bulduğumuzu ve onu kıyaslamak için sakladığımızı varsayalım. Burada integer 32-bit değerden oluşuyor ise 4 bytelık bir yer kaplayacaktır.
Buna göre bir ip adresi mininum veya maximumu gözetmeye gerek kalmadan 4 bytelık bir alanı kaplayacağını da söyleyebiliriz. String olarak saklamaktan daha iyi olduğu aşikar.
 
100.000.000 x 4 = 4 x 10^8  byte edecektir. Bu da 372 MB yer kaplayacak demek olacaktır. Şimdiden 3/4 oranında yerden kazandık. Ve CPU maliyetine de String değerine göre azalmış varsayabiliriz. 
 
Şimdi bunlar ilk akla gelen çözümler ve bu çözümlerin problemi üst sınırlarının kestirilememesi. Bu şu an bizim için bir problem oluşturmayabilir. Ama yinede işin içine daha zarif bir çözüm sokmak güzel olacaktır.
 
Üçüncü olarak ise BITMAP çözümüyle yapmaya çalışalım. Önce bunu nasıl yapacağız açıklayayım; elimizde hafıza alanı olsun ve bu hafıza alanına yalnızca 0 veya 1 değerleri yazabilelim. Yani sadece bir bit yazma hakkımız olsun. Ve bu hafıza alanını istediğimiz gibi genişletebilelim de. Şimdi ip lerin integer değerlerini hafıza alanındaki dizide sıra numarası gibi kullanalım. Ve o sıranumarasına denk gelen alanı 1 yapalım. Hepsi bu kadar. Elimizde her unique ip değeri için 1 bit artan bir şey olacaktır artık. 
 
 
 
 
 
 
Şimdi eğer aynı ip adresi elimizde var mı diye kontrol etmek de basitleşecektir. Eğer ip nin integer değeri sıra noyu (offset) gösteriyorsa, o sıra nodaki bit 1 ise var demektir. Yok ise 1 yapmamız yeterlidir. Ancak bunu kontrol etmemize bile gerek yok. Direk ve her seferinde 1 yapmak yeterli olacaktır. Bu CPU maliyetini de en aza indirecektir. 
 
 
 
 
 
 
 
Sonrasında ise unique ip sayısı elimizde 1 olan bitlerin sayısı kadar olacaktır. Hepsi bu kadar.
 
Burada sınır integer değeri olacaktır. en büyük ip değeri “255.255.255.255” olacaktır. Onun integer değeri ise 4294967295 dir ve 4294967295 adet bit demektir. Bu yaklaşık 500 MB hafıza demektir. Bundan daha fazla hafıza alanına ihtiyacınız olmayacaktır. 
 
Yani sitenizin trafiğinden bağımsız olarak, distinct count almak için 500MB bir ortak hafıza alanından 
daha büyük bir yere ihtiyaç olmadan böyle bir sayımı gerçekleştirebileceğiz.
 
 
 
 
 
 
 
Detaylar yine kullanıma göre değişecektir. Mesela bu değeri günlük tutarsanız, 500 MB / gün  şeklinde bir yere ihtiyacınız olacaktır. Bu öngörülebilir bir değerdir.
 
 
Java’da bu konuda yardım edebilecek bir sınıf ise mevcut. Adı ise Bitset . Burada bitset nesnesinde bir offset değerini yani sıranolu alanı 1 ya da 0 yapabilirsiniz. Sonrasonda isecardinality() fonsiyonunu çağırdığınızda ise size 1 olan alanların sayısını yani istediğiniz sayıyı verecektir.
 
 
Burada ip değeri değilde herhangi bir metriği ölçebilirdik. Peki nasıl yapabilirdik bunu? Bir nesneye atadığımız bu değerin unique hashcode üretmesini ve her aynı değer için aynıhashcode değerini vermesini sağlayabilirsek, herhangi bir metriği distinct count yapabiliriz en az zahmet ve maliyetle…
 
 
NOT:
-------
Ayrıca doküman olarak da buradan görüntüleyebilir veya indirebilirsiniz.
 
Kaynaklar:
———————

Kavram

API - Application Programming Interface - Uygulama Programlama Arayüzü

Tanım: Bir yazılımın başka bir yazılımı kullanabilmesi için gerekli tanımlardan (fonskiyon, sınıf, değişkenler vb. tanımların olduğu) oluşan arayüz

Kavram

ABI - Application Binary Interface

Tanım: İki modül (örneğin işletim sistemi, kütüphane, uygulama vb..) arasındaki makine kodu seviyesinde sağlanmış olan arayüz. Üst level (yazılım seviyesi) arayüz olan API'nin alt level (donanım , binary mod) seviyesindeki karşılığı gibi düşünülebilir

Veri

ABI ile API Arasındaki Fark

ABI (Application Binary Interface) ile API (Application Programming Interface) farklı kavramlardır. Aşağıda özetlenmiştir.
  • API yazıım seviyesinde, ABI donanım (binary) seviyesinde bir arayüzdür
  • API yazılımın özelliklerini belirtirken, ABI donanımın (binary) özelliklerini , yeteneklerini belirtir


Kavram

Non-Blocking IO - Asynchronous I/O

Tanım: Bloklama yapmadan (non blocking) okuma, yazma yapılmasını sağlayan I/O (input/output - giriş/çıkış) yöntemi

Kavram

Generics

Tanım: Programlama dillerinde bir sınıfın veya method'un genel olarak tanımlanması ancak özel ve farklı sınıflara göre çalışbilmesini sağlamak (bir çeşit şablon sınıf yaratmak) amacıyla kullanılan özellik. Bir sınıfın object sınıfına göre çalışması yerine generics kullanıldığında tip güvenliği de sağlanmaktadır

Veri

Hangi Programlama Dilini Seçmelisiniz?

Hangi programlama dilinin ve dolayısıyla hangi eğitimin size uygun olduğa karar vermek için aşağıdaki bilgileri kullanabilirsiniz.
Sahipleri : Godoro

Dilleri Karşılaştırma

Bilgisayar programcısı veya yazılım geliştiricisi olmaya karar vermek yetmez, hangi dilde geliştirme yapılacağına da karar verilmelidir. Genel olarak programcıları
  • Java
  • .NET
  • C - PHP
şeklinde üç gruba ayırabiliriz. Ancak ayrım biraz daha ayrıntıya inince daha da karmaşıklaşır. Öte yandan, programlama dilleri karşılıklı dışlayan seçenekler değildir. Örneğin HTML, CSS, JavaScript seçeneği tek başlarına da kullanılsa, Java, C#/VB ASP .NET ve PHP dillleriyle çalışan web programcıları için de mutlaka bilinmesi gerekmektedir. Veritabanıyla iş yapan Java, C#/VB ASP .NET ve PHP programcıları SQL & XML bilmek durumundadır. Bir başka durum da masaüstü web mobil ayrımıdır. Kurumsal ve Web uygulamlarında Java tercih edenler masüstünde C# .NET kullanabilmektedirler. Bu karşın C# ASP .NET programlama yapanlar mobil geliştirmede C#'ın daha az kullanımı nedeniyle Android Java seçeneğini kullanabilemektediler. Android'de Java kullanan bir çok geliştirici sunucu tarafında Java yerine PHP'yi desteklemektedir. Bir başka konu da, dile başlangıçtır. C/C++ göreli olarak daha az kullanılsa da adı verilen tüm dillerin atası durumunda olduğu için bazı eğitimciler ilk olarak temellerin kavranması için C/C++ öğrenilmesini, daha sonra Java, C# ASP .NET veya PHP seçeneklerine yönelinmesinin doğru olduğuna inanmaktadır. Öte yandan bunu zaman kaybı olarak görüp doğrudan yaygın bir programlama diline geçmenin daha mantıklı olduğunu düşünenler çoğunluktadır. Bir çok üniversitede programlamaya giriş dersi olarak Java anlatılmaktadır. Öte yandan C/C++ ile veya C# ile başlayanlar da oldukça çoktur.
Burada verilen bilgiler her ne kadar eğitmen kadromuzun (www.godoro.com) on yılları aşan deneyimleri ve çok sayıda projede çalışmış olmalarından edindikleri bilgi birikimleriyle yazıldıysa da kişiden kişiye değişebilecek yorumlar da içerebilir. Bu konuda nesnel olabilmek çok zordur. Özellikler bir seçim yapmış olanlar bazı durumlarda kendi tercihlerini şiddetle savunmakta, diğer dillere de düşmanca bir tutum sergileyebilmektedirler. Hangi programlama dilini seçileceğine, hangi ortamda yazılım geliştireceğine öğrenci kendisi araştırarak ve deneyerek karar vermelidir.

Programlama Dili Seçenekleri

Godoro giderek artan, oldukça geniş bir programlama dili ve teknolojisi eğitim, danışmanlık ve yayın kataloğuna sahiptir. Aşağıdakiler hem Godoro'nun uzmanlık alanlarını hem de öğrencileri için programlama dili seçeneklerini göstermektedir :
  • Java
  • Kurumsal Java
  • Android Development
  • C#/VB ASP .NET
  • PHP
  • C/C++
  • HTML, CSS, JavaScript
  • SQL & XML

Java & Kurumsal Java

Java dili kurumsal (enterprise) alanda, yani büyük şirketlerde kullanılır. Ortalama bir Java programcısı diğer dillerin programcılarından daha fazla para kazanabilir, daha iyi iş olanaklarına sahip olabilir. İş ilanlarında Java çok aranan bir konudur. Ancak arandığı kadar çok kullanılmaz, Türkiye piyasasında C#,VB, ASP .Net ve PHP teknolojiler çok daha yaygın olarak kullanılmaktadır. Diğer dillerin daha çok kullanılmalarının en önemli nedeni, öğrenilmeleri Java'ya göre kolay olduğu için bu dilleri bilenleri bulmak, bilmeyenlere işe girdikten sonra öğretmek daha kolaydır. Java göreli olarak daha zor ve daha ileri öğeler içerdiği için daha çok iyi iş olanaklarına sahip olurlar. Bu yüzden Java ve Java Enterprise seçeneklerini düşünmek akıllıca olabilir. Java diğer seçeneklere göre biraz daha geniş ve karışık olduğu için daha uzun bir öğrenme dönemi geçirileceği akıldan çıkarılmamalıdır. Java'nın karmaşık ve ileri özellikler içermesi yazılım geliştirmede ileri teknolojilere meraklı olanları çekmekte, diğerlerin basit ama rutin yöntemlerini sıkıcı bulanlar için daha eğlenceli olarak algılanmaktadır. Ama bunun bedeli sürekli öğrenme zorunluluğu, en basit işleri bile karmaşık yollardan çözme gerekliliğidir. Bir çok dilde bir konuda bir, en fazla bir iki seçenek varken Java'da bir çok seçenek olması oldukça kafa karışıklığı oluşturmaktadır. Her ne kadar standart öğeler varsa çok fazla standart dışı bileşen bulunmaktadır. Java'nın daha hızlı gelişmesini ve daha ilerde olmasını sağlayan bu özellik yeni geliştiriciler için oldukça büyük bir karmaşıklık olarak algılanabilmektedir.

Artıları :
  • Daha fazla maaş
  • Daha kolay iş bulma
  • Daha fazla mesleki tatmin
  • Uzun vadeli, sistemli kod yazabilme
  • Hem standart hem de çok fazla seçenek
Eksileri :
  • Daha zor öğrenme
  • Sürekli öğrenim gerekliliği
  • Daha yavaş geliştirme hızı
  • Bazı durumlarda daha düşük performans
  • Çok kafa karıştırıcı, aşırı bol seçenek

Android Java Development

Java Android için durum olağan Java'ya göre biraz daha farklıdır. Zira Android akıllı telefonlarda kullanılan bir işletim sistemidir. "Akılsız" telefonlarda kullanılan Java'nın Mobil sürümü giderek daha az kullanılmakta Android giderek yaygınlaşmaktadır. Android programcısına olan talep iş olanaklarını doğrudan belirler. Android'in kullanımı daha sonra azalsa dahi yerine geçen sistemler de ya Java tabanlı olacak ya da Java ve Android benzeri bir yapıda olacakları için Android programcıları açıkta kalmayacaklar, yeni ortama uyum sağlayacaklardır. Bu yüzden Java Android kursunu almak akıllıca olabilir.

Artıları :
  • Mobil geliştirmenin giderek artması
  • Android'in giderek artan popülerliği
  • Java bilgisinin diğer alanlarda da kullanılabilmesi
  • Tek bir firmaya bağlı olmaması
Eksileri :
  • Sadece mobilde geliştirme olması
  • Mobildeki alternatiflerine göre biraz daha zor olması
  • Geliştirme ortamının zor kurulması ve kullanılması

C#/VB ASP .NET

Microsoft firmasına ait Windows işletim sistemi son kullanıcı tarafında yaygın olarak kullanılmaktadır. Sunucu tarafında o kadar yaygın olmasa da belli bir pazar payına sahiptir. Microsoft firması ayakta kaldığı sürece .Net çatısı ve C# ve VB dilleri ile onların web teknolojisi ASP yazılım geliştirme alanında kullanılmaya devam edecektir. Microsft'a veya kolay kullanımı nedeniyle Windows'a sempatisi olanlar için doğal olarak C#,VB,ASP .Net kursunu tercih etmek en mantıklı seçenektir. .Net platformu Java'la kıyaslanacak düzeyle ileri özellikler içermekte, Java'dan daha kolay öğrenilebilmektedir. Özellikle işletim sistemini ve ofis programlarına hakim olan ancak programlama ile ilgili bir eğitim almadan bu alana geçmek isteyenler için .Net oldukça geçerli bir seçenektir.

Artıları :
  • Hem güçlü hem kolay dil olması
  • Herkesin bildiği Windows araçlarına yakınlığı
  • Arkasında Microsoft gibi bir devin olması
  • Tek üreticiden geldiği için basit, tek geliştirme ortamı
  • PHP'ye göre daha yüksek maaş
  • PHP'ye göre daha kolay iş bulma
Eksileri :
  • Microsoft dışında seçeneklerin çok az olması
  • Microsoft başarılı olamadığı alanlarda ilerleyememesi
  • İleri geliştirme teknolojilerinin çok yavaş standarda konması
  • Java'ya göre daha düşük maaş
  • Java'ya göre daha zor iş bulma

PHP

PHP sadece web programlamada kullanılan bir dildir. Öğrenilme kolaylığı ve gelişmiş hazır kütüphaleri nedeniyle yaygın olarak kullanılmaktadır. PHP Windows ortamında da çalışsa da UNIX/Linux ortamlarında çok yaygın olarak kullanılmaktadır. Linux'a sempatisi veya Microsoft'a antipatisi olanlar için PHP en mantıklı seçeneklerden birisidir. PHP'nin bir özelliği de açık kaynaklı çok sayıda proje içermesidir. Java'da açık kaynak kütüphaneler açısından zengindir, .Net'te Microsoft açık olmasa da bedava bir çok kütüphane sağlamaktadır ancak PHP'de açık kaynaklı sadece kütüphane değil çalışır durumda uygulamalar bulunmaktadır. PHP programcıların bir çoğu hazır bir programı değiştirerek proje geliştirmektedir. PHP'nin bir avantajı da basitliği nedeniyle HTML veya grafik uzmanlarınca tercih edilmesidir. Programcı olmayan birinin Java öğrenmesi çok zor, .Net öğrenmesi zor ama PHP öğrenmesi olasıdır. Ancak öğrenim kolaylığı aynı zamanda alınacak maaşın düşük olmasına da yol açabilmektedir.

header:/Artıları :
  • Çok kolay öğrenilmesi
  • Çok hızlı geliştirme yapılması
  • Çok sayıda açık sistem ve ürün
  • Çok yüksek performansla çalışması
Eksileri :
  • İleri özelliklerin az olması veya yaygın olmaması
  • Büyük projelerde sistemsiz ve karmaşık kod üretilebilmesi
  • Düşük maaş
  • Daha zor iş bulma

C/C++

C/C++ programlama dili şu anda yaşayan tüm dillerin kökeni ve atasıdır. Java, .Net ve PHP denilen sistemlerin hepsi birer C/C++ uygulamasıdır. C/C++ düşük düzeyli bir dildir. Uygulama geliştirme için kullanılabileceği için uygulama geliştirmek için üretilen işletim sistemi, aygıt arayüzleri, sistem programlama gibi alanlarda daha kullanılmaktadır. C/C++'ın dünyada belli bir kullanımı bulunmakta ise de ülkemizde C/C++'ın yaygın olarak kullanıldığı ortamlarda pek fazla geliştirme yapılmamaktadır. C/C++ dili düşük düzeyli, elektronik ve mekanik alanlarında kullanılmaktadır. C/C++ tabanlı Objective-C dili is Mac, iPad ve iPhone için yazılım geliştirmekte neredeyse tek yol olduğundan Objective-C'nin belli bir pazar payı bulunmaktadır. C/C++ dilleri dünyada çok yaygın kullanılır ancak ülkemizde işletim sistemi, donanım programlama veya oyun gibi alanlarda çok az geliştirme yapıldığı için ABD dışındaki ülkelerde çok az kullanılır.

Artıları :
  • Donanım programlamaya olanak vermesi
  • En yüksek performans
Eksileri :
  • Güvensiz kod geliştirme
  • Ülkemizde çok az kullanılıyor olması

HTML, CSS, JavaScript

Web Programlama veya Front-End (Ön-Uç) programlama diye bilinen alanda çok kullanılmaktadır. Web ve mobil uygulamaların artışıyla birlikte geliştiricilerin çoğu web teknolojilerini öğrenmek durumundadır. Java, C# ASP .NET ve PHP yapanlar bu dilleri ya belli bir düzeyde ya da çok ileri düzeyde bilmek durumundadırlar.

Artıları :
  • Tüm web programcıları gerekmesi
  • Kolay öğrenilmesi ve uygulanması
  • Görsel araçlarla ve tasarımla bağlantılı olması
Eksileri :
  • Daha az maaş
  • Diğer dillerin bir yan konusu gibi kabul edilmesi
  • Sadece Web ve Mobil ile ilgili olması

SQL & XML

Veritabanı ve Mesajlama dilleri olan SQL ve XML veri ile ilgili işlem yapan her tür geliştirici, hatta geliştirici olmayan analist veya sistem tasarımcısı, veritabanı yöneticisi gibi alanlarda çalışanlar için gereklidir.

Artıları :
  • Tüm veritabanıyla çalışan programcılarına gerekmesi
  • Kolay öğrenilmesi ve uygulanması
  • İş mantığıyla, analiz ve sistem ile ilgili olması
Eksileri :
  • Daha az maaş
  • Diğer dillerin bir yan konusu gibi kabul edilmesi
  • Sadece veritabanı ile ilgili olması

Sonuç


Dil seçiminde duruma ve kişiye göre değişen yaklaşımlar bulunmaktadır ve herhangi bir tanesi diğerinden her alanda üstün değildir. Dolayısıyla birini tercih etmek çok büyük bir hata yapmak anlamına gelmez. Dil seçiminde bir başka konu da tüm diller birbirine son derece yakın olmasıdır, %80'i temelde birbiriyle aynıdır, farklar ileri konularda oluşur. Yani bir dili iyi bilen biri az bir çabayla diğerine geçebilir. Asıl konu bir programlama dilini öğrenmek değil programlamayı öğrenmekdir. Zor olan dil değil programlama mantığı ve teknolojilerdir. Bu da her dilde üç aşağı beş yukarı temelde aynıdır.

Kavram

Lua

Tanım: 1993 yılında, Roberto Ierusalimschy, Luiz Henrique de Figueiredo, ve Waldemar Celes tarafından yaratılan bir script(betik) dili

Kavram

SonarQube

Tanım: Kodun kalitesini ölçen, raporlama ve iyileştirme önerileri sunan açık kaynak bir yazılım ve platform

Alıntı

Code Review

Code review’ı üç başlık altında yapabiliriz. Design ,Maintenance ve Performance
Sahipleri : Yusuf Boyacıgil
Bu yazı izinle alıntılanmıştır : http://yboyacigil.com/turkish/code-review/
Code review’ı üç başlık altında yapabiliriz:
  • Design
  • Maintenance
  • Performance
O zaman herbir başlık altında code review yaparken nelere dikkat etmeliyiz, bunlara tek tek değinelim.

Design: Kodu tasarımı açısından incelemek.


İyi tasarım kriteri nedir biraz tartışılır. İyi tasarım nedir diye sorulduğunda herkes bir şey söyleyebilir. Mesela pure object-oriented kod yazınca iyi tasarım yapmış olmayız. Birçok yerde encapsulation yok diye tasarımın başarısız olduğuna hükmedilemez. Tasarım başka şey. Eğer ürettiğiniz şey kendisinden bekleneni hakkıyla yerine getiriyorsa tasarım iyidir diyebiliriz. Tek bir şartla: Kendisinden beklenen ve onu karşıladığı nesnel olarak belirlenmiş olmalı. Bu kesinlikle şu anlama da gelmemeli: Benim yazdığım bölüm çalışıyor işte o yüzden tasarım tamamdır denizi bulandırmayayım kerizi uyandırmayayım! Tasarım açısından sorun olmayabilir ama maintenace’ı kötüdür. Mesela metoda öyle bir isim verilmiştir ki anlayana aşk olsundur.
Asgari müştereklerimiz olmalıdır ki bunlar:

Granularity/Low Coupling/High Cohesion


Bir sınıf sadece bir işi yapmalı ve onu iyi yapmalı. Bunu ancak problemi iyi anlarsak yapabiliriz.
  • Bir sınıf yazıp içini statik metotlarla doldurup her yerde onu çağırmak. İlgili unitlerin içerisinde tanımla.
  • Zero-abstraction : Ortak özellik ve davranışı her sınıfta tekrarlamak. Bir üst sınıf yarat ortak özellikleri orada tanımla.
  • Magic class : Herşeyi tek bir sınıfta yapmak. Bu sınıfı öyle böl ki granül olsun, kendi içerisinde tutarlı, dışarısı ile bağları mümkün mertebe az olsun.
  • API Business Logic (BL) Interference Hell : API ve business logic’in net sınırlarla birbirinden ayrıştırılamaması. Biz sadece API kullanmıyoruz, yazıyoruz da. Her işin bir API bir de BL tarafı vardır. İkisini birbirinden ayırıp ona göre kodlamalı.
  • Irrelevant Packaging : Gereksiz, saçma paket açmak. Tek sınıflık paketler açmak. Paketlerin ortak iş yapan sınıflarca doldurulması gerekir. İsmi ile müsemma olması gerekir paketlerin. Alakasız bir sınıfın alakasız paketler içerisinde olmaması gerekir.

Flow Control


Metod’u implement ederken kod akışının akllıca kontrol edilmesi gerekir
  • Zero-exception: Hiç exception fırlatmamak tüm exceptionları catch etme log basmak daha kötüsü hiçbir şey yapmamak. Exception’lar istisnai durumları ifade eder ve bu durumlarıda normal akışın kesilip bir fault tolerans yapılması gerekir. Exception catch edildiğinde log basmak sadece durumun oluştuğunu ifade eder ve onu çözmek için hiçbir şey yapmamışsınız demektir. Yerine API seviyesinde exception fırlatmak ve BL seviyesinde handle etmek gerekir.
  • Interruption’lara kayıtsız kalmak. Thread içerisinde beklerken InterruptedException’ı susturmak yerine Thread’in stop etmesini sağlayın.
  • Infinite Loops Loop kontrol değişkenlerini kontrol edin.
  • If Without Else Tüm If statmentlarının else case’lerine dikkat etmeli. Else’siz if olmaz!
  • Ambigious If statements If statement condition’ları içerisinden metod call olmamalı ve çok karışık and ve or içermemeli. Metod call yapıldığında exception yersek ne if ne else koluna düşeriz!

Maintenance: Bakım açısından kodu incelemek


Maintenance ve Performans arasındaki denge çok önemlidir. Ne performance için maintenance’dan vazgeçilir ne de tam tersi. Hatta maintenance’ı göz ardı etmek çok pahalıya mal olabilir. Performance problemini mesela daha iyi donanım kullanarak bile çözebilecekken maintenance ile alakalı bir bug’ı çözmek bir kaç aylık iterasyonlara mal olabilir.
Maintenance ile alakalı incelemeyi Code Maintenance ve Operations Maintenance olarak ikiye bölebiliriz.

Code Maintenance

  • Bad Naming: İsmi ile müsemma olmayan değişken/metot isimleri. Mesela: justDoIt() iyi de neyi just do edeyim! İsimleri düzeltin. Eğer isim bulamıyorsanız: 1.Kelime haznenizi genişletin. 2.Metod çok iş yapıyordur parçalara bölün. 3.Neden böyle bir isim koydunuz açıklayın.
  • Name pollution: Aynı şeyi farklı isimlerle tanımlama. Bir şeyin tüm projede tek ismi olsun. Result, response, answer gibi aynı şeyi ifade eden 3 tane isim kullanmak yerine bir tanesini seçin. Tüm projede derken DB tablo, kolon isimleri ve konfigurasyon parametreleri, proje dokümanını kast ediyorum.
  • Comment’ler Sınıf, değişken ve metod tanımlamalarında yazan asgari javadoc commentleri girilmelidir. getName(), setName() gibi accessor metodları için veya isminden ne yaptığı herkesin anlayabileceği sınıf, değişken ve metotlar için yazılmasa da olur. Ek olarak kod içerisinde kodun niçin öyle yazıldığına dair comment’ler olmalıdır. Burada ne yapıldığından çok neden öyle yapıldığının anlatılması gerektiğini tekrar vurgulamak isterim.
  • Method Extraction Çok uzun olan ve ayrılabilecek kodun tek metot yerine bir çok metoda ayrıştırılması gerekebilir.
  • Exception Handling Exception’ı catch edip log basıp exception’ı rethrow etmemek lazım. Ya log bas ya throw et. Rename, method extraction, signature change vs. operasyonları için Eclipse/Refactor menusune müracaat ediniz. Kısa yolları ezberlemekte de fayda var. Alt+Shift+R: Rename gibi. Refactor ederken bir acımasız olmak iki korkmamak gerektiğini de akıldan çıkarmamalı.

Operations Maintenance

  • Yeterli ve tam seviyesinde log basmamak. Yeterli derken nerelerde ve neyi loga basmak gerektiği konusunda bir konsensus sağlamayı kastediyorum. Bu şirket/grup/proje bazında şekillendirilebilir. Tam seviyesinden kastım ne zaman debug ne zaman info ne zaman warning ne zaman error basılacağının belirlenmesidir tosun. Bu biraz his biraz da tecrübe ile tamamlanabilir. Destek grubu bu konuda öneride bulunabilir.
  • CLI eksikliklerinin giderilmesi. CLI’den administration/operation yapılabilmesi tüm komutları sağlamamız gerekir. Bunları neler olduğu project spesifik olmakla beraber bir common set çıkarılması gerekir. CLI eksikliklerinin review ederken çıkarılması iyi olur.
  • Configuration eksikliklerinin giderilmesi On the fly konfig değişiklikleri yapılabiliyor mu …? Hangi konfigurasyon params online hangileri offline olmalıdır belirlenmeli ve bunlar review ederken valide edilmelidir.

Performance: Performability açısından kodu incelemek


Performance deyince nedense aklıma optimizasyon ve şu kurallar gelir:
  • The First Rule of Program Optimization: Don’t do it.
  • The Second Rule of Program Optimization (for experts only): Don’t do it yet.
    • Unnecessary Object Creation Object creation’ın olması gerektiğinden fazla olmadığı doğrulanmalıdır. Döngü içerisinde create edilen objeleri dışarda bir kere create etmek mümkün mü? Pooling yapılsa daha iyi mi olur? vs. sorgulanmalıdır.
    • Bad Threading Thread’lerin CPU kullanımını tavan yaptırmasına neden olacak etmenlerin araştırılması gerekir. Sleep yapılıyor mu? Kısır döngüye neden olacak birşey var mı? vs. araştırılmalıdır.
    • Too many String operation Java String operasyonları pahalı olduğu için StringBuffer, StringBuilder class’larını kullanmak gerekebilir.

Eminim bu listeye eklenecek maddeler olabilir. Bunları yorum olarak ekleyip katılmanız dileğiyle bitiriyorum.

Alıntı

Programlama Dillerini kimler geliştiriyor?

Piyasadaki bunca programlama dilini kimler, hangi mesleklerden insanlar geliştirmiş kısaca bir bakalım
Sahipleri : Necdet Yücel
Piyasadaki bunca programlama dilini kimler, hangi mesleklerden insanlar geliştirmiş kısaca bir bakalım. Bütün dillere bakmak mümkün olmadığından adı çokça geçenlere bakalım birlikte:
  • C : Dennis Ritchie tarafından tasarlanmış. Dennis Ritchie fizik ve uygulamalı matematik mezunu.
  • C++ : Matematik ve bilgisayar bilimleri mezunu Bjarne Stroustrup tarafından tasarlanmış.
  • C# : Microsoft tarafından geliştirilmiş olsan C#'ın mimarı üniversite mezunu olmayan Anders Hejlsberg
  • Fortran : IBM çalışanlarından çok maceralı bir hayat yaşamış olan matematikçi John Backus tarafından geliştirilmiş.
  • Java : Artık esamesi okunmasa da bir zamanların büyük şirketi Sun'ın geliştirdiği Java'nın mimarı bilgisayar bilimleri mezunu James Gosling
  • Javascript : Netscape'ten matematik ve bilgisayar bilimleri mezunu Brendan Eich tarafından geliştirilmiş.
  • Lisp : Bir matematikçi olan John McCarthy tarafından geliştirilmiş.
  • Perl : Kimya, müzik, tıp okumuş, dogal ve yapay diller bölümünden mezun olmuş Larry Wall tarafından geliştirilmiş.
  • PHP : Bir sistem tasarımı mühendisi olan Rasmus Lerdorf tarafından geliştirilmiş.
  • Python : Matematik ve bilgisayar bilimleri mezunu Guido van Rossum tarafından geliştiriliyor.
  • Ruby : Bilgisayar bilimleri mezunu Yukihiro Matsumoto tarafından geliştiriliyor.

Blog

Programlama Dillerinin Google ve İş Bulma Siteleri Kullanarak Karşılaştırılması

Java, C#, C++, Pyhton ve Javascript dillerinin önemini anlamak için Google'da Türkçe ve İngilizce olarak ve ayrıca Kariyer.net ve Monster gibi iş bulma sitelerinde arama yapalım.
Aşağıdaki Google'da arama yaptığımızda kaç adet sonuç bulundukları görülmektedir :
AramaBulunan Sonuç
"Java" Programlama Dili271 bin
"Python" Programlama Dili193 bin
"C#" Programlama Dili ve "C sharp" Programlama Dili145 bin + 30 bin
"C++" Programlama Dili125 bin
"Javascript" Programlama Dili195 bin
Bir de İngilizce arayalım :
AramaBulunan Sonuç
"Java" Programming Language173 M
"Python" Programming Language152 M
"C#" Programming Language47 M
"C++" Programming Language69 M
"Javascript" Programming Language202 M
Şimdi de iş bulma sitelerinden Kariyer.net'te aranan sonuçlara bakalım. İlk sonuçlar ilanın başlığında ikinci sonuçlar ise tüm mesaj içine yapılan arama sonuçlarıdır :
Aramaİlan BaşlığındaTüm İlanlarda
Java111953
Python412
C#11512
C++9187
Javascript10610
Aynı aramayı Monster'da yapalım:
AramaBulunan Sonuç
Java36893
Python205
C#10656
C++13075
Javascript26963
Bu listelerden şu sonuçlar çıkabiliyor :
  • Java en yaygın ve kariyer açısından en önemli dil olmaya devam ediyor.
  • Pyhton populerleştiği bir gerçek olsa da kariyer açısından şu anda iş olanağı az. Piyasa henüz kullanılıyor değil fazla.
  • C++ Türkiye'de çok düşük olmasına rağmen yurt dışında daha yüksek kullanımı var.

Peki sürekli dillerin "populerliğini" araştıran TIOBE Index (www.tiobe.com/tiobe-index) ve PYPL (http://pypl.github.io/PYPL.html) gibi index'ler neden yukarıdakine benzer sonuç çıkarmıyor ? Örneğin Tiobe index'inde Pyhton 3. sırada ve PYPL de 1. sırada. Halbuki Kariyer ve Monster sonuçlarına baktığınızda ilan verenler için hiç de öyle "populer" değil.
Aslında Tiobe de PYPL de geliştiricilerin hangi konuları aradığı, hangi konuları öğrenmeye çalıştığı ile ilgili bir populerlik araştırması. Yani geleceği ve ivmeyi gösteriyor aslında. Bu değerler önemli olabilir. Ancak geçmişte popüler olup kaybolan çok sayıda dil de olduğu gerçeği unutulmamalı. Sadece buna güvenerek gelecek inşa etmek mantıklı değil. Ancak Python'un özellikle veri bilimi ve yapay zeka alanlarında kesinlikle kalıcı olduğunu tahmin edebiliriz. Ancak Java kadar farklı alanlarda kullanımı olup olamayacağını zaman gösterecek. Ve bu zaman da 3, 5 yıl gibi kısa bir zaman olmayacaktır.
Benzer bir durum Javascript sunucu framework'leri ve sunucuları için de geçerli. Javascript'in sunucu tarafında da popülerleştiği bir gerçek. Ancak orada da Java açık ara üstünlüğüne devam ediyor. Javascript ile yapılan aramalarda Front-End bölümü dışarıda bırakıldığında Java'nın yanında hala çok düşük kalmaktadır. Burada da tıpkı Pyhton gibi sunucu tarafındaki Javascript'in de gelişmesini de zaman gösterecektir.

Materyal

Doğrudan Back-End Kitabını Zafer Teker Tanıtıyor

Doğrudan Database Back-End Programming kitabını yazarı Zafer Teker tanınıyor. Kitap şu konuları içeriyor : Programlama, Yazılım ilkeleri ve yöntemleri Temel veritabanı ve SQL, NoSQL, Couchbase, Neo4j, XML, XSL, XSLT, XLink, XPointer, XSL-FO, XML Schema, DTD, MySQL, Oracle, PL/SQL, Linux ve DOS

Materyal

Önder Teker - Framework Nedir ?

Framework Nedir ? Ne işe Yarar ? Kütüphane (Library) ile farkları ne ? Farklı dillerde farklı framework'ler mi var ? Framework gerekli mi ?

Materyal

Front-End, Back-End, Full-Stack Nedir ?

Front-End, Back-End, Full-Stack Nedir ?
Front-End'de hangi diller ve teknolojiler kullanılır ?
Front-End'de hangi framework'ler populer ve kullanımda ?
Back-End'de hangi diller ve framework'ler var ?

Materyal

Ayhan Gökoğlu Unity'yi Anlatıyor. Unity nedir ve nerelerde kullanılır ?

Unity uzmanı Ayhan Gökoğlu aşağıdaki sorulara cevap veriyor :
Unity nerelerde kullanılır?
Unity iş imkanları var mı? Varsa ne tür isler var ?
Unity Türkiye de nerelerde tercih ediliyor ?
Unity öğrenmek isteyenlere ne tavsiye edersiniz ?

Materyal

Önder Teker - C / C ++ Nedir ve Nerelerde Kullanılır ?

C / C++ nedir ? Nerelerde kullanılır ? C / C++ farkı nedir ? C / C++ dünyada çok kullanılırken neden Türkiye de daha az kullanılıyor ? C / C++ zor mu ? Java / C# dillere benziyor mu ? C/ C++ geliştirmeye nasıl yaparız ? Nasıl başlarız ? Oyun programlama için C/C++ öğrenmeli miyiz ?

Materyal

Önder Teker - PHP Nedir ve Nerelerde Kullanılır ?

PHP nedir ve nerelerde kullanılır ? Java/C# varken neden PHP kullanılır ? PHP web projelerinde neden yaygın ? PHP de framework var mı ? PHP kullanımı giderek azalıyor mu ? Geleceği var mı ? PHP nasıl bir dildir ? C, C#, Java ya benziyor mu ? Javascript framework'leri ile birlikte kullanımı nasıl ? Node.js ve Phyton ile PHP karşılaştırması.

Materyal

Godoro Tanıtım - Görüntülü Eğitim - C

Godoro'nun C görüntülü eğitiminin tanıtımı.

Materyal

Godoro Tanıtım - Görüntülü Eğitim - C++

Godoro C++ görüntülü eğitiminin tanıtımı.

Veri

Program, Programlama Dili, Programcı ve Programlama Nedir ?

Program Nedir ?

Bir işin ve sürecin gerçekleşmesi için yapılması gerekli adımların nasıl yapılacağını içeren detaylı yöntemler bütününe program adı verilir. Örneğin :
sabah şurada kahvaltı yapacağım, öğle şu arkadaşa gideceğim, akşam ailemle şurada yemek yiyeceğim, gece şuraya gideceğiz
şeklinde yapılan bir günün planı o kişi için bir programdır.

Bilgisayar Programı Nedir ?

Bir programlama dili kullanarak, bir bilgisayara veya bilgisayar benzeri cihazlara bir işlemi veya işlemleri yaptırmak için yazılan komutlar, yöntemler bütününe, yazılıma bilgisayar programı adı verilir. Aslında bir bilgisayara çalıştırması için verilen bir programa bilgisayar programı denir.
Örneğin iki sayıyı toplayan program şu şekilde olabilir :
Kullanıcıdan birinci sayıyı iste ve girmesini bekle
Kullanıcı ilk sayıyı girdikten sonra ikinci sayıyı girmesini iste ve bekle
İkinci sayıyı aldıktan sonra ilk sayı ile topla
Sonucu ekrana bas

Programlama Dili

İki sayıyı toplayan program kafamızda yaptığımız, planladığımız bir program. Bu kafamızdaki planı gerçekleştirmek için kullanılan dillere de Programlama Dili adı verilir. İnsanların yazabileceği ve bilgisayarın da anlayabileceği diller programlama dilidir. Kafamızdaki plan bir programlama dili ile yazılır. Ve bu dil makinenin anlayacağı dile çevrilir.

Programlama

Kafanızda planladığınız programı programlama dili ile yazma ve test edip çalıştırma sürecine programlama adı verilir. Özetle şu aşamalar programlama aşamalarıdır:
Planla
Yaz
Test Et
Çalıştır
Tamamla

Programcı

Bir veya daha fazla programlama dili kullanarak program üretebilen kişilere de programcı adı verilir.

Program Kavramının Diğer Anlamı

Kullanıcıların veya diğer bilgisayarların ihtiyaçlarını karşılamak için programlanmış bir yazılım bütününe de program adı verilir. Örneğin yazı yazmanızı sağlayan veya resim üretmenizi sağlayan, müzik kaydetmenizi ve işlemenizi sağlayan bir yazılım ürününe de program adı verilir. Aslında buradaki program ifadesi bir yazılım ürünüdür.



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir