Java Günlüğüm
Yazılım, Java, BT, azıcık felsefe, biraz mizah...
  • Udemy Eğitimleri
  • Temiz Kod
  • Tasarım Kalıpları
  • Hakkımda
  • Arşiv
RSS
16 Mart 2018

JDK 10 ve “var” Özelliği

Akin Java java 10, var

Malumunuzdur, artık Java’nın, Standard Edition (SE) dediğimiz çekirdek dilinin gelişimi, 2-3 senede bir olan big-bang sürümlerle değil, ufak-tefek ama yılda iki defa yapılacak sürümlerle olacak. Bu yeni durumun ilk uygulaması 20 Mart 2018’de çıkacak olan 10. sürümdür. Java SE 10’ın standart gerçekleştirmesi olan JDK 10’un Open JDK sayfasına buradan ulaşabilirsiniz. JDK 10’un aday sürümlerini de buradan indirebilirsiniz.

Java SE 10 ile gelen en temel dil özelliği “var” anahtar kelimesidir. “var” anahtar kelimesi, JEP 236 ile Java’ya katılmış yerel değişkenler (local variables) için tip çıkarımı” ( Local-Variable Type Inference) yapan bir yapıdır. Bu yapı ile yerel bir değişken tanımlarken (definition) kullanılan “tip değişkenAdı = ilkDeğer” formatında artık “tip” bilgisininin verilmesine gerek yoktur. Tip bilgisi yerine “var” ile yerel bir değişken tanıtılabilir. Dolayısıyla aşağıdaki tanımlar aynıdır:

int i = 5;
var i = 5;

Fakat şu satırın problemli olduğunu rahatlıkla farkedebilirsiniz:

var i;

Çünkü yukarıdaki durumda “i” sadece tanıtılmakta (declaration) ama tanılanmamaktadır çünkü bir ilk değer ataması yapılmamıştır. Bu durumda derleyici “i”nin tipini nereden belirleyecek? Bu yüzden derleyici “cannot infer type for local variable i” hatası verecektir.

Şimdi aşağıdaki daha geniş örneğe bakalım:

package org.javaturk.java10;

import java.util.*;
import java.util.stream.*;

public class VarExample{
	private static String[] stringIntArray = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16",
			"17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35",
			"36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50"};
	
    //  private var m = 10;            // Hata: 'var' is not allowed here
    //  private static var b = true;   // Hata: 'var' is not allowed here

	public static void main(String ... args){

		System.out.println("var Example");
		var k = 5;
		System.out.println("k: " + k);

		//i = true; // "var" sadece tip çıkarımı sağlar, dinamik tip yapısı değildir. 

		var d = new Date();
		System.out.println("Date: " + d);

		var list = new ArrayList<String>();
		list.add("Java 9");
		list.add("Java 10");
		System.out.println("List: " + list);

		var addition = new MathOperation(){
			@Override
			public double operate(double arg1, double arg2){
				return arg1 + arg2;
			}
		};

		System.out.println(Math.PI + " + " + Math.PI + ": " + addition.operate(Math.PI, Math.PI));

		MathOperation multiplication = (arg1, arg2) -> arg1 * arg2;
		System.out.println(Math.PI + " * " + Math.PI + ": " + multiplication.operate(Math.PI, Math.PI));
	
		Stream<String> stream = Arrays.stream(stringIntArray);
		var size = stream.map(s -> Integer.parseInt(s)).filter(i -> i % 2 == 0).map(i -> Math.sqrt(Math.sqrt(i))).map(i -> i * i * i * i).filter(i -> i > 5).count();
		System.out.println("Size: " + size);
	}

	interface MathOperation{
		public double operate(double arg1, double arg2);
	}
}

