C Öğrenmek

Başlatan davuthan, 02 Eylül 2008 - 16:44:32

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

heartsmagic

Alıntı yapılan: Mepeto - 09 Ocak 2009 - 03:07:56
c cok daha basit bir dil ve kullanim alani daha genis

C üzerinde ne kadar çalıştın? Bu yaptığın yorumun doğruluğu konusunda ciddi misin? Eğer öyleysen sen benim için "diller hakkında yanlış bilgi vermiş" demen gibi ben de senin için "C hakkında yanlış bilgi veriyor" diyeceğim.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Mepeto

lisans

okul: odtu
mezuniyet yili: 2005
bolum: bilgisayar muhendisligi

yuksek lisans

okul: hertfordshire (ingiltere)
mezuniyet yili: 2007
bolum: yuksek bilgisayar muhendisligi ve programlama

ogretim gorevlisi olarak devam ediyorum daha fazla saymaya gerek var mi

heartsmagic

Saymaya gerek yok, peki C için "kolay dildir" sözünün altına bu yaptığın kariyerle imza atıyor musun?
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Mepeto

Alıntı yapılan: heartsmagic - 09 Ocak 2009 - 03:32:19
Saymaya gerek yok, peki C için "kolay dildir" sözünün altına bu yaptığın kariyerle imza atıyor musun?

python ile kiyasla kolay bir dildir hatta 2 uye secelim siz python ogretin 1 uyeye bende c ogreteyim 1 uyeye bakalim hangimiz daha kolay ogretecegiz ne dersiniz

heartsmagic

Bir yarışa girmek gibi niyetim yok. Zira kimseye bir şey öğretme durumunda değilim. Siz nasıl yaptığınız kariyerle beraber adınızı (daha doğrusu nickinizi) koyarak "C Python'dan daha kolay bir dildir" diyorsanız ben de kendi nickimi koyarak "C Python'dan daha zor bir dildir" diyorum. İsteyen herhangi bir üyemiz ikisini de öğrenmeye kalkarak durum değerlendirmesi yapabilir.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

matafleur

