22 Ocak 2015 Perşembe

Hadi Java Öğrenelim - Sınıflar #1

Sınıflar, nesne yönelimli programlama dillerinin işlevsel alt parçalarıdır. Basit programların yazımında çok ihtiyaç olmasa da yıllar ve bilgisayar teknolojileri ilerledikçe daha karmaşık ve büyük programların, oyunların ve işletim sistemlerinin yazımları zorlaştığı için ihtiyaçtan ortaya çıkmıştır. Sınıfların aslında temelde yaptığı şey kodunuzu organize etmek ve sizi ciddi anlamda zaman kaybından kurtarmaktır.

Örneklerle anlatmak her zaman daha keyifli ve kolaydır. Mesela bir oyun geliştirdiğinizi düşünün, bir çok oyun karakteri yaratmalısınız. İsimleri, kıyafetleri, güçleri, canları, kabiliyetleri, silahları... farklı farklı bir çok karakter. Bazen aynı karakterden de onlarca oluşturmanız gerekir. O zaman her karakter için defalarca belki de aynı tanımlamaları kullanarak satırlarca kod yazmak zorunda kalacaksınız. Bunun yerine bütün karakterleri türetebileceğiniz bir karakter sınıfı olduğunu düşünün. Hazır çikolata kalıpları gibi. Tek yapmanız gereken sıcak çikolatayı hazır kalıba dökmek. Belki ilk başta sadece o hazır kalıbı oluştururken biraz zaman harcayacak ama sonra her bir çikolata için aynı kalıbı  tekrar tekrar kullanacak ve büyük bir zaman kaybından kurtulacaksınız. Bu güzel bir örnek oldu aslında, sınıf yazmak bir nevi kalıp hazırlamaya benziyor. Bir kere yazın, istediğiniz kadar kullanın ve paylaşın.


Dahası sınıflar bundan çok daha fazlasını yapmanıza imkan verir. Mesela kullandığınız işletim sistemlerindeki butonlar, klasörler, pencereler vb. ilgili sınıflardan türetilmiş nesnelerdir. Her lazım olduğunda bir buton hazırlamazsınız, bir kere buton sınıfı yazar gerektiğinde de bu sınıfa ait bir buton nesnesi oluşturur ve kullanırsınız. Bununla kalmayıp, butonun ismini, aktifliğini, boyutlarını, işlevini de yine önceden tanımlanmış özellikler sayesinde değiştirebilir aynı kalıptan farklı çikolatalar çıkarabilirsiniz. 

Neyse işin edebiyat kısmı böyle işte. Kafanız karışıksa da biraz alıştırma yaparak daha iyi anlayacağınızı düşünüyorum ki zaten atla deve değil. Oldukça kolay, basit ve işlevsel bu şeyleri seveceksiniz.

Başlayalım
Birinci yazıda proje oluşturup, projemize sınıf  ve o sınıfa da main fonksiyonunu eklemeyi görmüştük. Nasıl olduğunu hatırlamak için o yazıyı tekrar okuyabilirsiniz. Şimdi oradan devam edelim ve projeye "karakter" adında yeni bir sınıf ekleyelim. 


Gerekli olan kodu eclipse'in kendisin oluşturduğunu gördük. Demek ki java'da sınıflar bu şekilde tanımlanıyor. Oldukça basit değil mi?

public class <sınıf_ismi> 
{

}

Buradaki "publicifadesi bir "modifier", modifierların ne olduğunu, ne işe yaradığını sonra öğreniriz, şimdilik geçiyorum.  Şimdi, oluşturacağımız karakterlere ait bazı özellikleri bu sınıf içinde tanımlayalım. Bunlar isim, yas, guc ve saglik olsun. Bu değişkenleri her bir karakteri oluştururken ben belirlemek istiyorum, ama takdir edersiniz ki sağlıkları varsayılan olarak 100 olsun. O halde kullanacağım yapı bir "constructor". Çok kısa olarak şöyle söyleyeyim, "constuctor" lar nesne oluşturulurken çağrılan ve adı sınıf adı ile aynı olan fonksiyonlardır. Yani bu sınıf içerisine bir fonksiyon yazacağız adı da "karakter" olacak, ama şu var ki bir sınıfta birden fazla constructor olabilir. Nasıl olur ? Eğer aldıkları parametreler farklı ise olabilir. Bunun farkını ilerki derslerde örneklerle daha iyi anlayacağız.


