Thread overview
Gizli Takipçilere Gelen Davet Üzerine
Feb 11, 2022
Ali Çehreli
Feb 12, 2022
Ali Çehreli
February 11, 2022

Merhaba ben İsmail Emre. Dün Ali ÇEHRELİ hocammızın kitabını bastırmasıyla alakalı olarak forumdaki duyuru başlığı altında biraz yazıştık. Foruma önceden kayıt olmayan ama benim gibi forumu takip edenler için davet geldi. Ali hocamız şöyle yazmıştı:
" Saat mi uygun değil? "
Aslında sohbetlerinizin saatinden çok d-programlama dilinde hiç bilgim olmadığı için ve bilgisayarla ilgili bir bölüm okumadığımdan sizlerle sohbete katılırsam konuları çok anlayamam diye düşündüğümden dolayı katılmıyordum. Kendim elektronik teknikeriyim ama iş bulamadığım için ve mikrodenetleyicileri programlamayı öğrenmek için C programlamayı öğreniyordum. Kaynak olarak Gökhan DÖKMETAŞ 'ın Temel C Programlama kitabından takip ediyordum. Yazarı kitabı ticaret harici halka açık yayınladığı için iki yıl önce bir fotokopicide plastik spiralli fotokopisini bastırdım. Geçen sene askerdeydim. Askerden dönünce iş bulamayacağımı düşünüp kendime göre tabii ki başarılı olduğum Bolu'daki fizik bölümünü(%100 İngilizce) bıraktım. . Bilgisayara, matematiğe ve fiziğe hala biraz ilgim olduğu için yine de öğrenmeye devam ediyorum. Hala iş arıyorum. Galiba bulabileceğim işler bunların hiç biriyle ilgili olmayacak ama yine de sizin forumunuzu hobi olarak takip ediyorum.

February 11, 2022

On Friday, 11 February 2022 at 08:42:34 UTC, İsmail Emre ARIKAN wrote:

>

Merhaba ben İsmail Emre. Dün Ali ÇEHRELİ hocammızın kitabını bastırmasıyla alakalı olarak forumdaki duyuru başlığı altında biraz yazıştık. Foruma önceden kayıt olmayan ama benim gibi forumu takip edenler için davet geldi. Ali hocamız şöyle yazmıştı:
" Saat mi uygun değil? "
Aslında sohbetlerinizin saatinden çok d-programlama dilinde hiç bilgim olmadığı için ve bilgisayarla ilgili bir bölüm okumadığımdan sizlerle sohbete katılırsam konuları çok anlayamam diye düşündüğümden dolayı katılmıyordum. Kendim elektronik teknikeriyim ama iş bulamadığım için ve mikrodenetleyicileri programlamayı öğrenmek için C programlamayı öğreniyordum. Kaynak olarak Gökhan DÖKMETAŞ 'ın Temel C Programlama kitabından takip ediyordum. Yazarı kitabı ticaret harici halka açık yayınladığı için iki yıl önce bir fotokopicide plastik spiralli fotokopisini bastırdım. Geçen sene askerdeydim. Askerden dönünce iş bulamayacağımı düşünüp kendime göre tabii ki başarılı olduğum Bolu'daki fizik bölümünü(%100 İngilizce) bıraktım. . Bilgisayara, matematiğe ve fiziğe hala biraz ilgim olduğu için yine de öğrenmeye devam ediyorum. Hala iş arıyorum. Galiba bulabileceğim işler bunların hiç biriyle ilgili olmayacak ama yine de sizin forumunuzu hobi olarak takip ediyorum.
Afedersiniz diğer mesajlarım bir sorundan dolayı gitmedi zannettim. Defalarca denediğim için bu yüzden gereksiz başlıklar açılmış. Tekrar özür diliyorum.

February 11, 2022
On 2/11/22 00:42, İsmail Emre ARIKAN wrote:
>   Merhaba ben İsmail Emre.

Hoşgeldin! :)

> sohbete katılırsam konuları çok anlayamam diye düşündüğümden

