1. sayfa
| c ile ubuntu uygulaması nasıl geliştirebilirim ?(Başlangıç düzeyde c biliyorum) |
| uygulamadan kastın GUI ise,GTK+ var gui geliştirmeni sağlayan bir kütüphane.onun haricinde c++'ı öneririm çünkü OOP bilmeli her yazılımcı. |
|
|
sistem programlama haricinde OOP heryeri domine etmiş durumda.örneğin web programlama,mobil programlama,oyun programlama,masaüstü programlama. C ve PHP gibi structured dillerin Data Abstraction özelliği zayıf ve C nin en can sıkan yanı:diyelim elinde bir struct var ve o struct'ın işine yarasın yaramasın tüm veri elemanlarını bilmek zorundasın ve bir tanesi bile değişse senin kaynak kodu değiştirmen gerekiyor yani kod bakımı da zor takibi de zor.C++ C# ile de işletim sistemi yazamıyorsun doğrudan(VTable,runtime polymorfizm gibi araçlar nedeniyle).Eğer birisi uygulama geliştirme alanında ilerlemek istiyorsa günümüzde OOP ile arasının iyi olması gerekiyor en basitinden android Facade pattern'i kullanıyor,asp.net mvc yi kullanıyor,php frameworkler mvc yi kullanıyor. Data Abstraction dediğimiz kavram,Gerçek hayattaki bir olayın/varlığın programlama alanında veri türleri ile temsil edilmesi demektir,ve bu veri modellemesini en iyi OOP yapabilmektedir şuanda.asıl amaç kişinin ne yapmak istediğidir eğer sistem programlama gömülü sistem kernel gibi alanlarda uzmanlaşmak istiyorsan C ve ilgili işlemcinin Assembly'sini iyi bilmek gerekiyor.Uygulama geliştirme için ise C++ C# Java gibi diller. |
| Uygulamak zorunda degil. Ama konsept olarak oo bilmeli. |
| Not wrong.bence bilmediğin konulara cevap atmamalısın.en basitinden microsoftun ilanlarına bak adamların istediği dillerin arasında OOP olan diller var.eskiden ben de senin gibi OOP karşıtıydım ama farkettim ki gerçek hayattaki bir varlığı veri yapısı olarak modelleyemessen algoritmanın hiç bir faydası olmaz çünkü data structures=algorithms tıpkı niklaus wirth'in dediği gibi. |
|
Ne yani interface, abstraction polymorphzm kalıtım bilmeden program yazamıyor muyuz. Saçma. Bu iddalarda bulunan arkadaşlar hiç oop öğelerinden x olmasa şu kodu asla yazamadım dedi mi? Neyse program yazmanın birinci adımı önce bir işlevi olmalı, bir amacı olmalı. Sonra bu amacı yerine getirmek için bir gui (arayüz) gerekiyorsa qt vs bir bak. Bir de yazacağın kodu illa c ile de yazmak zorunda değilsen alternatiflere bak derim örneğin Python ile c göre biraz daha kolay kod yazarsın. Böyle çok alternatif var. |
| Bak tekrar ediyorum. Konsept olarak bilmeli. |
Dipnot: php class ve oop getirilmesi oop olmazsa olmaz yapıyorsa sorarım java 10 da lamda getirildi napalm functional development mı yapalım. Ne çapta bir app yaptığınza bağlı olarak tabi ihtiyaçlar değişir. Adamlar php 5.x ile dünyanın en büyük sosyal media uygulamasını kodladı. Olmaz diye bir şey yok. OOP çok soyut kavramlar içerir fazla teoriktir. Abstract ile Interface farkının gerçekten ihtiyaç duyarak öğrenmek yıllar alabiliyor. (ha siz yine bir ara öğrenin çünkü en kötü iş mülakatında işe yarar) Lakin app yapmanın temel adımı değildir. |
|
Dediginde haklisin, sebep vermeden "bu boyle olmalidir" dersek biraz bosa konusmus oluyoruz. Bu konularda, genel olarak bu forumda da ego buyuk bir problem oldugu icin, ben x senedir bu isin icindeyim, y universitesini bitirdim, z sirketinde calistim ve benim dedigim en dogrusudur yaklasimini hic sevmedigim icin o detaylari paylasmiycam. Yanlis anlama seni elestirmiyorum, genel olarak tartismada appeal to authority konumuna dusup sidik yaristirmak istemiyorum. Benim oop bilmelidir deme sebebim su, iyi bir programci ( ki bu terime de uyuz oluyorum ) alet cantasinda programlama paradigmalarinin hepsine sahip olmali. Dekleratif nedir, imperatif nedit, oo nedir aop nedir, prosedurel nedir, functional nedir bilmeli, sartlar neyi gerektiriyorsa tekerlegi yeniden kesfetmeden en optimal cozumu sunabilmelidir. Dil ya da paradigma fanatikligi yapmak muhendislikte yersiz. Bu yuzden ben diyorum ki, oop bilinmelidir. Bil ama kullanmanin gerekli olmadigini dusunuyorsan kullanma. Diller general purpose programming language olarak farkli paradigmalari desteklet hale gelebilirler. Bu demek degil ki illa ki functional ya da oo programlama yapmak durumundayiz. Duruma bakar, karar verirsin. Senin ya da benim hayatimizda hic abstraction kullanmadan programalama yapabiliyor olmamiz bir sey ifade etmiyor. Tutup da , ben x kullanmadan da y yapabiliyorum o halde y şart degil dememeliyiz. Cunku zaten programlamada "şart" yok. Muhendislikte constraintler olur, kisitli kaynaklar olur. Sen de elindeki imkanlari kullanip bu kisitlamalar dahilinde optimal cozumu uretmek icin calisirsin. Sonuc olarak oop onemli bir paradigma ve profesyonel olarak bu isi yapacak herkes bilmeli. ( kullanmak zorunda degil ) |
|
Destan gibi döktürüp durmayın, sistem programlama ve legacy code harici örnek ver dedim, hala cevap yok. Functional falan diye saptırma. Java, C#/.Net kullandığın anda otomatikman OO içindesin, bunlarla procedural takılma imkanı yok. Bana bugün aktif olarak kullanılan, geliştirilen ve OO olmayan bir framework göster. Android stack, React, Meteor, Express.js, Laravel, Symfony, CI, Django... hepsi OO. Standard Php, Python kütüphanelerinin bile hepsi OO oldu. Dandirik türkçe tercümelere değil, aç da ingilizce dokümanlarına bak, herşey class, senin 10 yıldır kullanıyorum dediğin php extensionların hepsi deprecate oldu, güvenlik açığı olan kod yazıyorsun yıllardır farkında değilsin. |
|
|
Itirazin sekil degistirdi sanki, yazilim muhendisinin OOP bilmesine gerek yok derken bir anda "baslangic noktasi arayan kimsenin oop ogrenmesine gerek yok" demeye mi basladin? Ben konu basligini pek umursamiyorum acikcasi, konu bir sekilde OOP bilmek gerekir miye gelmis, ona cevap veriyorum. |
|
konu biraz amaci disina cikmis gibi. neyse kendi fikrimi soyleyeyim sana. Yerinde olsam C ile uygulama gelistirmezdim. neden diye soracak olursan linux dunyasinda C ile yazilmis open source applicaaton'larin kodlarina bakabilirsin. Ornek olarak cok basit bir GNOME application'i vereyim sana: Bijiben (GNOME Notes) Simdi bukadar basit bir applicaton'in bile kodlarinin C ile yazmasinin nekadar zor ve karmasik oldugunu gorebilisin bu ornekten. ben kendim baktigimda bir an afalladim o gune kadar kendimi C biliyorum zannederdim :D ama mesele C bilmek deil pratikte C ile birseyle yapmak. yani kisa sonuc: C ile application yapmak cok geride kaldi ve cok kulfetli o yuzden C ile yapma. peki hangi programlama dili ile yapacagim linux da (Ubuntu) ? bu soruya cevap vermek icin ilk once linuxda uygulama yapmak icin en iyi kutuphaneler nedir onlara bakalim. 1 - GTK+: bana gore en iyisi ki bircok linux desktop bunun ile yazilmistir. ve linuxta sayisiztane application bunun ile yazilmistir bunlardan en unlusu: GIMP, Inkscape, Nautilus, vs... 2 - QT: QT de cok iyidir. hatta GTK+ dan daha gelismis bir kutuphanedir fakat linux da nedense bukadar unlu olamamistir. ama GTK+ nin aksine tam cross platformdur. 3 - wxWidgets: bunun hakkinda cok bilgim yok. GTK+ kutuphanesi icin tavsiyem C++, Vala, Python, ve nesne yonelimli olan diger diller. ozellikle Vala programlama dili tam GTK+ icin bicilmis bir kaftandir. GTK+ icin Cok ciddi dusunuyorsan Vala yi sec derim. fakat unutma yaptigin applicaton'lar sadece linux da sinirli kalabilir cunki GTK+ tam cross platform deil. QT icin tavsiyem C++ veya Python veya baska bilmedigim QT nin destekledigi diger diller. QT nin GTK ye gore en guzel avantaji full cross platform olmasidir yani yaptigin application'lar hemen hemen her masaustunde calisabilir. wxWidets hakkinda cok fazla bilgim yok o yuzden birsey diyemeyecegim ama Python ve C++ destekledigini biliyorum. Not: Vala tam bir programalma dili degildir Vala kendi kodlarini C koduna donusturur yani Vala ile bir C uygulamasi yazmis olursun dolayli olarak. yani bir C code generator diyebiliriz. |
|
|
Programlama paradigmalari bilinmelidir. OOP de , FP de, PP de. Ben bunu savunuyorum. Spesifik olarak OOP yi ovmuyorum. Hala anlamamakta israr ediyorsun : ) Senin tum konu boyunca OOP neden "bilinmese de olur" iddiani desteklemek icin sundugun tek arguman "ben kullanmadan da yazabiliyorum" minvalinde oldu. Bu ciddiye alinacak bir arguman degil. Internette bir suru OOP elestirisi yapan profesyonel var, ac bari savunmaya calistigin noktayi biraz daha iyi ogren. Ancak insanin bir seyi elestirmesi icin dahi once onu bilmesi gerekir, yine benim ilk basta bahsettigim "OOP bilinmelidir" noktasina geri donersin. Dedigim gibi konu basligi umrumda degil, bana konu basligini hatirlatarak sadece laf ebeligi yapmis oluyorsun. |
|
| Peki senin sundugun alternatif nedir? Ne yapmak gerekiyor? Teorik olarak bir seyler ogrenmeden once oturun kod yazin, takilin; onemli projelerle ugrasinca mi bu mevzularla ilgilenin diyorsun? Ekrana "hello world" yazdirmak icin dahi bir programlama paradigmasi kullanmis olmayacak misin? Kusura bakma ama, cidden senin tam olarak neyi savundugunu cozemiyorum. Mevzuyu da cok uzatmak istemiyorum, eger cevap vermek istemezsen de anlarim, ben de sikildim bu konudan. Cunku ne yazarsam yazayim, sen israrla "Olmazsa olmaz" dedigimi saniyorsun. Ben bilmeli diyorum, bilmek zorunda demiyorum. Bilirse iyi olur diyorum, bilmezse yapamaz demiyorum. |
|
1. sayfa
< Bu ileti mobil sürüm kullanılarak atıldı > Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesajda bahsedilenler: @koccan9