Burada bir kaç noktaya dikkat çekmek istiyorum. İlki, “var”ın sadece yerel değişkenler için kullanılabileceği kuralıdır. “var”, nesne (object ya da instance) ya da sınıf (class) değişkenleri için kullanılamaz, kullanılması halinde, “‘var’ is not allowed here” mesajlı bir derleme zamanı hatası alınır. Bir diğer konu ise “var”ın bize sadece daha az kod yazmamızı sağlayan basit bir yapı olduğu gerçeğidir. “var” hiç bir şekilde Java’nın statik tipli yapısını değiştirmez, dinamik tipli hale getirmez. Dolayısıyla yukarıdaki kod örneğinde “i = true;” geçerli bir kod değildir ve bundan dolayı da derleyici, “true”nun “int” tipine çevrilemediğini söyleyerek hata verecektir.

Programlama dillerinde “var”, “def” hatta “var” ile farklı bir anlamda kullanılan “val” gibi kısaltmalar ile değişken, sabite ya da metot tanımlarken kolaylık sağlanması özellikle modern dönemde sanki bir standart haline gelmiş durumda. Kotlin ve Go dilleri en taze örneklerden. Java’ya geç de olsa böyle bir yapının gelmesi, kod yazarken üç-beş tuş vurmaktan daha fazla kolaylık sağlayacak. Örneğin yukarıdaki kodda stream nesnesini işleyerek bir long üreten satırı düşünün. Bu gibi satırlarda dönen nesnenin ne olduğuna karar vermek bazen zaman alabilir. Yukarıdaki örnekte satırdaki en son metot çağrısı olan count()‘ın muhtemelen bir int döndürdüğünü düşünürüz ama gerçekte dönen bir long‘tur. Bu türden ufak-tefek can sıkıcı ve hız kesen durumlar, kod yazarken hemen her dakika karşılaştığımız cinstendir. Aşağıdaki gibi bir kod parçasında dönüş tipi daha da karmaşıklaştığında “var” kullanımı ciddi kolaylık sağlayabilir.

“var”, sadece yerel değişken tanıtırken ya da tanımlarken kullanılabileceğinden, for ya da while gibi çevrimlerde yer alabilir:

 
    var sum = 0;
	for(var i = 0; i < 20; i++){
		var remainder = i % 2;
		if(remainder == 0)
			sum+= i;
	}

Ama metot arayüzlerinde yer alamaz, aşağıdaki iki kullanım için de derleyiciden “‘var’ is not allowed here” hatası alırsınız.

     public var returnSomething(){
		return 5;
	}

	public void receiveSomething(var arg){
		
	}

 

Ama metottan dönen değeri atarjen “var” kullanabiliriz:

    
public static void main(String ... args){
		var i = returnSomething();
		
	}

    public static int returnSomething(){
		return 5;
	}

 

“var”ı dizilerde de kullanmak aşağıdaki gibi küme parantezi içinde ilk değer verildiği hallerde problemlidir:

  
   var intArray = {1, 2, 3};

Bu durumda derleyici “(array initializer needs an explicit target-type)” mesajıyla hata verir. Siz zekailik yapıp acaba tip bilgisini örneğin “L” ile versem ne olur derseniz:

   var longArray = {1L, 2L, 3L};

kodunuzun akibeti yine aynı olacaktır.

Fakat aşağıdaki gibi kullanımda hem “intArray” tanımlamada hem de dizideki elemanları for çevriminde almada problem yoktur:

  
   var intArray = new int[3];
	intArray[0] = 1;
	intArray[1] = 2;
	intArray[2] = 3;
	for(var t : intArray)
		System.out.println(t);

 

Bu konuda söyleyebileceğimiz son şey ise lambda ifadelerini ya da metot referanslarını atamada yine “var” kullanımının mümkün olmadığıdır. Aşağıdaki örneklerden de farkedeceğiniz üzere bu ifadelerde tip bilgisi, atamanın sağ tarafından çıkmaz. Örneğin “division” tanımında kastedilen aslen onun MathOperation tipinde bir referans değişkeni olduğudur ama bu bilgi “var” kullanımında kaybolmaktadır. Bu yüzden derleyici hep “(lambda expression needs an explicit target-type)” ya da “(method reference needs an explicit target-type)” hatası verecektir.

  
   var division = (arg1, arg2) -> arg1 / arg2;
   var printLine = System.out::println;

 