Olabilir ama denemekte yarar var. :) Hem hep konu bulma güçlüğünden bahsediyoruz. Belki bir sonraki sefer en temel kavramlara bakarız.

Hem belki bir dürtü de olur ve öğrenme isteğimiz hızlanır.

> Kendim elektronik teknikeriyim

Ben elektronik bölümünü bitirmişi

> Yazarı kitabı ticaret harici halka açık yayınladığı için

Benim de verdiğim en iyi kararlardan birisi, kitaplarımın haklarını elimde bulundurmak ve halka açık sunmak oldu. Benden çok daha iyi D'cilerin kitaplarının en adı duyuluyor ne de kitaplarını yenileybiliyorlar. Yayımcının kararına kalmış durumdalar.

Kitaba hızlıca bir baktım. Fena değil ama tabii C'nin güvensizliği ilk programlarda karşımıza çıkıyor:

char karakter_dizisi[20] = "";
printf( "Lutfen Adinizi Giriniz:" );
scanf ("%s", karakter_dizisi);

On dokuzdan fazla karakter girdiğimizde ne olur? :) Bu konu kitabın o noktasında önemsenmiyor; umarım C'nin ne kadar tehlikeli bir dil olduğu daha sonra anlatılıyordur. (Tehlikeli derken, program hatalarına bağlı can, mal, para, vs. kayıplardan bahsediyorum.) Görüldüğü gibi, C biraz yanıltıcı: Hem az olanağı olduğundan öğrenmesi kolay, hem de onunla doğru program yazmak son derece zor. Bjarne Stroustrup, C yerine C++ kullanılmasının neden daha kolay olduğunu anlattığı makalesinde C ile dizgi okumanın doğrusunun nasıl olduğunu gösterir. Ben zamanında Türkçeleştirmiştim:


https://web.archive.org/web/20060721153406/http://www.acehreli.org/turkcecpp/cpp_ogrenmek.html

(Tesadüf, Bjarne da dizi uzunluğu olarak 20 kullanmış. :) ) İşte, C ile dizgi okumanın doğrusu:

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

void cik()         // hatayı ilet ve programdan çık
{
      fprintf(stderr, "Bellekte yer kalmadı\n");
      exit(1);
}

int main()
{
      int encok = 20;
      char * ad = (char *)malloc(encok);    // arabellek ayır
      if (ad == 0) cik();

      printf("Lütfen adınızı girin:\n");

      while (true) {         // baştaki boşlukları atla
            int c = getchar();
            if (c == EOF) break;   // kütük sonu
            if (!isspace(c)) {
                  ungetc(c,stdin);
                  break;
            }
      }

      int i = 0;
      while (true) {
            int c = getchar();
            if (c == '\n' || c == EOF) { // sonlandırma karakterini ekle
                  ad[i] = 0;
                  break;
            }
            ad[i] = c;
            if (i==encok-1) {    // arabellek doldu
                  encok = encok+encok;
                  ad = (char*)realloc(ad,encok); // daha büyük yeni bir arabellek ayır
                  if (ad == 0) cik();
            }
            i++;
      }

      printf("Merhaba %s\n", ad);
      free(ad);      // arabelleği bırak
      return 0;
}

Aynı programı D ile yazalım:

import std.stdio;

void main() {
  writeln("Lütfen adınızı girin:");
  const ad = readln();
  writeln("Merhaba ", ad);
}

Ama tabii haksızlık olmasın, hem C++ hem de D programları dizgiyi bellekten yer ayıra ayıra oluştururlar. (C'nin eşdeğeri gibi olan ama yine de ondan kat kat güvenli olan D'nin -betterC seçeneği de kısa programı derleyeme çünkü -betterC durumunda D runtime yoktur.)

Kitapta bir de işaretli türlerle ilgili minik hatalar var: "-32767 ve +32767 değerleri arasında" dediği yerde en küçük değer aslında -32768'dir. Önemli değil...

> Bilgisayara, matematiğe ve fiziğe hala biraz ilgim olduğu için yine de öğrenmeye devam ediyorum.

Hepimiz öyleyiz. Daha önce söylediğin bir şeye yanıt olarak, burada ben dahil çoğumuzun bilgisayar derecesi de yok.