Bu kodda bir kaç önemli şey var, onları açıklayayım. Öncelikle dediğim gibi bir "constructor" yazdık. Yani sınıf adı olan "karakter" adında bir fonksiyon yazdık. Bu fonksiyonun parametreleri var; "isim","yas","guc". Fonksiyon içinde ise aldığımız bu parametre değerlerini sırasıyla "this.isim","this.yas" ve "this.guc" değişkenlerine atadık. Bunu neden yaptık ? "this" ne demek ? Aslında yapmaya çalıştığımız şey fonksiyon parametrelerinden aldığımız değerleri yukarıda belirlediğimiz değişkenlere atamaktı. Ama dikkat ederseniz parametre değişken isimleri ile üsteki değişken isimleri aynı. O halde "isim = isim" gibi bir atama yapamazsınız. Burada devreye "this" ifadesi giriyor. "This" kelimesi içinde olduğunuz sınıfı temsil eder. "This" kelimesinden sonra nokta koyarak o sınıfa ait değişkenlere sınıfın içerisinde herhangi bir yerde ulaşabiliriz. Böylelikle sınıfın kendi değişkenlerinin değerini "constructor" içerisinde değiştirmiş olduk. Parametre değişkenlerine farklı isimler vererek "this" kelimesini kullanmayabilirdik, ancak baştan bu ifadeyi öğrenelim diye bu örneği bilerek seçtim.