Bu sebeple yukarıdaki iki satırın doğru halleri şöyle olmalıdır:

  
   MathOperation division = (arg1, arg2) -> arg1 / arg2;	
   Consumer printLine = System.out::println;

 

Java 10 ve en temel dil yeniliği olan “var” kullanımıyla ilgili bu kadar ile iktifa edelim.
Bol “var”lı günler 🙂

Toplam görüntülenme sayısı: 3759

26 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
18 Şubat 2018

Onur Özcan

Akin Diğer

Sevgili Java severler,

Agile süreçler eğitmen ve danışmanı Onur Özcan, Selsoft’a katıldı.

Selsoft, Onur Özcan, agile süreçler ve Scrum konusunda, uzun yıllar hem eğitmen hem de uygulamacı olarak çalışmış bir uzman. Şubat ayı itibariyle Selsoft bünyesinde eğitim ve danışmanlık hizmetleri vermeye başladı. Onur, yansıların üzerinden giden, sadece orada yazanı okuyan bir eğitmen değil. Anlattığının tarihini, hangi ihtiyaçlarla ortaya çıktığını ve gelişimini iyi bilen, ülkemiz ortamlarında verimli olarak nasıl hayata geçirileceği üzerine kafa patlatan, uygulama pratiklerini bizzat çalışmış ve yaşamış, pek çok müşteride deneyimlemiş bir uzman. Pek çok kere gördüğümüz gibi, ülkemiz dışında geliştirilen metodoloji ya da teknolojileri birer ideoloji haline getirip ülkemizde pazarlamasını yapan ideologlardan hiç değil.

Onur Özcan’ın paylaşımlarına buradan ulaşabilirsiniz.

 

Toplam görüntülenme sayısı: 1206

9 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
14 Aralık 2017

Analist ve İş Bilgisi

Akin İş ve İhtiyaç Analizi, Yazılım Mühendisliği Analist, analiz, iş analizi, Sistem Analisti

Giriş

Soru şu: Analist yani bazen iş analisti, bazen ihtiyaç ya da gereksinim analisti bazen de daha klasik bir isimlendirmeyle sistem analisti dediğimiz rol için iş bilgisi ne kadar önemlidir? “Hoppaaa! Böyle de soru mu olur?” demeyin. Ben de farkındayım, iş bilgisinin, analistin varlık sebebi olduğunun. Analistin en temel sorumluluğudur iş bilgisi, tamam da demek istediğim şeyi açıpa çıkarabilmek için şu soruyu da sorayım: Analistin, benzer şekilde iş bilgisine sahip operasyonel bir kullanıcıdan farkı yok mudur? Vardır deriz ama nedir tam olarak bu fark? Daha analitik olması, daha iyi sorular sorabilmesi, ya da iletişiminin daha güçlü olması mıdır sadece?

Analist Yetkinlikleri