> forumunuzu hobi olarak takip ediyorum.

Umarım sesini daha sık duyarız. :)

Forumla ilgili olarak, bu forumlar aslında onaylamalı (moderated); yani, mesajların bir kişi tarafından onaylanması gerekiyor. Ama forumu yazan kişi (Vladimir Panteleev) sanırım bir şeyleri değiştirdi çünkü eskiden bana "şöyle bir mesaj geldi; onaylıyor musunuz" gibi bir mesaj gelirdi; artık gelmiyor. Bakıyorum... hayır, Junk'ta da yok.

Yani mesajların belki de forumuz bir azizliği nedeniyle geç belirmiştir. Önemli değil.

Ali

February 12, 2022
> > Hoşgeldin! :)
 Hoş bulduk! :)
> sohbete katılırsam konuları çok anlayamam diye düşündüğümden

> Olabilir ama denemekte yarar var. :) Hem hep konu bulma güçlüğünden bahsediyoruz. Belki bir sonraki sefer en temel kavramlara bakarız.
  Peki kabul ediyorum. Ancak sizleri bu konuda zorlayamam. :)

> > Yazarı kitabı ticaret harici halka açık yayınladığı için
>  Benim de verdiğim en iyi kararlardan birisi, kitaplarımın  haklarını elimde bulundurmak ve halka açık sunmak oldu. Benden  çok daha iyi D'cilerin kitaplarının en adı duyuluyor ne de  kitaplarını yenileybiliyorlar. Yayımcının kararına kalmış  durumdalar.
 Çok iyi. Üniversitede bilgisayar programlama dersini anlatan prof. dr. Cihan PARLAK hocamız her hafta işleyeceği konuların notlarını bize verirdi. Biz de fotokopiciden çıkartırdık. Yani bir kitabı tümüyle çıkartmak yerine ünite ünite çıkartırdık. Bu konuyu anlamamızı iyi sağlıyordu. Her hafta verdiği ödevlerin cevaplarını google classroom sitesinden yolluyorduk. Şimdi pek hatırlamıyorum.
 Ama aynı yöntemi sizin kitabınızda da uygulayabilirsem bana çok verimli olacaktır.

> Kitaba hızlıca bir baktım. Kitapta bir de işaretli türlerle ilgili minik hatalar var: "-32767 ve +32767 değerleri arasında" dediği yerde en küçük değer aslında -32768'dir. Önemli değil...
 Buldum. "short int" denilen yer. Sizin söylemenizle orayı kalemle düzelttim.
>
> Fena değil ama tabii C'nin güvensizliği ilk programlarda karşımıza çıkıyor:
> > char karakter_dizisi[20] = "";
> > printf( "Lutfen Adinizi Giriniz:" );
> > scanf ("%s", karakter_dizisi);
> On dokuzdan fazla karakter girdiğimizde ne olur? :)
  Bu kitaba ilk defa baktığımda benim de aklıma gelmişti.
