Gönderen Konu: I Do Not Know C  (Okunma sayısı 3368 defa)

Çevrimdışı İlker Kesen

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 1246
  • Boğduruyorum.
I Do Not Know C
« : Ağustos 23, 2015, 07:21:53 ÖS »
Arkadaşın biri oturmuş, kimse "C biliyorum." diyemesin diye C'nin pis taraflarını gösteren 12 soru/cevap hazırlamış.

http://kukuruku.co/hub/programming/i-do-not-know-c

Çevrimdışı Ufuk Sevim

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 451
Ynt: I Do Not Know C
« Yanıtla #1 : Ağustos 24, 2015, 02:02:02 ÖS »
Nasıl ayarlarla derlemiş bilmiyorum ama 2. soruda dediği şey olmaz bence. y'ye daha sonradan erişilmediği için x dereference olmaz, ama null check yapılır her türlü. Belki y kullanılsa dediği olabilirdi. 2 farklı derleyicide tam optimizasyonla denedim ikisinde de onun dediği olmadı.

Strict aliasing'den bahsederken restrict anahtar kelimesinden bahsetse iyi olurmuş. Mesela 3. soruda ilk fonksiyon void func_original(int * restrict xp, int * restrict yp, int * restrict zp); şeklinde tanımlansaymış func_optimized ile aynı sonucu verirmiş. Bu func_optimized'da yapılan işi derleyici yaparmış.

Onun dışında diğer sorular gayet güzel. Bunlar haricinde C'nin daha garip durumlarını merak ederseniz https://www.securecoding.cert.org/confluence/display/c/2+Rules adresini tavsiye ederim. Güzel örneklerle ve tartışmalarla açıklıyorlar.
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

Çevrimdışı Mert Salık

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 656
Ynt: I Do Not Know C
« Yanıtla #2 : Eylül 11, 2015, 04:07:51 ÖS »
Selamlar,

Soru 2'yi çok merak edip yazıp çalıştırdım. gcc kullandım.  optimizasyon seviyesi hiç - 0 - 1 - 2 - 3 için teker teker çalıştırılabilir dosya ürettim.
Fakat arkadaşın bahsettiği davranışı ne çalıştırılabilir dosyada, ne de decompile ederek baktığım assebly komutlarında görebildim.

Birkaç saatimi aldı, ama eğlenmiş oldum.

Link burada https://gist.github.com/mertsalik/4d634695af89f8daf9fa

edit: imla

Çevrimdışı Serhat Büyükçolak

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 1130
  • C bilmeyen adam
Ynt: I Do Not Know C
« Yanıtla #3 : Temmuz 22, 2019, 05:07:06 ÖS »
Geçen yine bir hortlatıyoruz; http://plepa.com/2018/12/21/c-biliyor-musunuz/
Sonra neden "C bilmeyen adam" diyorlar, hele bakıverin şuraya; http://plepa.com/2018/12/21/c-biliyor-musunuz/