Konuyu biraz açayım. Analistin yetkinlikleri 3 boyutta ele alınabilir:

  1. İş alanı bilgi ve yetkinlikleri (business/application domain knowledge and skills): Analistin çalıştığı sektördeki terimlere, süreçlere, rollere ve çıktılara ne kadar hakim olduğu, onun iş bilgisinin ölçüsüdür. Örneğin bankacılık sektöründeki bir analistin çalıştığı alt alanın krediler olduğunu düşünelim. Bu analist, kredilerle ilgili başvuru ve değerlendirme süreçlerini bilmesi, bunlarla alakalı analiz toplantılarında bulunması vb. yetkinlikler, analistin iş alanı ile ilgili yetkinliklerine örnektir.
  2. İş ve yazılım ihtiyaç analizi bilgi ve yetkinlikleri (business and software requirements analysis knowledge and skills): Analistin, formal olarak bir süreci tanımlayabilme, oradaki adımları, iş kurallarını ve aktörleri detaylarıyla belirleyebilme, detaylar arasındaki benzerlik, farklılık, çelişiklik vb. çıkarımları yapabilme, bu bilgileri bir yazılıma dönüştürebilecek şekilde daha formal ve matematiksel formlara örneğin diyagramlara dökebilme, ihtiyaçlarla alakalı önceliklendirme ve risk analizi yapabilme ve tüm bunları dokümana yansıtma yetkinlikleri.
  3. Bireysel yetkinlikler (individual skills): İletişim, ikna, sorgulama, toplantı yönetimi vb. daha yumuşak yetkinlikler (soft skills). Örneğin bir analistin iyi bir dinleyici olması, iyi not alabilmesi, hızlı ve analitik düşünüp çıkarımlarda bulunarak bir analiz toplantısında geri sorularla muhatabını yönlendirebilmesi, çatışan ihtiyaçlara sahip kullanıcılar arasında inisiyatif alabilmesi, onları yönlendirmesi ve karar verilmesini sağlayacak girdileri sunabilmesi vs. bu türden yetkinliklerdendir.

Yukarıdaki 3 farklı yetkinlik alanından hangisi sizce en önemli olandır? İş bilgisi mi, işi çözümleyebilme yetkinlikleri mi yoksa müşteriyle daha iyi iletişim kurabilme yetkinlikleri mi?

Ülkemizde eğitim ve danışmanlık vesilesiyle gittiğim yerlerde bunu devamlı gözlemliyorum. Hatta ben de, tam zamanlı çalışırken ya da sonrasında danışmanlıklarda, uzun seneler analist işe alımıyla uğraştım ve uğraşıyorum. Dolayısıyla analist işe alma ve seçme süreçlerinden haberdarım. Özellikle eğitimlerde ve seminerlerde katılımcılara soruyorum, sizin kurumunuzda hangisi daha çok öne çıkıyor diye. Örneğin, “siz buraya hangi yetkinliklerinizle alındığınızı düşünüyorsunuz?” diye soruyorum. Elde ettiğim kanı şu: Ülkemizde analist denince akla gelen en temel şey, iş bilgisidir. Tabiri caizse, işi bilmek, o sektörde senelerdir bulunmuş olmak, genel olarak bir kişiyi analist olarak tanımlamada kullanılan en temel etmendir. İkinci sırada gelen, bireysel yetkinliklerdir. Yani iletişimi güçlü mü, müşterilerle konuşurken ne kadar düzgün cümleler kurabiliyor vs. Bu iki yetkinliği bir araya getirdiğimizde, işi bilen ve iletişimi güçlü kişi, ülkemizde mükemmel analist adayıdır. Kurumlar kendi kültürlerine göre bu iki faktörden birisine daha fazla önem verebilirler. Yani örneğin bir kurum, özellikle daha az tecrübe seviyelerinde, iletişim becerileri güçlü bir adayın zekasına da güvenerek, iş bilgisini hızlıca elde edebileceğini düşünerek onu analist olarak işe alabilir.