> kitabın o noktasında önemsenmiyor; umarım C'nin ne kadar tehlikeli bir dil olduğu daha sonra anlatılıyordur. (Tehlikeli derken, program hatalarına bağlı can, mal, para, vs. kayıplardan bahsediyorum.)
 Henüz sonuna kadar gelemedim. Sonuna kadar gitmek istesem de başarısızlıklarım ve unutkanlıklarımdan dolayı kendimi geliştirmek için başladığım işler genellikle yarım kalıyor. :(
> > Görüldüğü gibi, C biraz yanıltıcı:
 Evet bu sözünüze ben de hak veriyorum.
> Hem az olanağı olduğundan öğrenmesi kolay, hem de onunla doğru program yazmak son derece zor. Bjarne Stroustrup, C yerine C++ kullanılmasının neden daha kolay olduğunu anlattığı makalesinde C ile dizgi okumanın doğrusunun nasıl olduğunu gösterir. Ben zamanında Türkçeleştirmiştim:
> https://web.archive.org/web/20060721153406/http://www.acehreli.org/turkcecpp/cpp_ogrenmek.html
>
> İşte, C ile dizgi okumanın doğrusu:
 Gerçekten aşağıdaki program çok uzun.
>
> #include <stdio.h>
> #include <ctype.h>
> #include <stdlib.h>
>
> void cik()         // hatayı ilet ve programdan çık
> {
>       fprintf(stderr, "Bellekte yer kalmadı\n");
>       exit(1);
> }
>
> int main()
> {
>       int encok = 20;
>       char * ad = (char *)malloc(encok);    // arabellek ayır
>       if (ad == 0) cik();
>
>       printf("Lütfen adınızı girin:\n");
>
>       while (true) {         // baştaki boşlukları atla
>             int c = getchar();
>             if (c == EOF) break;   // kütük sonu
>             if (!isspace(c)) {
>                   ungetc(c,stdin);
>                   break;
>             }
>       }
>
>       int i = 0;
>       while (true) {
>             int c = getchar();
>             if (c == '\n' || c == EOF) { // sonlandırma karakterini ekle
>                   ad[i] = 0;
>                   break;
>             }
>             ad[i] = c;
>             if (i==encok-1) {    // arabellek doldu
>                   encok = encok+encok;
>                   ad = (char*)realloc(ad,encok); // daha büyük yeni bir arabellek ayır
>                   if (ad == 0) cik();
>             }
>             i++;
>       }
>
>       printf("Merhaba %s\n", ad);
>       free(ad);      // arabelleği bırak
>       return 0;
> }
 Henüz hafıza yönetimine gelmemiştim. Sayfa 185 'teki fonksiyonlarla değer döndürmek ifadesinde return teriminin kullanılışını anlayamadığım için orada bırakmıştım. Bir haftadır birinci sınıf üniversitelilere gösterilen matematik (kalkülüs) ile ilgili bir kitapta yazan alıştırmaları defterime yazıyor ve çözmeye çalışıyordum. Bu sebeple biraz o kitaba çalışmayı aksattım. Ek olarak önceden udemy, youtube gibi kaynaklardan da C programlama diline biraz baktım.
 Aslında C programlama dilini çok iyi öğrenirsem yazacağım kodların uzun olması beni çok ilgilendirmez diye düşünüyordum. "Amacıma ulaşayım yeter" diye düşünüyordum. Onu hem bilgisayar için hem de mikrodenetleyiciler için kullanırım yeter diyordum. Tabii ki d-programlamayı öğrensem daha iyi bir C programcısı da olabilirdim. Ama " galiba bu işlere ta lisede başlamalıymışım ya da daha erkenden " dedim.
>
> Aynı programı D ile yazalım:
>
> import std.stdio;
>
> void main() {
>   writeln("Lütfen adınızı girin:");
>   const ad = readln();
>   writeln("Merhaba ", ad);
> }
>
 Aslında bu forumu uzun süredir takip ettiğim için ve bazı yabancı kaynaklardan da d-programlama dilinin kullanıldığı kodların genellikle diğerlerine göre daha az satırdan oluştuğunu gördüğüm için pek şaşırmadım. :)
> Ama tabii haksızlık olmasın, hem C++ hem de D programları dizgiyi bellekten yer ayıra ayıra oluştururlar. (C'nin eşdeğeri gibi olan ama yine de ondan kat kat güvenli olan D'nin -betterC seçeneği de kısa programı derleyeme çünkü -betterC durumunda D runtime yoktur.)
>

> > Bilgisayara, matematiğe ve fiziğe hala biraz ilgim olduğu
> için yine de öğrenmeye devam ediyorum.
>
> Hepimiz öyleyiz. Daha önce söylediğin bir şeye yanıt olarak, burada ben dahil çoğumuzun bilgisayar derecesi de yok.
 Aslında bu forumdaki birkaç kiçinin ismini ve soyismini internetten aramıştım. Ne kadar dolu insanlar olduğunuzu (benim fikrime göre) görünce forumu takip eder oldum.