Bende kendi nickimi ve kariyerimi ortaya koyarak kişinin edindiği bilgisayar deneyimi ve ilgi alanlarına göre kimilerine göre c kolay kimilerine göre de python kolaydır diyorum.(:

Şimdi 3 üye seçelim.Birisine heartsmagic python öğretsin, birisine mepeto c öğretsin, birisini de ben sabah akşam canım sıkıldıkça döveyim.Bakalım ilk kim elindeki üyeyi kullanılmaz hale getirebilecek?

(((((:

erginemr

Ben bilgisayar mühendisi değilim (inşaat mühendisiyim) ama programlamayla da uzun süredir haşır neşir olan biri olarak iddiam, Python'un C'den daha kolay ve daha pratik olduğudur.

İnsan, bildiği, aşina olduğu programı benimser ve mantığını çok iyi bildiği için kendisine daha kolay gelir. Bilgisayar mühendislerine ilk öğretilen dil (kız kardeşim ve kayın biraderimden biliyorum) C'dir. Ardından Java'dır. Her ikisi de zor programlama dilleridir ama ilk öğrendikleri ve sık kullandıkları için C ve Java ile çalışmak kendilerine kolay gelir.

@Mepeto, siz farklı düşünüyor olabilirsiniz ama bilgisayar programlamayı bilen 100 kişiye sorsanız, 90'ı C'nin çok güçlü bir dil ve her yerde geçer akçe olduğunu, ama alt seviye bir dil olduğu için pek çok şeyi size yaptırdığını, hele "pointer"lar da devreye girdikten sonra C öğrenmenin Python öğrenmekten daha zor olduğunu söyler.

Aramızda C ve Python bilen başka arkadaşlar da olabilir. Ben onların da bu konudaki yorumlarını merak ediyorum.

Çağlar

Ben az bir şey C ve az bir şey Python biliyorum. Başlama tarihim forumda görülebilir Python'a ve şu anda inanın C ile karşılaştırılamaz seviyede hızlı ilerliyorum. Ben denizciyim. Liseyi yeni bitirdim. Lise boyunca sıra arkadaşımla ders aralarında C öğrenmeye çalıştık ki bilgim onunla sınırlıdır. Yazın çalıştım C ama sıktı beni Python iyi ki var çünkü programlayı bana kolay gösteren dil o. Kolay olan  Python ki C üzerine geliştirilmiştir diye biliyorum.
We got a badass over here!
__________________________
Bu çevirinin size ihtiyacı var...

erginemr

Bu konuda düşünceme destek olarak gösterebileceğim şöyle bir kaynak da var. Python üzerine yazılmış How to Think Like a Computer Scientist - Learning with Python isimli İnternet'ten de ücretsiz olarak ulaşılabilen ders kitabının kendisi de aktif bir eğitimci olan yazarı Jeffrey Elkner'in ön yazısını okumanızı rica ediyorum:
http://openbookproject.net/thinkCSpy/index.xhtml
http://openbookproject.net/thinkCSpy/preface.xhtml

Söz konusu makaleden küçük bir alıntı:
Alıntı Yap...
Two years later, I was convinced that C++ was a poor choice to use for introducing students to computer science. While it is certainly a very
powerful programming language, it is also an extremely difficult language to learn and teach.  I found myself constantly fighting with
C++'s difficult syntax and multiple ways of doing things, and I was losing many students unnecessarily as a result. Convinced there had to
be a better language choice for our first-year class, I went looking for an alternative to C++.
...

Her ne kadar, yazıda C++'dan bahsedilse de C++, C temel alınarak nesne tabanlı programlamayı ihtiva edecek şekilde geliştirilerek yazıldığı için, benzer argümanlar C için de geçerlidir.

matafleur

Python u ciddi anlamda  zorlaştıran unsurların birisi de belirli noktalardaki kütüphane yetersizliği ve c ile yazılmış kütüphaneleri python içinde kullanmaya çalışmanın tam bir işkence oluşu.Bir bilgisayar mühendisi adayıyım.Açıkçası ikisinide aktif bir biçimde kullandım ama benim için C yi öğrenmesi python dan daha kolay oldu.Dediğim gibi dilin zorluğunu alışkanlıklar ve önceki deneyimler belirler.Ama benim tercihim (genel olarak) alt düzey işlemler için C üst düzey işlemler için de java yönünde.Ne yazıkki ısınamadım python a bir türlü. :)

Ve sanırım çoğu bilgisayar mühendisine öğrettikleri temel şey dilin önemsiz olduğu önemli olanın ihtiyaçların karşılanması olduğudur.Bu bakış açısına yürekten katılıyorum.Eninde sonunda dil bir şekilde öğrenilir.

Ama bir insanın rezil kod yazmasını veya iyi kod yazmasını dil seçimi çok fazla belirlemez.Bundan da öte daha önemli olan yapının ne kadar sağlam oluşturulduğudur.A dili veya b dili farketmez.Yapı sağlamsa altı nasılsa bir şekilde doldurulur.Dilden öte önemli olan da bu bence.

O yüzden a dili veya b dili çok fazla takılmayın derim ben.

Sypro

Sanırım bilgisayar mühendisliği okuyan ve yıllardır programlama işi ile ilgilenen biri olarak benim de bir şeyler koymam gerek:) All in diyorum ve devam ediyorum:
Yıllarca C/C++ ile uğraştıktan sonra sırf can sıkıntısından bulaştığım Python (belki de C nin ardından olduğu için bilemem) çok daha kolay geldi bana.
Kaldı ki ikisini kıyaslamak çok da gerçekçi bir sonuca ulaştırmasa da benim de görüşüm C'nin öğrenilmesi daha zor olduğu yönünde. Özellikle de C# alayını döver.


"Milliyetin çok belirgin vasıflarından biri dildir. Türk milletindenim diyen insan, her şeyden evvel ve mutlaka Türkçe konuşmalıdır. Türkçe konuşmayan bir insan, Türk kültürüne, topluluğuna bağlılığını iddia ederse buna inanmak doğru olmaz."

mtilhan

Bende eğitim görevlisi abiye katılıyorum.
Şu an özel bir lisede lise 1. sınıfta olarak Bilgisayar veya Enformatik(informatik) olimpiyatlarına hazırlanıyorum.
Daha bu gün pointer'ları işledik.

Bakın Python daha kolay diyebilirsiniz ancak şunu unutmayın Python Yüksek seviyeli ama güçsüz bir dildir.
C'ise orta seviyeli(bazıları düşük demiş ama orta seviyeli :)) hem de güçlü bir dildir.
Peki C'yi Python'dan bu kadar üstün kılan nedir?
-Doğrudan belleğe ve donanıma erişim sağlar(Python ile bir işletim sistemi yazmayı ya da bir driver yazmayı deneyin bakalım)
-Hızı inanılmazdır.(Assembly ve Makine Dili kodlamalarından sonra en iyidir.)
-Onunla aynı kurda yarışan diğer dillere göre anahtar kelimeleri çok azdır. Mesela Python'da hiç kütüphane belirtmeden 60 tane fonksiyon varsa C'de 27 tane var bu da anahtar kelimelerin öğrenimini kolaylaştırır.
-Robotik programlamalarda 1 numaradır.(Assembly hariç)
-En kritik noktalarından biri hem Assembly gibi düşük seviyeler diller gibi Makine diline benzer hem de Yüksek seviyeli dillerin fonksiyonlarını gerçekleştirir.

Bir not daha.
Python ile Ubuntuda bir program yazdık. Daha sonra bunu internette yayınladık. Windows kullanıcıları bunu pythonu yüklemeden çalıştıramaz. :D
Ama C'de kaynak koduyla paylaşılırsa her yerde anında derlenip her ortama uyum sağlanır.

Şu an C'yi öğreniyorum.
Öğrenirken şu 3 kitabı kullandım:
-Algoritma Geliştirme ve Programlamaya Giriş (Dr. Fahri Vatansever)
-C Programlama Dili (Şerafettin Arıkan)
-Veri Yapıları ve Algoritmalar (Dr.Rifat Çölkesen)

Mart'ta kurulacak olan Bursa Kitap fuarından inş. bir C++ bir de Java kitabı alacam böylece 2. sınıfa başlamadan inş. 3 dil bilmiş olacam :D
You're beatiful but you will never be mine.
Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul.

matafleur

Güzel yazmışsın da atladığın bir çok nokta var.Sadece birinin avantajları üzerinden sağlıklı bir kıyaslama yapılamaz bence.

En basitinden C ile bir ERP yazılımı hazırlarken izlemek isterim seni  ((:

mtilhan

Hmmm güzel bir nokta ama hatırlatırım C'yi bilince hemen C++ 'da öğrenilebiliyor(muş). Eh c++ ile de ERP yazılır herhalde :D
Bu arada mesajına şu an ö.m. ile cevap veremiyorum mesaj sayım az geçince cevabı yollarım :D
You're beatiful but you will never be mine.
Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul.

matafleur

Alıntı yapılan: mtilhan - 18 Ocak 2009 - 07:58:47
Hmmm güzel bir nokta ama hatırlatırım C'yi bilince hemen C++ 'da öğrenilebiliyor(muş). Eh c++ ile de ERP yazılır herhalde :D

dene...

heartsmagic

@mtilhan, biz zaten hangisi daha kuvvetli veya avantajlı diye tartışmıyorduk. Meselemiz hangisinin daha kolay öğrenileceğiydi.

Bu arada C için genelde herkes düşük seviyeli (low level) der ki, cidden öyledir. Bu düşük seviyeli meselesi zaten aşağılayıcı bir şey değildir, aksine kendisine orta seviyeli dediğin anda bence kıymetinden düşürmüş olursun.

Dediğim gibi konumuz hangisinin kuvvetli olduğu değildi. Ortada dönen tartışma da bence başlığı gölgelemesin. Python mu C mi döver meselesine dönmeyelim. Benim yaptığım safiyane bir yorumun üzerine "yanlış söylenmiş" sözünü çürütmek için bir dünya boş ileti göndermiş bulunmaktayız zaten. Fazlasını da görmek istemiyorum.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

parduslinux87

http://www1.gantep.edu.tr/~bingul/c/ 
arkadaşlar c hakkındaki bilgileri bu siteden öğrenebilirsiniz

Kutadgu

Yüksek seviye düşük seviye olayı bu değildir. Eğer programlama komutları ingilizce dilindeki kelimelere benziyorsa yani read, print gibi dil yüksek seviyeli demektir. Ancak 1, 0 gibi binary kodlarla program yazmaya çalışıyorsanız o dil düşük seviyelidir.

erginemr

@Jay Wells,

Bu yüksek/düşük seviyeli dil ayrımı konusunda ben de tam emin değildim ama şu başlıklardan öğrendiğim kadarıyla:
http://en.wikipedia.org/wiki/High-level_programming_language
http://www.control.com/1026151382/index_html

Fark, dilin İngilizce'ye yakınlığından ziyade, dillerin işi yapış şeklinden kaynaklanıyor. Örneklemeye gidersek, yüksek seviyeli bir dilde programlama yazarken şu tek komut yeterli oluyor:
Alıntı YapBana bir bardak su getir.
Lakin aynı programı düşük seviyeli bir dilde yazarsanız, şu komut silsilesini vermek durumundasınız:
Alıntı YapAyağa kalk;
Mutfağa git;
Raftan bir bardak al;
Musluğu aç;
Bardağa suyu doldur;
Musluğu kapat;
Geri gel;
Su dolu bardağı ver.

Basit bir iş için lüzumsuz komut dizisi gibi görünüyor ama gerçekte düşük seviyeli dillerin üstünlüğü de buradan geliyor. Yüksek seviyeli dilde "bana su getir" komutu verdiğinizde derleyicinin portföyünde belli bir kütüphane var ve su getirme işini o yolu izleyerek yapıyor. Halbuki düşük seviyeli dilde suyu nasıl, hangi yolu kullanarak, hangi bardakla getireceğini siz belirliyorsunuz. Mutfağa giden daha kısa bir yol varsa, o yolu da tarif edebiliyorsunuz.

Yukarıdaki ilk bağlantıda bu duruma "abstraction" (=soyutlama) ismini vermişler. Zaten sizin ifade ettiğiniz yüksek seviyeli dillerdeki doğal dile yakınlık durumu da, bu sürecin doğal sonucu olarak tezahür ediyor.

Yukarıdaki ikinci bağlantıda çok çarpıcı bir örnek var. Buna göre, teoride olası en yüksek dilli program, tek satırdan oluşan "Bilgisayar, falanca işi yap!" şeklinde bir program olur.

matafleur

Alıntı yapılan: Jay Wells - 25 Ocak 2009 - 18:38:49
Yüksek seviye düşük seviye olayı bu değildir. Eğer programlama komutları ingilizce dilindeki kelimelere benziyorsa yani read, print gibi dil yüksek seviyeli demektir. Ancak 1, 0 gibi binary kodlarla program yazmaya çalışıyorsanız o dil düşük seviyelidir.

Binary kodla program yazmak derken?

Mesela?

mtilhan

Alıntı yapılan: matafleur - 26 Ocak 2009 - 14:20:36
Alıntı yapılan: Jay Wells - 25 Ocak 2009 - 18:38:49
Yüksek seviye düşük seviye olayı bu değildir. Eğer programlama komutları ingilizce dilindeki kelimelere benziyorsa yani read, print gibi dil yüksek seviyeli demektir. Ancak 1, 0 gibi binary kodlarla program yazmaya çalışıyorsanız o dil düşük seviyelidir.

Binary kodla program yazmak derken?

Mesela?
Makine dilini kastetmiş ;)
Yani python'da print fonksiyonu assembly'de x fonksiyonu(salladım),c'de printf,c++ da cout fonksiyonu işlevini görür.
Temel olarak tabi.
Bu saydıklarımdan python hariç diğer diller derlenir.
Derlendiğinde printf komutunun 2'lik sayı sistemindeki koduna döner.
Mesela 10100010 printf komutunun karşılığı olsun.L harfinin kodu 10000001 ,a harfinin 10100101,n harfinin 11111100 olsun.
O zaman print "Lan" ifadesinin karşılığı.
10100010 10000001 10100101 11111100
gibi bir şey olur.
Sayıları kafamdan salladım ;)
You're beatiful but you will never be mine.
Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul.

heartsmagic

Mesele ikilik karşılık değil, mesele ikilik kodlama yapılıp yapılamayacağı ki öyle bir kodlama türü yok. (Varsa da ben bilmiyorum)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

matafleur

Alıntı yapılan: mtilhan - 04 Şubat 2009 - 10:57:01
Alıntı yapılan: matafleur - 26 Ocak 2009 - 14:20:36
Alıntı yapılan: Jay Wells - 25 Ocak 2009 - 18:38:49
Yüksek seviye düşük seviye olayı bu değildir. Eğer programlama komutları ingilizce dilindeki kelimelere benziyorsa yani read, print gibi dil yüksek seviyeli demektir. Ancak 1, 0 gibi binary kodlarla program yazmaya çalışıyorsanız o dil düşük seviyelidir.

Binary kodla program yazmak derken?

Mesela?
Makine dilini kastetmiş ;)
Yani python'da print fonksiyonu assembly'de x fonksiyonu(salladım),c'de printf,c++ da cout fonksiyonu işlevini görür.
Temel olarak tabi.
Bu saydıklarımdan python hariç diğer diller derlenir.
Derlendiğinde printf komutunun 2'lik sayı sistemindeki koduna döner.
Mesela 10100010 printf komutunun karşılığı olsun.L harfinin kodu 10000001 ,a harfinin 10100101,n harfinin 11111100 olsun.
O zaman print "Lan" ifadesinin karşılığı.
10100010 10000001 10100101 11111100
gibi bir şey olur.
Sayıları kafamdan salladım ;)

Binary kodun ne olduğunu biliyorum.Ayrıca verdiğin örnek ascii nin karşılığı binary kodlamanın değil.

Ama ne senin anlattıkların ne de benim yazdıklarım binary kodla program yazmak kelimesini açıklamıyor.

Eğer kastettiği şey benim anladığım şey ise net söyleyeyim binary kodla program yazamazsın.ISA seviyesinde kodlamayı ancak compiler yardımıyla yapabilirsin.Onun haricinde donanımın sana sunduğu en alt arayüz assembler seviyesidir.

Kastettiğinin ne olduğunu anlamadığım için sordum.

ZooM

Off ne cok uzadi konu :)Ustalar konusurken haddime degil ama Kendimce arastirdiklarim ve forum(larda)  okdugum kadar ile bahsediyorum....
isteyen iki dilide ogrensin kendi muhakemesini kendisi yapsin :) bende yeni basliyorum yazilima. C gercekten uzunca komutlar gerektiriyor. pythonda ise kisadan kisadan yazilabiliyor. Buyuk hedeflericin python hantallastirir saniyorum. Python u biraz kendimce arastirdim daha sonradan web programlaya gecince baska seyleride ogrenmeniz gerekcek vs vs... Windowsda Python da yaptiginiz programi calistirmak icin pyhon un kurulu olmasi gerekir. ki bi cok kisi sadece programi calistirmak ister.(bilgisayari iyi kullanmayi bilmeyen kisiler icin) pytonu yuklemesi gerektigi anlamayabilir. ben python un baslangic icin kolay oldugu kanisindayim. Forumda bi cok tartisilmis bu konu hemen hemen her iletiyi okudum. Iyi birsey yapilicaksa C olarak kabul gormus ki benime kendimce arastirmalarima gore "C" ve ardindan "Java".
oncdan once baska birsey var ne istediginizi iyi bilin. gidilecek yolu yani islem basamaklarini iyice belirleyin. kisacasi "algoritma" :)
Kolay gelsin :) 
If I was your vampyre...

MeBuNtU

konu ile alakasız ama Pythonda yazdığın programı py2exe ile derlesen Windowns ta python yüklü olmadan çalışır.