Bu yazıyı yazdığıma göre benim de kendi fikrimi belirtmem gerekir. Bence bir analistin en temel yetkinliği, rolüne adını veren, iş ve yazılım ihtiyaçları analizi bilgi ve yetkinlikleridir. Bir analist, her şeyden önce, bir süreci nasıl ifade edeceğini, o süreçteki tüm adımları, aktiviteleri, aralarındaki ilişkileri, çıktıları, süreçte yer alan rolleri ya da aktörleri, süreçler arasındaki ilişkileri, süreçleri yönlendiren iş kurallarını vs. ortaya koymakla sorumludur. Bu yetkinlikler, tabi olarak farklı sektörlerde edinilen tecrübeyle kazanılır ama nihayetinde sektörden bağımsızdır. Bir örnek vereyim: Bir süreçte, durumu önemli olan ve farklı durumlar arasında gezen temel bir nesne var. Örneğin bir başvuru sürecinde, başvurunun pek çok duruma sahip olması, buna iyi bir örnektir. Başvuru ilk defa alınmış olabilir, ön elemeyi geçmiş, evrakları bekleniyor, son incelemede, vb. durumların birinde olabilir. Tüm bu durumların, sonlu durumlu bir makina (finite-state machine) olarak ortaya konması, yani durumlar ve aralarındaki geçişlerin detaylı olarak ortaya belirlenmesi yetkinliği, ne bir iş bilgisi ne de iletişim yetkinliğidir. Bu yetkinlik, analisti en temelde analist yapan şeydir. Böyle bir modelleme yetkinliğine sahip bir analist, herhangi bir iş alanında sonlu durum makina modellemesi yapabilir, oluşturduğu modelin tasarımda bir durum tasarım kalıbıyla (state design pattern) tasarlanmasını sağlayabilir ve nihayetinde de developerlar dahil herkes kendisine duacı olur. Çünkü böyle çok durumlu nesneler, kodlamada en problemli nesnelerdir, sebebi ise iş bilgisi çok yüksek olsa bile analistin bu durumları formal bir şekile çözümleyip ifade etmemiş ya da edememiş olması, açıkçası, ne tasarıma ne de programlamaya bir katkı sunmaz.

Nasıl her iş alanı, apayrı süreçleri ve iş kuralları olan bir alan (domain) ise, iş ve yazılım ihtiyaçları mühendisliği (business and software requirements engineering) de apayrı bir iş ve uzmanlık alanıdır. Bu alanın da kendine göre süreçleri, iş kuralları, çalışmaları ve çıktıları vardır. Bu alanın çalışanlarının da kendisine has yetkinlikleri, yaptıkları işleri ve ürettikleri çıktıları vardır.

İş bilgisini çözümleme yetkinliklerine sahip olmayan bir analist ancak postacı olur. Ya da analistlerin kafasına kazındığı şekliyle sadece “köprü” olmaya devam eder, tek yaptığı “al-ver”dir, ne çözümleyici olmak söz konusudur ne de bir katma değer ortaya koymak. Böyle ortamlarda zaten iş bilgisi de malumattan öteye gitmez, bilgi seviyesine çıkamaz çünkü. O ortamda senelerce çalışsanız bile hala aklınızdaki iş bilgisini bir başkasına aktarabilir hale getirmekte güçlük çekersiniz. Aktarsanız bile karşı tarafı zorlarsınız çünkü standart ve verimli yöntemleri kullanmazsınız. Çözümleme süreç ve tekniklerinden haberdar olmayan bir analist iğne oyası gibi malumatla uğraşır, onlar arasında kaybolur. Analistten beklenen, bir soru karşısında “hikmet” (wisdom) seviyesinde katkıda bulunmasıdır ama o ekranın şurasındaki bir arayüz elemanın üzerinden konuşur. Ondan beklenen, iki farklı durumu birbiriyle kıyaslayıp, etki analizi vs. yapmaktır ama o bunu sağlıklı bir şekilde yapamaz çünkü kafasında sistemli ilişkiler değil, malumat bulutları vardır. Ama unutmayın, buradaki temel sorun analistten ziyade, kurumdadır. Analiz çalışmalarında “analitik” olmayan bir kurum, analistinin çözümleme süreç ve tekniklerinden haberdar olmasını da isteyemez çünkü bu konuda fikri yoktur.