> Forumla ilgili olarak, bu forumlar aslında onaylamalı (moderated); yani, mesajların bir kişi tarafından onaylanması gerekiyor. Ama forumu yazan kişi (Vladimir Panteleev) sanırım bir şeyleri değiştirdi çünkü eskiden bana "şöyle bir mesaj geldi; onaylıyor musunuz" gibi bir mesaj gelirdi; artık gelmiyor. Bakıyorum... hayır, Junk'ta da yok.
>
> Yani mesajların belki de forumuz bir azizliği nedeniyle geç belirmiştir. Önemli değil.
>
 Aslında mesajlarımı android telefonumdan yazmıştım. Daha sonra bilgisayarımı açtım, bu forumun ntp 'li olduğunu önceden biliyordum, gönderdiklerimi silemezdim . Bu sebeple bir önceki düzeltme amaçlı yorumumu yazdım.

 Mesajınızı okuduğum halde geç cevap verdiğim için kusura bakmayın Ali hocam. Ailemle ilgilenmem gerekiyordu. Bence ailelerimizle gerektiği kadar ilgilenmek bizi daha iyi yerlere taşıyabilecek her türlü gelişmelerden daha önemli.
 Özet olarak yapabileceğim kadar d-programlama dilini öğrenmeye çalışacağım. Sohbetlerinize katılmam için önceden yaptığınız gibi sohbete günler kala duyurusunu ( önceden hiç katılmayanların sohbete giriş yönteminizi bilmediğini varsayarak ) yapmaya devam ederseniz bence de uygundur.

February 12, 2022
On 2/12/22 09:59, İsmail Emre ARIKAN wrote:

> return teriminin kullanılışını anlayamadığım için

Aslında tabii ki çok kolay. :)

Ben fonksiyonları anlatırken şöyle bir ayrımın altını çizdim. Fonksiyonlar

- Yan etki üretirler
- Değer üretirler
- Her ikisini yaparlar

Yan etki, programdaki veya onun çevresindeki her hangi bir değişikliktir. Örneğin, çıkışa bir şey yazdırmak bile yan etki üretmektir.

Değer üretmek, parametreleri veya başka ifadeleri kullanarak yeni bir değer üretmektir. İşte, üretilen değer 'return' ile döndürülür.

Üç örnek:

import std.datetime;
import std.stdio;
import std.conv;

// Yan etkisi var:
void zamanıYazdır() {
  writeln(Clock.currTime());
}

// Değer üretiyor:
string zamanBilgisi() {
  return Clock.currTime().to!string;
}

size_t toplanmaAdedi;

// Hem yan etkisi var hem de değer üretiyor:
int topla(int a, int b) {
  ++toplanmaAdedi;  // Yan etki
  return a + b;     // Döndürdüğü değer
}

void main() {
  zamanıYazdır();
  writeln(zamanBilgisi());
  writefln!"Toplama sonucu: %s"(topla(1, 2));
  writefln!"Toplama işlevini %s kere çağırmışız."(toplanmaAdedi);
}

> " galiba bu işlere ta lisede başlamalıymışım ya da daha erkenden " dedim.

Daha iyi olabilirmiş ama programcılığın sonu yok. Hangi yaşta girdiysek bir şekilde gelişmeye devam ediyoruz. Ben bilgisayara ilk kez 19 yaşımda dokunmuştum (Sinclair Spectrum üzerinde Sinclair BASIC). 23 yaşımda kendi başıma C öğrendim. C++ öğrenmeye başladığımda 30 yaşımdaydım. D ile 43 yaşımda tanıştım. Tabii eski bilgiler hep yararlı oluyor ama gördüğün gibi aramızda eskiler de var. ;)

> Mesajınızı okuduğum halde geç cevap verdiğim için kusura bakmayın Ali
> hocam.

Hiç öyle bir zorunluluk yok. Forumların özelliği, istediğimiz zaman yazabilmek.

> Sohbetlerinize katılmam için

Madem heyecanlandık, bu Pazar sabah 10 nasıl olur acaba? (Bundan 9 saat sonra.) Haydi bir deneyelim bakalım gelebilecek olan çıkacak mı...

Duyuru bölümüne yazıyorum.

Ali