Son olarak bu dersi çok uzatmadan, oluşturduğumuz karakterlerin özelliklerini ekrana yazdıracağımız bir metot yazalım. İlgili metodu da(fonksiyon) yazdıktan sonra sınıfımız görüntüsü aşağıdaki gibi olacaktır. [Bu arada belirteyim Java'da fonksiyon yerine metot kelimesi tercih edilir, kafanız karışmasın metot dediğim şeyler aslında bildiğiniz fonksiyon rutinleri]


Ozellikler() fonksiyonu "void" değerli bir fonksiyon. Yani geri döndüreceği herhangi bir değer olmayacak, yapacağı tek şey formatlı bir şekilde isim, yas, guc ve saglik değişkenlerini ekrana yazmak. Ekrana yazma işlemini de yine geçen yazımda göstermiştim. Burada belki de tek bahsetmem gereken şey, formatlı yazı yazarken Java'da stringleri "+" ile kolayca birleştirebiliyor oluşunuz. Oldukça kolay ve güzel bir kullanım.

Tamam sınıfımızı hazırladık. Şimdi bu sınıftan bir nesne oluşturmak kaldı. Diğer bir deyişle kalıbımız hazır, çikolata üretmeye başlayabiliriz. O halde ilk derste oluşturduğumuz main() fonksiyonumuzun olduğu sınıfa gidelim ve aşağıdaki kodu yazalım.


Şimdi kodu analiz edelim.
Java'da var olan bir sınıftan nesne türetmek için;

<sınıf_adı> <nesne_adı> = new <sınıf_adı>(parametre_degerleri);

kalıbı kullanılır. Burada "jack" adıyla bir karakter oluşturmuş olduk. "=" den önceki ifadeye bakarsanız aslında bir değişken tanımlamak gibi, yani "int x, double z, String s" gibi. Yalnız bu kez değişken türümüz bir sınıf ve adıda "karakter". Öyleyse "karakter jack", karakter tipinde bir değişken tanımlar, işte buna da o sınıfın bir nesnesi denir.

"new" kelimesi, C dilinden hatırlayacağınız üzere "malloc" (memory allocation) komutuna karşılık gelir, yani oluşturulacak nesne için bellekte bir yer ayırır. "new" kelimesinden sonra gelen şey ise sınıf içinde, sınıf adıyla tanımlamış olduğumuz "constructor" metodudur. Aldığı parametreler, nesne yaratılırken doğrudan verilir. Böylece "jack" nesnesi oluştururken aynı zamanda, ismini, yaşını, gücünü parametre olarak vermiş ve nesnemizi "initialize" yani başlangıç değerlerini vererek kurmuş olduk. Aynı sınıftan başka bir karakteri de yine aynı şekilde, farklı parametrelerle (isim, yas, güc ve değişken ismi) oluşturabiliriz.

Son satırda bu nesnenin Ozellikler() metodunu çağırdık. Bunu yaparken aşağıdaki formatı kullandık;

<nesne_ismi> . <metod_ismi>(varsa paramatreleri);

Yani önce nesne ismini yazıyor, sonra "." koyuyor daha sonrada ilgili metodu(fonksiyon) yazıyoruz. Bu metotla karaktere atadığımız değerleri ekrana yazdırmış olduk. Bu kadar basit. 

Programı çalıştırırsak aşağıdaki sonucu göreceğiz. 



Kodları bilerek yazmadım ve doğrudan resim olarak koydum. Bunun nedeni ise tembelliği önlemek. Yazmadan, kopyalamak aklınızda pek bir şey bırakmaz bu yüzden öğrenmek için bakarak da olsa kendiniz yazın.

Kodlar içinde "public" gibi bazı tanımlamaları anlatmayı atladım. Bunları ilerde daha detaylı anlatacağım. Şimdilik bir çok temel konuyu anlattığımı düşünüyorum. Sonraki yazılarımda da sınıflarla ilgili işlemlere devam edeceğiz.

Esen kalın!!

eminucer@gmail.com




17 Ocak 2015 Cumartesi

Hadi Java Öğrenelim!!!

Ne zamandır başlayıp başlayıp bir türlü sonunu getiremediğim bir diğer konuda buydu. Popüler dillerden biri olan java'yı öğrenmek. Hep bir yere gelip bırakmak zorunda kaldım. Ama bu kez kararlıyım, umarım devamı gelir.

Size bir teklifim var. Gelin java'yı birlikte öğrenelim. Adım adım, yavaş ve kararlı. Java güzel bir dil. Elit bir havası var. Daha derli doplu. Bir kere platform bağımsız. Programlayın sonra nerde isterseniz çalıştırın. Ayrıca mobil dünyada da almış başını gitmiş bir dil. Herkes bu dille uygulama geliştiriyor. İnternette ise sayısız kaynak mevcut. Uzun lafın kısası öğrenmemek için hiç bir sebeb yok.

Peki nasıl olacak ?

Merak etmeyin programlamaya yeni başlıyor gibi gitmeyeceğiz. Eminim çoğunuz "C syntax" 'e aşinasınızdır. Java'da hemem hemen aynı kelimeleri kullanıyor. Yeri gelince farkları öğreniriz. Ama temel programlama kalıplarını (if yapıları, do-while-for döngüleri, fonksiyon yazma vs.) tekrar etmeye lüzüm görmüyorum çünkü vakit kaybı, bunu bildiğimizi varsayıp atlayalım. Örnekler ile aşina oluruz zaten.

Nerden başlıyacağız ?

Ben sınıflardan başlayalım diyorum. Çünkü java'yı java yapan şey bir nesne dili olmasıdır (OOP). [Aslında onu zor yapan şeyde bu, neredeyse herşeyi nesnelerle yapmak veya herşey için özelleşmiş bir nesne sınıfının olması öğrenirken bazen işleri çığrından çıkarıyor ;)] Eğer bu kısmı doğru öğrenebilirsek eminim herşey daha keyifli ve kolay olmaya başlıyacaktır.

Kurulum ?

Ben Eclipse kullanacağım (açıkçası şu an o var ve başka bir derleyiciyede alışmaya üşendim). Buradan java için bir eclipse indirip kurarak başlayın. Tabi önce Java geliştirme kitine ihtiyacınız olacak onuda şurdan şurdan edinin. Kafam karıştı diyorsanız, size zahmet şu sitedeki adımları ve altında ki videoyu izleyerek kurulumu yapın.

İlk Çalıştırma ve İlk Program

Eclipse'i çalıştırın. Aşağıdaki ekrandan File>New>Java Project seçin.


Karşınıza gelen pencereden projenize bir isim vererek "Finish" 'e tıklayın.Sonrda yukarıdaki resimde görünen "Workbench" simgesine tıklayarak çalışma sayfasına geçin. Çalışma sayfasındaki "Package Explorer"'dan projenizi bulun ve çift tıklayın. İçerisindeki "src" klasörüne sağ tıklayın ve yeni sekmesinden projenize bir "class" ekleyin.


Kaşınıza gelen ekrandan sınıfınıza bir isim verin ve aşağıdaki "public static void main(String[] args)" seçeneğinin işaretli olduğundan emin olun ve "Finish"'e tıklayın.


Artık projeniz ve main fonksiyonunuz hazır. Main fonksiyonu hakkında bir kaç şey söyleyelim. Java programları çalışacağı zaman ilk baktıkları şey main() fonksiyonudur. Daha doğrusu programı oradan çalıştırmaya başlarlar. Eğer bu fonksiyon projenizde yoksa programınız çalışmayacaktır. 

İlk java kodumuzuda yazarak bitirelim.


Java'da ekrana birşeyler yazdırmak için System.out.println("") komutunu kullanıyoruz. Yukarıdaki basit kodu yazıp yeşil zemindeki küçük beyaz oka basarak programı çalıştırın. Hemen aşağıda programın sonucunu göreceksiniz. Bu kadar !!!



Bu ilk kısımda bir java programının nasıl yazılıp çalıştırıldığını görmüş olduk. Diğer derste görüşmek üzere!!!

İyi çalışmalar

eminucer@gmail.com








Basit Bir Arayüz Devresi Tasarlayalım

Arayüz (Interfacing) nedir ? 

Aslında türkçesi bilgisayar ortamı için iyi duruyor olsada, elektrik devreleri için tam aynı şeyi söyleyemem. Yinede bunu kullanacağım. Arayüz yada Interfacing, teknik terim olarak bir ünitenin değeri ile ilişkisi, bağlanması veya uyumlu hale getirilmesi anlamına gelir. Elektronikte farklı gerilim seviyelerinde olan analog sinyallerin, sayısal olarak işleneceği dijital sistemler için gerekli olan gerilim seviyelerine uyumlandırılmasında da kullanılır. 

Şöyleki elinizdeki mikro denetleyiciniz 5-0 V gerilimde çalışıyor diyelim, bu durumda denetleyicinizde işleyeceğiniz her türlü analog sinyal, büyüklüğü ne olursa olsun bu seviyeye indirilmelidir ki örneklenebilsin. Diğer türlü verinin bir kısmını yada büyük bir kısmını kaybedebilirsiniz. İşte bu indirme işlemini gerçekleştiren devrelere arayüz(interfacing) devreleri denir ve hem analog hemde dijital sinyallerin olduğu karışık(mixed) sinyal devrelerinde kullanılırlar. 

Arayüzleme işleminde ana sinyaliniz bozulmamalıdır, yani herhangi bir distorsiyona uğramamalıdır. Diğer bir değişle bu işlem doğrusal (lineer) olmalıdır. [Doğrusallık mühendislikte önemli bir kavramdır. Bunula ilgili görüşlerimi başka bir yazıda sizlerle paylaşacağım] Buda bize arayüz devrelerinde olabildiğince doğrusal devre elemanları kullanmamız gerektiğini gösterir. Şanşlıyız ki istediğimiz doğrusallığı verecek elemanlarımız zaten var ve kullanımıda analizi kadar basit. 

Burada tasarımlarımda çok kullandığım, uygulaması ve anlaması basit bir arayüz devresini göstereceğim. Ama devreyi doğrudan vermek yerine isterseniz adım adım tasarlayalım.

Arayüz devrelerinin yaptığı iş aslında Shifting ve Scaling olarak bilinir. Türkçeye çarpma ve kaydırma olarak çevirelim (ki yapacağımızda bu zaten). Yani bir analog sinyal uygun bir reel sayı ile çarpılır ve sonra zaman ekseninde sabit bir (dc) sinyal ile toplanarak yukarı veya aşığıya kaydırılır. Örneğin sinyaliniz -8/8 V bir sinüs sinyali olsun ve sizde bunu 5-0 V bir sinüse çevirmek istiyorsunuz. O halde yapacağınız işlem -8/8 V sinyali önce -2.5/2.5 V seviyesine getirmek için 5/16 ile çarpmak daha sonra 2.5 V gerilim ekleyerek 5-0 V arasına getirmektir. Oldukça basit ve doğrusal olan bu işlemin blok gösterimi aşağıdaki gibi;


Şimdi bu işlemi minimum s0 ve maksimum s1 aralığındaki genel tanımlı analog bir sinyal için düşündüğümüzde K çarpanının ve b offset değerinin, bize 5-0 V seviyesinde gerilim vermesi için ne olmaları gerektiğini bulmaya çalışalım. 

Sinyalimiz maksimum değerini (s1) aldığında çıkışımız 5V, minimum değerini (s0) aldığında ise çıkışımız 0V olmalıdır. Bu durumu denklemle gösterecek olursak aşağıdaki ifadeyi elde ederiz.

İki bilinmeyenli bu denklemin çözümü ise bize K ve b değerlerini verecektir. 

Burdaki K ve b değerlerinin ikiside sabit sayıtlardır. Şimdi bu işlemleri lineer devreler üzerinde nasıl gerçekleştiririz ona bakalım.

Bir sabit ile çarpma işleminin yükseltmeye (amplification) karşılık geldiğini biliyoruz. Ama yapacağımız işlem yükseltme değil daha çok bölme olacak. Kazancı ayarlanabilen bir yükseltgeç fazlasıyla işimizi görecektir. Buda tahmin ettiğiniz gibi negatif geribeslemeli faz çeviren bir opamp yükseltici. Diğer yandan b değeride dc bir gerilime karşılık gelecek. Bu sinyali çarpma işlemini yapacağımız devrenin çıkışındaki sinyalle toplamamız lazım. Bu işlemide bir toplayıcı devre ile halledebiliriz.

Sonuç olarak devremiz bir yükseltgeç ve birde toplayıcıdan (summing amplifier) oluşan iki kademeli aşağıdaki opamp devresi.


Bu devrenin ilk kısmı K ile çarpma işlemini, ikinci kısmıda b ile toplama işlemini gerçekleştirir. K ve b değerlerini bulduktan sonra ilgili direnç değerlerini bulmak ise çok kolay, sadece biraz matematik ile oynamaya bakıyor. Çünkü devre lineer bir devre ve herhangi bir zaman sabiti de yok. Ama şuan bu işlemleri geçip formülleri veriyorum.




Dikkat ederseniz devrede bir s2 gerilimi daha verilmiş. Bu gerilim sizlere b sabitini oluşturmak için kullanacağınız referansı oluşturur. Yani devrenizdeki sabit gerilim her ne ise (3V, 5V, 9V, 12V vb), bu gerilimi s2 olarak kullanarak istediğiniz b offset değerini üretebilirsiniz.

Görsellere ve daha bir çok bilgiye ulaşmak için Robert Paz'ın aşağıdaki dersini izleyebilirsiniz.

Kolay Gelsin!!!

eminucer@gmail.com









15 Ocak 2015 Perşembe

Analog vs Dijital

Kayıtsız kalamayacağım bir karşılaştırma benim için. Çünkü, sanki birbirlerine rakipmiş gibi acımasızca karşılaştırılıyorlar. İnsanların dijital dünyanın ekmeğini yemesi seçimlerine de yansımış durumda. Buda bana ezilenin yanında olma isteği uyandırıyor diyebilirim. Halbuki ne alakası var, bu iki kavram birbirinin karşısında değil birbirlerini tamamlayan düzenler aslında. Dijital tasarımın bir aritmetiği vardır, formülleri, dili olan bir sistem. Galiba sevilen yanıda bu çünkü işi inanılmaz derecede kolaylaştırdığı doğru. Sinyalleriniz bilgisayarınızda kayıtlı ayrık veriler ise onlarla dilediğiniz gibi oynayabiliyor, değiştirebiliyor, çoklayabiliyorsunuz. Elinizde bu iş için özelleşmiş neredeyse konuşma diline yaklaşmış programlama dilleride mevcut. Soyut nesneler üzerinden hiç bir alt seviye katmanı ile uğraşmadan istediğiniz programları yazıyor, en karmaşık görünen problemleri çözüyor, eskiden olsa haftalar belkide aylar alacak tasarımlarınızı birkaç günde hazırlıyorsunuz.Tek kelimeyle harika!!, böylede olmalı. Bu teknolojileri bu yüzden geliştiriyoruz, hayatımızı kolaylaştırsın diye. 


Ancak bu analog tasarımın hor görülmesine neden olmamalı kesinlikle. İnsanların dijitale olan bu eğilimi yine artan popülerlik uğruna analog tasarıma olan ilgiyi yok ediyor. Uğraşması zor bir alan kabul ediyorum ama inanın o kadar da keyif veriyor öğrendikçe. Kendinizi bir sanatçı gibi hissediyorsunuz çünkü bu işin kesin bir aritmatiği yok, herkes kendine özgü tasarımı gerçekleştiriyor. Önünüzde doğruluk tabloları veya denklemleri olmayacak, çalışmalarınız, deneyiminiz, önseziniz yol gösterecek size. Ama işin eğlenceli kısmı bana göre, dijitalin analoğa muhtaç olduğu gerçeği. Hayat bilgisayarınızın, sisteminizin (artık ne kullanıyorsanız) dijital pinlerinden çıktıktan sonra başlıyor aslında. D/A çevirmeye, bilgiyi bir yerden diğerine iletmenin bu seviyeden sonra farklı kurallarla olmasına, farklı güçlerde ve gerilimlerde çalışan bir çok çevrebiriminin kontrol edilmesine, empedans uyumlamarına, gürültüyle baş etme yollarına kadar türlü türlü sürecin ve problemin olduğu bir dünya. 

Dijital devreler sadece bilgi üretmenizi, taşımanızı ve değiştirmenizi sağlarlar, onları enerjinin dönüştürülmesinde kullanamazsınız. Oysa analog elektronik özellikle son 40-50 yıl içerisinde güç uygulamaları içinde kullanılmaya başlandı. Güç elektroniği bunun en güzel örneği. Düzensiz bir elektrik enerjisinin, tabiri caizse elini yüzünü toplayıp çalışan bir sistemdeki tüm birimlerin güç ihtiyaçlarını karşılayacak şekilde düzenlenmesi yarı iletken güç elektroniği dönüştürücüleriyle yapılıyor. Hazır standart gerilimlerle çalışmak kolay ve çoğu kerede nasıl oraya geldiğini önemsemiyoruz ama işin mutfağında en az dijital kısmında ki kadar emek ve takdire şayan bir iş var. RF devrelerden bahsetmiyorum bile.


Demem o ki, bu iki taraftan birini taraftarlığını yapıp diğerinde körelmek hoş değil. İkisinin iç içe girmiş birbirini tamamlayıcı unsurlar olduğu unutulmamalı. Bir mikrodenetleyici programlamayı öğrendiğimiz kadar örneğin bir analog filtre, frekans sentezleyici, mixer, osilatör veya bir yükseltici tasarımınıda öğrenmeliyiz bana göre. Tasarlamasanızda teknik kültürünüzde bulunsun, bu işler nasıl oluyor bilin.

Hepinize İyi Çalışmalar

RF Tasarım Üzerine

Yine uzunca bir zamandır araştırdığım bir konu var, RF tasarım. Gittikçe ilgimi çeken bir konu. Bir kere öncelikle motivasyonu sağlam bir zemine oturuyor benim için, bu yüzden belkide sıkılmadan araştırma isteği duyuyorum. Özellikle kablosuz iletişim her geçen gün önem ve deger kazanirken bunun pratik uygulamalarını günlük hayatımızda da sıklıkla görüyor olmamız bu teknolojinin altında yatan tasarım temellerinin öğrenilmesinde benim için bir itici güç. Sesli bir goruntuyu, videoyu (icinde çok miktarda veri taşıyan bir örnek)  bir noktadan diğerine aracısız iletmek ve orada adeta tekrar üretmek her aşamasında muazzam bir mühendisliğin yattığı bir örnek. Sonuçta gönderdiğiniz verileri karsi tarafta anlamlı kontrol komutlarına  dönüştürmek sizin elinizde. Bu taraftan bakınca elinizin altinda cok daha inanilmaz işler yapabileceğiniz bir sihir oldugunu görüyorsunuz ki bu da motivasyon icin oldukca yeterli. Işin bundan sonraki kısmında ise harekete geçmek kalıyor ve tabiki yol boyunca size eşilik edecek mühendislik bilginizi ve tecrübenizi artırmanız. 


RF tasarim çoğu mühendisinde araştırmaya ve öğrenmeye çekindiği zor bir alan. Bir çok disiplini içinde barındırdığı dogru. Özellikle rf devre tasarımı tam bir sanat işi. Zaten işi zorlaştıran şey yüksek frekanslarda calışıyor oluşunuz. Bu frekans seviyelerinde ki tasarimlarin fiziksel katmanlari ve yapıları cok önemlidir. Her milimin ve hatta mikronun onemi vardir. Durum böyle olunca tasarımların gerçekleştirilmesi ve test edilmesi ciddi, zor ve maliyeti yüksek sureçlerdir. Buda çogunu vaz geçirmeye yetecek bir etken. Evet belki henüz pratik bir ise girişmek zor, ama teorik olarak da cok yetersiz olduğumuzu düşünüyorum.  Hazır kitler ve modüllerle çalişmak tabiki kolay ve guzel ama kendi entegre çözümlerinizi üretecek seviyede mühendislik yapamassaniz zaten olmadiginiz bir piyasada hiç bir zaman kapatamayacağınız bir farkın da açılmasına neden olursunuz.


Dediğim aslinda bu. Mühendislik kültürümüz hazır olanı kullanmak üzere kurulmuş durumda. Bu yüzden malzeme üretimine dayalı (özellikle elektrik ve bilgisayar muhendislikleri için) dersler ve araştırmalarda kısıtlı seviyede. Özellikle yüksek hızlı yarı iletken entegre devre tasarımı bu ülkede neredeyse kimsenin ilgisini çekmiyor gibi geliyor bana. Tamam, maliyet ve liberal ekonomik politikalar bunu gerektiriyor olabilir ama bu konuda yetişmiş ve hevesli insan ihtiyacımız gözden gelinemez. Bu yüzyılı tasarımlarımızı, başkalarının çiplerine ve yazılımlarına uyarlamak zorunda kalarak geçiremeyiz. Alternatif ve daha iyi çözümlerin üretimine kafa yormak ve bir an önce tecrübe kazanmaya başlamamız gerekiyor. Milli uretim derdinde değilim ama yine her alanda kendini gösteren popüler olana yığılımın egitim, ticaret, sanat ve bilimde dengeli dağılımı bozduğunu düşünüyorum. 


Konudan saptım gibi ama bu konuda endişelerim böyle. Rf konusuna dönecek olursak bu konuda daha fazla paylaşımlarım olacak. İletişim teknolojileri önemli bir eşik, kesinlikle iyi öğrenilmeli. Alanım olan bir konu değil ama bunun da bir önemi yok zaten eğer yeterince merakınız varsa. Ayrıca dediğim gibi işin sadece sistem kısmını öğrenmek yeterli değil, implementasyon denilen yönüde araştırılmalı ki bu konuda yeterince iyi kaynak bulduğumu düşünüyorum...

Görüşlerinizi bekliyor iyi calismalar diliyorum.

14 Ocak 2015 Çarşamba

Hadi Başlayalım!!!

Uzun zamandır açmayı düşündüğüm bloğu, nihayet biraz boş zaman bulunca yayımlayabildim. Amacım öğrendiğim ve öğreniyor olduğum, bana ilginç ve güzel gelen, alakalı alakasız ne kadar şey varsa paylaşmak. Hemen içerik sınırı koymayı uygun görmedim. Biliyorum yazacaklarımın çoğu teknik yazılardan oluşacak, belki çok daha derin detaylara gireceğim ama aynı zamanda sosyal olaylar, etkinlikler, tarihi araştırmalar, film ve oyunlar hakkında görüşlerim, fikirlerim ve paylaşımlarım da muhakkak olacaktır. 

Çoğu kişinin hazır projeler için araştırma yaptığını biliyorum, burada sürekli hazır projeler paylaşamam ancak kendim için uygun gördüğüm projeler hazırlarken çoğu kişinin işine yarayacak ve internetteki kaynak kısıtlarını ortadan kaldıracak paylaşımlarım olacak. Bu konuda Türkçe litaretür oluşturmayı önemli ve en azından işi bilen kişiler tarafından yapılması gereken bir iş olarak görüyorum. Böyle bir açığı öğrencilik dönemimde ve özellikle ilkokul ve lisede fark etmiştim o yüzden buna özellikle katkı sağlamaya çalışacağım. Bu konuda hevesli olan varsa benimle iletişime geçebilir.

Yazacaklarımın faydalı olmasını umuyor ve iyi çalışmalar diliyorum.