İş bilgisi, tabi olarak bir analist için önemlidir, sistemli bilgiyi hazmetmek çok daha kolaydır. İş bilgisine sahip bir analist daha hızlı iş yapar, daha rahat ve doğru davranır. Müşterisiyle daha rahat iletişime geçer ve ona güven verir. Ama iş bilgisi, bilgi olursa işe yarar, değilse, bir malumat yığınından ibaretse, vakit kaybettiren bir stres unsuru olur. Ve analistin yeterince teknik çalışmaması, bu malumatı sadece büyütür, bilgiye çevirmez.

İşte, bir analisti, operasyonel kullanıcıdan temelde farklı kılan şey, formal bir çözümlemeci disipline sahip olmasıdır. Analitik düşünebilen, işini gözlemleyen, baştan sonra kavramaya çalışan operasyonel çalışanların analist olmaları iyi bir şeydir, çözümleme ve modelleme tekniklerini öğrenmeleri kaydıyla.

Ülkemizdeki Durum

Ülkemizde sistemli iş bilgisi biriktiren kurumlar maalesef pek azlar. İşini en detayına kadar anlatabilecek bırakın operasyonel kullanıcıyı, iş birimi sorumlusu, müdürü bulmak bile şanstır bu ülkede. Amerika’dan ilk döndüğüm zamanlardı, ilk projelerimin birinde, sürecin sahibi olan birim müdürüyle analiz amaçlı bir araya gelmiştik. Müdür, daha toplantının başında, süreçlerle ilgili olarak analizi BT’deki programcılarla yapmamızı istemişti bizden! Zaten toplantıda bir de tecrübeli programcı vardı. Aynı kurum agile ödülleri almaya devam ediyor, şatafatlı uluslararası danışmanlık şirketleriyle 3-5 senede bir süreç çalışması yapıyor vs. Ama gidin sorun bakalım, müşteri memnuniyeti artıyor mu? Ya da bugların sayısında azalma olmuş mu? Ya da ya da developerlar, kendilerine gelen analiz dokümanlarından memnunlar mı? Örneğin şöyle tipik durumlar olur ülkemizde: Kurumlar agile metodolojilere geçtiklerini söylerler ama hala hantaldırlar, hala çıktılarının kalitesi kötüdür, hala başarı kişilerin özveriyle çalışmalarına bağlıdır, hala her yeni sürümü canlıya almak çok stresli bir iş olmaya devam eder. Neden? Formal çözümleme teknikleri gibi mühendislik disiplinin gerektirdiği işler yerine “dostlar ‘agile’da görsün” şeklinde, görüntü üzerinden iyileştirmelerle yetindiğimiz için.

Ülkemizde bu durumlardan dolayı mesela “iş analizi danışmanlığı” pek görülen bir durum değildir. Halbuki ABD’de böyle çalışan, 6 ay petrol çıkaran bir organizasyonda çalışıp, süreçlerini analiz eden, sonra bir sigorta şirketinde ürün biriminde analiz danışmanlığı yapan, sonra başka bir yerde örneğin ticari olmayan (non-profit) bir kurumda yine analiz sürecinde çalışan profesyoneller var. Çünkü, PM gibi, programcı gibi, analist olmanın en temel yetkinliklerini kendinde barındırıyor ve her ortamda bunları kullanıyor.

Ve Bir Referans

Bu noktada size, iş ve ihtiyac analizi konusunda çok iyi bir otorite olan Karl Wiegers’ın Software Requirements isimli kitabını tavsiye ederim. Kitabın 3. bölümü “Business Analyst” başlığını taşımaktadır ve bir analistin yetkinliklerini ve sorumluluklarını, kimlerle nasıl iletişimde bulunacağını, hangi geçmişe sahip kişilerin nasıl bir geçiş süreciyle analist olabileceklerini ayrıntılı olarak anlatır. Ayrıca bu kitapla beraber gelen malzemeler arsında, Türkçesini bu yazıda paylaştığım iş analisti görev tanımını da var. O tanımda, bir iş analistinin sahip olması gereken bilgiler anlatılırken, “Gerekli Bilgiler” başlığı altındaki son madde şöyledir:

“Kullanıcı temsilcileri nezdinde güvenilirlik sağlaması ve onlarla etkin çalışabilmek için, zorunlu olmamakla birlikte, uygulama alanı bilgisi bir artıdır.”

Ya da orijinal haliyle:

“Application domain knowledge is a plus, to have credibility with user representatives and be able to work effectively with them.”

Bu yazıyı okuyup da bu cümleye katılmayacak pek çok kişi olacaktır. Ama ben şunu her zaman iddia ediyorum: İş süreçlerini çözümleme formal yetkinliklerine sahip, iletişim yetenekleri iyi bir analist, herhangi bir iş alanını en çok bir senede çok iyi bir şekilde öğrenebilir, o alandaki iş sorunlarını çözebilir, çok etkin analiz toplantıları yapabilir. Yeter ki çalıştığı ortamda iş bilgisi, bölük pörçük, insanların kafalarındaki malumatlardan ibaret olmasın, derli toplu, soyuttan somuta gider şekilde, farklı formal modellerle ifade edilmiş olsun. Ama gelin görün ki, senelerdir aynı iş alanında, hatta aynı kurumda çalışan analistlerin sıklıkla bana, iş alanlarıyla ilgili olarak kaotik bir ortamda olmaktan kaynaklanan rahatsızlıklarını ilettiklerini bilirim. Dahası, böyle bir analist, fırsat verilse, sistemli çalışmasıyla, malumat yığını da olsa bu yığını, çözümleyerek, formal iş bilgisine dönüştürebilir. İş süreçleri mühendisliği (business process engineering) adı verilen böyle bir çalışma, bir kurumun en değerli olan iş bilgisini, rahatça anlaşılacak ve tekrar tekrar kullanılacak bir formata döker. Ve bu bilgi, o kurumun en değerli varlığı olur.

Son bir soruyla yazımı bitireyim: Düşme tehlikesi olan bir uçağın pilotu olarak, uçağı kurtarmak için içeride bulunan sadece 2 kişiden, bir analist ve bir developerdan hangisini aşağıya atarsınız? Bu yazıdan sonra tabi ki “developer” diye cevap vereceksiniz muhtemelen. Ben ise daha ağır olanı atmayı tercih ederdim 🙂

Toplam görüntülenme sayısı: 1709

12 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
21 Kasım 2017

Farklı Dillerin Bakış Açısıyla Nesne-Merkezli Programlama

Akin Eğitim ve Seminer

Sevgili Java-serverler, daha ötesinde yazılımcılar,

28 Kasım 2017, Salı günü saat 14:00’da, İTÜ Arı Teknokent bünyesinde düzenlenen “Farklı Dillerin Bakış Açısıyla Nesne-Merkezli Programlama” başlıklı konferansta yazılımcı arkadaşlarla bir araya geleceğiz nasipse. Konferansın duyurusu bu linktedir: http://www.ariteknokent.com.tr/tr/etkinlik/farkli-dillerin-bakis-acisiyla-nesne-merkezli-programlama

C++ ve sonrasındaki ana akım nesne-merkezli programlama dilleri üzerinden temel nesne yapılarını ele alacağımız konuşmada, Python, Java ve C# üzerinden örneklerle ilerleyeceğiz. Vakit bulabilirsem PHP ve Golang’den de bahsetmeyi düşünüyorum.

Konuşmamıza teşrif ederseniz çok seviniriz 🙂

Toplam görüntülenme sayısı: 819

5 Bunu beğendim 🙂
Tweet
Follow me
Tweet to @kaldiroglu
< 1 2 3 4 5 >»

Günlüğüme Hoşgeldiniz

Bu günlükte, Yazılım Mühendisliği, Bilgi Teknolojileri, Java, kişisel gelişim ve zaman zaman da diğer konulardaki düşüncelerimi sizlerle paylaşacağım. Umarım beğenir ve hoşça vakit geçirirsiniz.

Her türlü düşüncenizi, yorum olsun, beğeni ya da eleştiri olsun, bana iletmenizi rica ediyorum sizden. Ayrıca bana akin@javaturk.org adresinden ya da Twitter'dan ulaşabilirsiniz. Videolarıma da buradan ulaşabilirsiniz.

Teşekkür ederim.

Akın Kaldıroğlu

Rahat Okumak İçin

A Decrease font size. A Reset font size. A Increase font size.

Sosyal Medya

  • Twitter
  • Facebook
  • LinkedIn
  • Youtube

Son Twitlerim

→ Takip Etmek İçin

Abone Olun

Emalinizi girerek yazılardan haberdar olun.
Loading

Son Yazılarım

  • Udemy Eğitimlerim Üzerine
  • (başlıksız)
  • Clean Code / Temiz Kod Eğitimi Udemy’de
  • Java ile Nesne-Merkezli Programlamaya Giriş Eğitimi Udemy’de
  • Selsoft Video Eğitimleri
  • Spring ile Kurumsal Yazılım Geliştirme
  • Corona Günlerinde Design Patterns
  • Corona Günlerinde Java
  • JDK 10 ve “var” Özelliği
  • Onur Özcan
  • Analist ve İş Bilgisi
  • Farklı Dillerin Bakış Açısıyla Nesne-Merkezli Programlama
  • Java Nedir?
  • Bilgi Teknolojilerinde Yetenek Yönetimi – II: Tanımlar ve Eleştiriler – I
  • Alelade Hikayeler – II: Bir Başka Performans Problemi

Popüler Yazılar ve Sayfalar

  • Java’ya Nasıl Başlarım? Java’yı Nasıl Öğrenirim? – I
  • Nasıl Yazılımcı Olalım? – II: Hangi Bölümü Okuyalım?
  • Oracle’ın Java SE Sertifikaları: OCA, OCP ve OCM
  • Java Kurulumu ve İlk Programımız
  • İş Analisti İş Tanımı
  • Java Tutorial ya da Kendi Kendine Java Öğren
  • Nasıl Yazılımcı Olalım? – I: Üniversiteli mi Alaylı mı?
  • Tasarım Kalıpları
  • Java’ya Nasıl Başlarım? Java’yı Nasıl Öğrenirim?
  • UML Nedir?

Yazı Kategorileri

Yazı Takvimi

Haziran 2025
P S Ç P C C P
 1
2345678
9101112131415
16171819202122
23242526272829
30  
« May    

Yazı Arşivi

Blogroll

  • Binnur Kurt'un Günlüğü
  • Ender'in Java Blogu
  • Erdem Seherler
  • Kızımın Günlüğü
  • Kurumsal Java
  • Levent Karagöl
  • Levent'in Java Blogu
  • Mert Can Akkan’s java tips,options, news…
  • Yaşar Safkan
  • Yasin Saygılı
  • Yazı Dünyası

Yazı Etiketleri

analiz Bilmek C Desen design pattern EJB Eğitim Fortran Hibernate Java Java'ya nasil baslarim Java dersleri Java EE Java Persistence API Java SE Java Sertifika Java Öğren Java öğreniyorum Java öğrenmek JPA Kalıp Kurumsal Java nesne nesne-merkezli No Silver Bullet object object-oriented Oracle Java Certifications pattern performans programlama programlama dilleri programlama nedir sertifika singleton tasarım tasarım deseni tasarım desenleri tasarım şablonu yazılım yazılım geliştirme Yazılım Mühendisliği yazılımın doğası yazılımın zorlukları Şablon

↑

© Java Günlüğüm 2025
Powered by WordPress • Themify WordPress Themes
 

Yorumlar Yükleniyor...