Java neden bu kadar çok kurumda lingua franca? [kapalı]


22

EDIT: Bu soru ilk başta Java'nın temelini atıyor gibi görünüyor ve sanırım bu noktada biraz. Ancak, yapmaya çalıştığım en büyük nokta, tek bir dilin tek bir son olarak seçilmesinin neden tüm sorunların hepsi için çözüm olduğudur. Java kullanılmış olanlardan biri olduğu için burada yenmek zorunda kaldığım kişi bu, ama Java'yı yeni bir ripleme amaçlı değilim

Java'yı çoğu akademik ortamda sevmiyorum. Dilin kendisinin kötü olduğunu söylemiyorum - pek çok platformda yeniden derlenmeden çalıştırma kabiliyetine sahip, en çok istenen özelliklere sahip. Next App ^ TM'niz için dili kullanmakta yanlış bir şey yoktur. (Kişisel olarak yapacağım bir şey değil, ama bu daha ziyade tasarımı kötü olmaktan ziyade daha az deneyime sahip olduğum için)

Java'nın bir dil olarak kullanılmasıyla yüksek seviyedeki CS derslerinin öğretilmesinin bir zarar olduğunu düşünüyorum. İş arkadaşlarımdan çoğu, hiçbir işe yaramaz bir program yapamaz, çünkü çöp toplanmamış bir dünyada nasıl çalışacaklarını bilmiyorlar. Programladıkları makineleri temelde anlamıyorlar. Birisi çöp toplanan dünyanın dışında çalışabilirse, birinin içinde çalışabilir, ancak bunun tersi mümkün değildir. GC bir alettir, koltuk değneği değildir. Ancak bilgisayar bilimi öğrencilerine öğretmek için kullanılan bir koltuk değneği gibi.

Bilgisayar bilimi, tek bir dilden uyarlanmış tüm dersleri öğretmemelidir. Öğrenciler tüm iyi tasarımların aptalca Java tasarımı olduğu ve Nesne Yönelimli Tasarım'ın SADECE YAPILACAK ŞEYLER OLABİLECEK DOĞRU BİR YOL olduğunu düşünerek ayrılırlar. Mezunların makineleri daha iyi anlamalarını sağlamak için, en az bir tanesi çöp toplanmış bir dil olmayan diğer diller öğretimde kullanılmalıdır.

CS’de saygın bir kurumdan doktora yapan birinin kağıt torbadan çıkmaması için utanç verici.

Daha da kötüsü, aslında işlerin nasıl yürüdüğünü anlayan CS profesörleri ile konuştuğumda, böyle duyguları paylaşıyorlar, öğrencilerimize Java'da her şeyi yaparak kötülük yapıyoruz. (Eğer başka bir dille değiştirirsem yukarıdakilerin aynı olacağını unutmayın, genellikle Java değil tek bir dil kullanmak sorun.)

Toplamda, artık hiçbir dereceye saygı duymayacağımı hissediyorum - etrafımdakilerin fizzbuzz problemlerinden çıkışlarını programlayabildiklerini göremediğimde.

Neden / nasıl bu hale geldi?


9
Endişelenme. Oracle'a yarım şans verin ve durumu düzeltirler :) Android ve Apache'ye karşı açılan davaları geliştiricileri uzaklaştırmaya daha yeni başladı. Gelecekteki pazar beklentisiyle Python'u öğretmeye başlamak için yukarıdakileri bir ipucu olarak alan bir kurumda öğretiyorum.
SamGoody

3
Hangi akademik ortamdan bahsediyorsunuz? CSci öğrencilerinden sadece bir dil öğrenmenin beklendiği hiçbir yerde bir şey bilmiyorum. (En son okuldaydım, C ve Scheme ile öğrenmiş olabilirsiniz, bence, eğer ana ve sınıflarınızı dikkatlice seçtiyseniz, ama en az iki farklı dil kullanıyordunuz.)
David Thornley

16
L1 önbelleğinizin nasıl çalıştığını açıklayabilir misiniz? Bir ALU tasarlayabilir misiniz? Maxwell denklemlerini açıklayabilir misiniz? Anakartınızın termodinamik özellikleri ne durumda? Bir USB sürücüsü kurabilir misiniz? Bilgisayarınızın nasıl çalıştığını GERÇEKTEN biliyor musunuz? Yoksa ilgi alanınıza uygun bir soyutlama düzeyi seçip oradan mı çıktınız?
MetricSystem

5
Çünkü “temelde programladıkları makineleri anlamak için” bellek yönetimini anlamanız gerektiğine karar vermek durmak için tamamen keyfi bir seviyedir. İlgilendiğiniz sorunları anlamak gerekli değilse, zamanınız ilgilendiğiniz şeyleri incelemekle daha iyi zaman geçirir (çünkü kimse her şeyi öğrenmek için yeterli zamana sahip değildir). Ve Java programcılarının neden hafıza yönetimini öğrenmeleri gerektiğine dair sunduğunuz herhangi bir argüman, herkesin bir şeyi "anlamak" için atomik fiziği bilmesi gerekene kadar sınırsızca uzatılabilir.
MetricSystem

7
Ayrıca, burada herkesin katı bir erkek argümanı varsa, sizler, Java'yı yalnızca bir programlama dili olarak sunan tek bir CS programını hiç duymadığımdan dolayı sizsiniz.
MetricSystem

Yanıtlar:


30

Bu bir Java problemi değil, bir öğretim problemi. Nasıl programlanacağını bilmemek bir dil hatası değildir, öğrencilerin hatasıdır. Aynı şey tüm konularınız için geçerli, GC, temel makine bilgisi, konuşmanın "başlık altında" işleyiş şekli.

Çöp toplama konusundaki büyük yakınmanız beni biraz fırlatıyor. C veya C ++ çöp toplama işlemi yapmıyorsanız, genellikle çok iyidir ve sorun değildir. Hepsinin montajı öğrenmesini mi tercih edersin? Sıkı olan yüksek seviyeli diller öğretim için çok faydalıdır. İhtiyacınız olduğunda kütüphanelerin, paketlerin ve diğer güzel kitapların esnekliğini, diğer birçok üst seviye dilde (PHP, Ruby, Python, Perl) bulunan kafa karıştırıcı dil "şeker" olmadan, size esneklik sağlar.


5
Yüksek seviyeli dillerin öğretilmemesi gerektiğini söylemiyorum. Ancak, daha düşük seviyede bir şeyin (C veya Fortran'ın emriyle veya bazı diğer sistem programlama dilleri için) öğretilmesi gerektiğini söylüyorum. (C'nin altına gitmek daha az faydalıdır çünkü bu seviyenin altında öğrendiğiniz her şeyin tek bir makine mimarisine özgü olacağını öğrenir). Tüm CS sınıflarının harika düşük seviyeli programcılar olması gerektiğini söylemiyorum. Ancak diyorum ki, eğer düşük seviyeli bir problemle karşılaşırsam, etrafımdaki bütün öğrenciler gibi göründükleri gibi sıçratmamaları ve ölmemeleri gerektiğini söylüyorum.
Billy ONeal

3
@Billy: Aşağıya inmek, başlangıçtaki öğrenme seviyen zordur. Kendimi C ++ / C koduna bakarken ve kafamın etrafına sararak eğlenceli bir zaman geçiriyorum. Mucizeler beklemeyin ama melekleri de beklemeyin. Programcıların , problemin seviyesi ne olursa olsun, hızlı bir şekilde "sıçrayacak ve ölecek" olmalarından yoksun bırakmalarının sürmesi gerekiyor .
Josh K

5
@Josh: Yeterince adil, ancak IMHO'nun en az bir diğer programlama ortamına resmi olarak maruz kalması CS derecesi verilmesi zorunluluğu olmalıdır. Derecesi "Java'yı anladım", "CS'yi anladım" yazmıyor. İkisi aynı değildir ve yalnızca Java'yı (veya bunun için herhangi bir dili) kullanarak CS'yi tam olarak anlayamazsınız . (BTW, +1)
Billy ONeal

2
@JoshK: Düşük seviyelerde hata ayıklayamama ve yazdıkları kodun sonuçları hakkında düzgün bir şekilde sebep olma konusunda büyük ölçüde azaltılmış bir yetenek.
Mason Wheeler

1
Sadece Java öğrenen ve C ++ veya C tarafından korkulan programcıları biliyorum çünkü işaretçiler kullanmak zorundalar. İşaretçilerle programlama yapamayan birinin gerçek bir programlayıcı olarak kabul edilip edilemeyeceğini bilmiyorum: sonuçta, tüm modern bilgisayarlar ve çalışma süreleri hala kayıtlar, ana bellek, yığın, yığın içeren temel bir mimariye dayanıyor. Bu yüzden C ++ yerine Java ile programlamayı tercih ediyorum (bellek yönetimi ile uğraşmak zorunda kalmazsanız işlerin yapılması kesinlikle daha kolay) ancak öğretimin kesinlikle Java ile sınırlı kalmaması gerektiğine katılıyorum.
Giorgio

12

Üniversiteler bunu gerçekten yapıyor mu? Yoksa bu sadece insanların kötü bir iş görüşmesi adayı aldıklarında algıladıkları bir algı mı?

CS derecemi 4 yıl önce aldım ve Java giriş sınıflarında kullanılırken, bundan sonra özellikle vurgulanmadı. Kafamın en üstünde, zorunlu zorunlu dersler Java, C, C ++, SML (işlevsel programlama dili), assembly, matlab ve CAST (devre tanımlama dili) öğrenmenizi gerektiriyordu. Bu, tüm matematik ve teorik CS derslerini ve tabii ki, sizi bir sürü gruba daha fazla açıklayabilen yarım düzine seçmeli CS derslerini dikkate almaz. Bir kaç farklı üniversitedeki arkadaşlarla konuşmaktan, yaptıkları iş farklı değildi.

Sadece Java öğreten üniversiteler varsa, o zaman bu gerçekten bir trajedi. Java kötü olduğu için değil, bir programcının kullanması gereken pek çok araçtan biri olduğu için. Java'yı yalnızca tanıyan bir geliştirici, yalnızca çekiç kullanmayı bilen bir marangozla eşdeğerdir. Ancak, en azından saygın üniversiteler için, bunun gerçekten böyle olduğuna inanmakta zorlanıyorum. Bunun yalnızca kötü adayları görmekten ve okulu, adayın kendi sürücü / motivasyon / merak / profesyonellik / vb.


2
Kabul. Birkaç yıl önce yeni mezun oldum ve derslerimin çoğu Java kullanarak öğretilirken, C veya C ++ kullanarak öğretilen bir dersi almadan mezun olmak zordu ve ayrıca Haskell kullanımını vurgulayan bir programlama dili kursu aldık. .
mipadi

Benim derecemde önce Pascal'ı, sonra Java'yı OO dili olarak yaptık. Yine de 2. yılda, proflerin% 90'ı hangi dili kullandığınızla ilgilenmedi. Bazılarımız c / c ++ / ruby ​​/ C # / python / hatta haskell kullanıyordu, fakat çoğu insan bildikleriyle sıkıştı, java. Assembly / c / c ++ kullanarak gerekli dersleri, yani 3B grafikler (isteğe bağlı) kursumuz gibi şeyler opengl için zorunlu olarak c / c ++ 'ı uyguladı. Ve açıkçası, temel sistemler kursu SPARC montajını zorladı (çünkü bilerek çalışıyorduk ve düşük seviyede). Şimdi 1 yıl içinde python / c ++ 'a taşındıklarını duydum ....
Aren

11

Gerçekten pek çok okulun durumunun bu olduğuna şaşırdım. CS derecemi aldığımda, aralarında günün tüm popüler dillerini içeren bir dizi dil kursum vardı (bu neredeyse 40 yıl önceydi): assembler (Univac 1108 ve MIX), FORTRAN IV, SNOBOL4, COBOL, Lisp ve Algol 68. Sadece bir dilin öğretildiğini hayal edemiyorum. Veya bazı derleyici programları yazmadan derleyicilerin ne yapması gerektiğini nasıl takdir edebileceğimi.

Algol ve FORTRAN'ı veri ve algoritma kurslarının çoğunda kullandık. Lisp ile daha fazla zaman geçirmeyi çok isterdim - bunun yerine sadece bir tanıtım yaptık ve şimdi bazı kavramları tekrar öğrenmeye çalışıyorum. Ayrıştırıcıları yazmak için SNOBOL4'ü kullandık - ve arkadan izleme ile desen eşleştirmesi daha sonra birçok modern dilde bulunan regex kütüphaneleri için iyi bir temel oluşturdu.

Yarım düzine dile bu giriş, o zamandan beri süren ilgime yol açtı.


8

Asıl sebebi bulmak için, bu kurumları yöneten insanlara sormanız gerekecek (ve o zaman bile size söylemeyebilirler).

Bazı olası nedenler (ve burada kimseyi savunmuyorum ya da suçlamıyorum, sadece tahmin ediyorum):

Java ile işleri halledebilirsiniz

Java genel amaçlı bir dildir ve birçok sorunu çözmek için kullanılabilir.

Birçok öğretmen Java’yı anlıyor

Anlamadığınız bir dili öğretmek zor

Java popüler

Bu, birçok Java kaynağı olduğu anlamına gelir - kitaplar, aktif bir topluluk, kod kütüphaneleri vb.

Java kolaydır

Java yapmak için pek çok düşük seviye şeyi veya teoriyi anlamak zorunda değilsiniz. Bunu yapmak olmayabilir de , ama en azından işlerinizi alabilirsiniz.

Java yaygındır

Daha fazla veya daha az bir şey üzerinde çalıştırabilirsiniz.

Java programcıları için işler var

Java'ya ihtiyacı olan pek çok iş var - öğretmenlerin öğrencileri gerçek dünyaya hazırlaması gerekiyordu.

Sınırlı bir süre var

Birçok kursta, birden fazla dil, teori, düşük seviye kavramları vb. Öğretmek için zaman yoktur.

Öğrencilerin istediği bu

Birçok öğrenci zaten Java'yı duymuş (ve hatta kullanmıştır). Sevdikleri için tanıdık çünkü.


6

Endüstri bunun için istedi. Java geliştiricileri sıkıntısı vardı, bu yüzden okullar onları yaratmaya başladı. Şirketler kapıdan girer girmez çalışmaya başlayabilecek geliştiricilere sahipler.

Neyse, dil önemli değil. GC olmayan bir dil öğretebilir ve hala kötü programcılar üretebilirler. Okulların kullandığı dil bir uygulama detayıdır. Okullar kavramları öğretmeli. Eğer durum bu değilse, o zaman sorun olan okul, öğrettikleri dilin değil. Sadece birisinin bir işaretçinin ne olduğunu bilmediğinden, etkili bir programcı olamayacakları anlamına gelmez.

GC zaten geleceğin yoludur.


4
Bir işaretçinin ne olduğunu bilmenize gerek yok. Fakat kavramı nispeten hızlı bir şekilde alabilmeniz gerekir. İşaretçileri veya işaretçilere benzemeyen kavramları anlayamamak, bilgisayar bilimlerinin bir bütün olarak anlaşılmadığını gösterir. Tüm CS derecelerinin harika düşük seviye programcıları olması gerektiğini söylemiyorum, ancak en azından 4 yıllık bir üniversite diploması aldıklarında neler olup bittiği hakkında kavramsal bir anlayışa sahip olmaları gerektiğini söylüyorum.
Billy ONeal

1
CS programlama ile ilgili değil.
Javier

1
@Javier: CS programlama ile ilgili değil ? Tabii orada programlama ile ilgili değil CS o dalı, "Teorik Bilgisayar Bilimi", ama çoğunlukla o olduğunu programlama hakkında.
Billy ONeal

1
@Billy ONeal: wikipedia tanımı biraz uzun, ama programlamaya en yakın olan kısım "onların uygulanması için pratik tekniklerin incelenmesi". yani, uygulama (programlama) ile ilgili değil, uygulama tekniklerini (algoritmalar, yapılar, diller, vb.) çalışmak
Javier

1
@Javier: "Programlama çalışması" ve "programlama eylemi" nin aynı olduğunu düşünüyorum. Sonuçta, kod yazıldığından daha sık okunur. Ancak bu, mesele yanında - bir CS derecesi aldığınızda, sonunda yapacağınız şey programlama yapmaktır.
Billy ONeal

4

Tembellik ve kar amacı. Java, çoğu insanın% 20'si çaba ile% 80'ini alır. Ancak, bu genellikle ne olup bittiği hakkında derin bir anlayışa sahip olmayan ve üst düzey araçlardan daha derin kazama yapamayan voodoo kodlayıcıları “maymun görüyor maymun” üretir.

Doğru bir şekilde C / C ++ öğretmek zordur. İyi yapılsa bile, birkaçı, işaretçiler gibi düşük seviyeli kavramları tam olarak anlayamayacaktır (bu konuda çalışmalar vardır). Ayrıca, iş piyasasında hemen alakalı görünmüyor.


2
Ancak işaretçileri daha iyi anlarsanız, referansları çok daha kolay anlayabilirsiniz.
Michael K

3

Çoğunlukla katılıyorum ama belli bir dereceye kadar.

Eğer CS kursu veri yapıları veya algoritmaları üzerine odaklanacaksa öğreteceksiniz. Gereksiz şeylerin çoğunu ortadan kaldırmak iyi bir şeydir. Yüksek seviyeli kavramları öğrenirken öğrencilerin düşük seviyeli stufla uğraşmasını istemezsiniz.

Öte yandan, düşük seviyeli şeyler de öğretilmelidir. Sadece daha çok yönlü programcılar elde edelim.


Tek bir kursa bahsetmiyorum. Tek bir kurs için, sorun değil. Tüm bir müfredat için değil.
Billy ONeal

3

Her zaman olduğu gibi, neyin sorusu öğretmek istediğinizi ve ne kadar zaman ayırmanız gerektiğini .

Java'da bir şeyler yapmak, başıboş işaretçilerle ve ücretsiz / mallocla uğraşmak zorunda olmadığınız anlamına gelir. Bu, bulması zor hataların daha az olduğu anlamına gelir.

Bu, ticarette iyi olmanız gereken temel makine hakkında bir şey öğrenmemeniz gerektiği anlamına gelmez, ancak belki de iş için doğru aracı seçmeniz gerekir. Yüksek seviye algoritmaları, assembler kursu için belki de en iyi konu değildir.


Programlamaya giriş dersi veya veri yapıları dersi için Java iyi. Ancak 4 yıllık bir müfredat için değil.
Billy ONeal

@Billy. Kabul. Sadece Java kullanmanın endişelenmenize gerek olmayan bazı şeyleri satın aldığını söylüyorum. Java olmadan diğer derslerdeki temelleri öğrenmelisin.

2

Bilgisayarların gerçekte nasıl çalıştığı hakkında bir şeyler öğretilmelerini istemek çok mu fazla ? Herhangi bir CS dersi taslağının işletim sistemleri ve bilgisayar arşivi içermeyeceği bana mantıklı gelmiyor. Bir zarfın arkasındaki bir bilgisayarı tasarlayabilmeniz gerektiğini söylemiyorum, ancak genel bir bakış tüm dilleri algılayabiliyor. Java, sanal bir makinede çalışıyor!


1
Are orada iyi bilgisayar bilimi programları yok bir OS sahası ve bilgisayar organizasyonu sahası bulunmaktadır?
mipadi

Kesinlikle umarım olmaz!
Michael K,

0

Tüm dürüstlükte, her dereceye saygı duymamanız gerektiğini ve özellikle CS'ye uymamanız gerektiğini düşünüyorum çünkü öğretilen tek dil Java.

Herhangi bir terbiyeli comp. Bilimsel öğrenci CS derecesinin bir kağıt parçasından başka bir şey olmadığını ve gerçek bilgilerin kişisel projelerden ve kişisel çalışmalardan geleceğini anlar. İyi öğrencilerin C'yi bilmeleri gerektiğini ve Linux / Unix'te işlerin nasıl yapıldığını öğrendiklerini ve ellerinin modern dillerin eline geçmemesini öğrendiklerini bilmek isterim.


-1

Java kullanırken bir sorun görmüyorum. En büyük sorun (sizin de bahsettiğiniz gibi) üniversiteler, zorunlu problemleri çözmenin en iyi ve tek yolu olarak zorunlu programlamayı öğretiyor. Bu gerçeklerden çok uzak. Örneğin, üç farklı kurs için üç zorunlu dil kullanmak (veya aynı dili en kötüsü) yerine, üç farklı programlama paradigması kullanmaları gerekir. Bir örnek Java (zorunlu), Prolog (bildirimsel) ve Haskell'dir (işlevsel).

Bunun neden olduğuna gelince, bence (1) siyasetin bir birleşimi - başkanlar açık fikirli değil ya da kişisel yararları / sponsorları ve (2) tembellik - profesörler bir zamanlar öğrencilerdi ve bildiklerini ya da sevdiklerini öğretiyorlar.


-1

Grand Rapids'deki Calvin üniversitesi Mi. Giriş programlama dersleri için Java'dan Python'a geçtikten sonra, inançsız olan profesör, "Birçoğu gerçekten programlayabilir, bu inanılmaz" gibi bir dönem sonunda bir grubumuzdan bahsetti. Şaşkınlığı, Java ile olan önceki deneyimlerinin aksineydı. Bu Java'yı kötü bir dil yapmaz, sıfırdan almak zor. Aynı şeyi C veya C ++ ile ya da bellek ayırma şemaları veya türleri hakkında derinlemesine bilgi gerektiren herhangi bir dil için tartışacağım.


1
Hımm, Python tıpkı sizin bahsettiğiniz diğer diller gibi samimi bilgi gerektirir.
Billy ONeal

Tercümanlı dillerin öğrenilmesinin çok daha kolay olacağını bekliyorum, çünkü öğrenciler derleme ile derlemek yerine ifade ile geri bildirimde bulunabilirler.
kevin cline

@BillyONeal Beni yanlış okudunuz, bağlam son cümlemde hafıza tahsisi idi. Bir str () veya dict () veya tuple () veya list () veya set () öğelerinin büyüklüğü veya # öğeleriyle ilgili henüz endişelenmedim ... Onları 'kullanıyorum'.
Ben DeMott

@kevincline Teşekkürler Kevin - rastlamaya çalıştığım şey buydu. İletişim becerilerim üzerinde çalışmam gereken indirgemelere bakılırsa;)
Ben DeMott

-2

Bilgisayar sistemleri mühendisliği derecesini aldım, bu yüzden montaj, mikroişlemciler, VHDL, mantık kapılarının ne olduğu ve bunlardan bir flip-flop nasıl oluşturulduğuna baktım, elektrik devreleri, işlemsel yükselteçler, alçak geçirgen filtreler, genlik okudum Laboratuarda telefon tuş takımı gibi ses çıkaran, mantık analizörü ile karışık bir devre inşa eden modülasyon bazı fizik dersleri aldı. Linux tarafında daha önce bir çekirdeği yeniden derledim, küçük bir aygıt sürücüsü ve bir ev ödevi dosya sistemi yazdım.

Ama sonra daha üst seviye eşyaları daha çok sevdiğimi fark ettim. Python'u C'ye tercih ederim. C #'yi seviyorum ve çöp toplayıcıyı seviyorum. Matematik, algoritmalar ve veri yapılarını severim, ancak belirli bir işaretçi hayranı değilim - onlarla uğraşabilirim; Sadece istemiyorum.

Yani, üniversitenin daha fazla C, daha az Java öğretmesi gerektiğini düşünüyorsunuz. Başka biri, şemadaki her şeyi öğretmeleri gerektiğini düşünüyor. Spolsky ikisini de alacak.

Evet, bir üniversite derecesinin sadece bir kağıt parçası olduğu, ancak “okullaşmanın eğitiminize girmesine izin verme” olduğu doğrudur. Her zaman Vikipedi, Yığın Taşması, Coursera.org vs. vardır. Geleneksel üniversiteler daha az önem kazanacak gibi görünüyor.

Her yere girebilseydim, o zaman farklı bir okula giderdim, hiçbir elektrik mühendisliği dersi almazdım, aksine, Fizik ve Fransızca bölümlerinde Math, CS + minor. Fransızca Scratch; İsviçre'de yurtdışında okumalı ve bu sırada 5 doğal dil öğrenmeliydim. Ayrıca geri dönüp gerçek dünyada hayatta kalabilmek ve üniversitedeki iktisat derslerine girmem gerektiğine ve gerçek hayatta hayatta kalabilmek için onu kesinlikle kafama sokmam gerektiğine ikna eden bir insan bulacağım (yalnızca birkaçı iktisat konusu hakkında okuduğum kitapları emmek yok). Ayrıca Freakonomics 1 kitabı veya Perl dili hakkında bir kitap için para ödemeyeceğim.

Bir gezinti sırasında, birçok şeyi farklı şekilde yapardım. Şimdi yapabileceğim tek şey ve bunu size tavsiye ediyorum, kendi maceranızı seçmek: http://www.codinghorror.com/blog/2008/03/choosing-your-own-adventure.html

Şu ana kadar borsada 100 milyar dolar kazanmış olurdum ve bunu kanser araştırmalarına yatırırdım, bilim insanlarını plastik atık dünyasını kurtarmak için işe alırdım; Ron Paul kampanyasına yeterince para bağışlardım, böylece Orta Doğu'daki savaş 3 yıldan daha uzun süre önce gerçekleşecekti.

Şimdi zamanınızı asla geri alamayacağınızı kabul edin, bu yüzden akıllıca harcamaya çalışın.


Seçmenler, lütfen detaylandırın.
İş

-2

Birkaç yıl önce, Birleşik Krallık'ta Java kararının daha fazla öğrenciyi programlamaya teşvik ettiği bir yerde okudum. Görünüşe göre, iğrenç işaretçilerin ve hafıza yönetiminin fakir olmayışı nedeniyle beyinde daha kolaydı ... Python'un hızla yeni bir "öğrenme aracı" olarak benimsemesinin nedeni bu olduğunu tahmin ediyorum. Tipik uni dersinizin sizi bir programcı haline getirmeyeceği kanısındayım. Yapması gereken tek şey, sizi belirli bir miktarda bilgiyle donatmak ve programlama için hazırlamanız. Kendisinin bir programcı diyebileceği gün genellikle üniversiteden sonra oldukça zor bir zaman alır ve bu zaman geldiğinde, işaretçiler, çöp toplama ve OOP dışındaki programlama paradigmaları bir sorun olmamalıdır.


-2

Java neden kullanılıyor?

Üç sebep:

  1. Java, C tarzı sözdizimini kullanır. Birçok programcı buna aşina olduğundan, öğrenme eğrisini azaltır.

  2. Java'yı pazarlamak için modern ve havalı olarak para harcandı. Ancak lisp'a kıyasla, java taş çağında yaşıyor.

  3. JVM. JVM, Java ile ilgili sadece pazarlama yutturmaca değil, yasal olan tek şey. JVM'nin programları çalıştırmak için bir platform olarak övülmesine rağmen, Java dilinin varlığını hak etmiyor. JVM için birçok farklı dili teorik ve pratik olarak derleyebilirsiniz.


1
Hoşgeldiniz. Bu, Stack Exchange Programmers'a ilk gönderiminiz olmuş gibi görünüyor. Sss sayfası bir göz atın lütfen programmers.stackexchange.com/faq soru sorma ve yanıtlama, itibar bazı tavsiyeler. Kilit nokta, cevapların kışkırtıcı değil bilgilendirici olması gerektiğidir. Java gibi bir iddiada bulunurken taş çağı ve Lisp modernse nedenini açıkla. Birçok okuyucu Lisp’in 1958’de belirtildiğini ve FORTRAN’dan biraz daha genç olduğunu biliyor olabilir. Java hakkında FORTRAN veya Algol ile paylaşılan bir şeyin tasarımını sürdüğünü ve sınırlandırdığını söylemek istiyorsanız, açıklayın.
GeliştiriciDon

-3

Sorunuz Java'nın çok havalı olduğunu ancak bilimsel bilgi işlem için yeterince ağır olmadığını söyleyen bir makale yazan başkalarının bulgularını desteklemektir. Bence Büyük Ondalık’ı tüm hassasiyetleri, NAN’lar vb. İle birlikte kullanması ve devam etmesi gerektiğini düşünüyorum.

Ben sadece otomatik toplanan bir dünyada çöp yaşamak istiyorum. Daha sağlıklı, daha temiz, düzenli, estetik, sağlık harcamalarına harcanan parayı önler, daha çok arzu edilir - istenmeyen bir şeyi etiketlemek zorunda değilsiniz - yalnızca onu yeniden değerlendirip veya null olarak ayarlayarak ya da kapsam dışına çıktığımda öğenin otomatik olarak aldığı çöp toplama için etiketlendi ..

Tamam, şimdi sadece Java hakkında konuşuyorum ancak bu gerçek çöp senaryosunda da işe yararsa en yararlı olur. Java, okullarda bir dil olarak kullanması için benim için yeterince iyi olan bir yerde çalıştırılan bir kez yazılır. Kullandıkları her nesneyi etiketlemekle zaman geçirmek istemeyen ve kendisini kullanmayı bırakmak istemeyen mutlu programcılar tarafından hiçbir bellek sızıntısı yaşanmaz ve sevilir, Java adına iyi bir mantıktır.

Java'da işaretçiler var - biz bunlara referans deriz. String s1 = "Merhaba"; String s2 = "Merhaba"; Dize s3 = yeni Dize ("Merhaba");

s1 ve s2, aynı String nesnesine işaret edecek - bu, s1 == s2, s1.equals (s3) referansı ile ancak s1 == s3, yanlıştır, çünkü s3, yeni bir referans nesnesidir - bu, referansların ve I'in java aritmetiğidir. Bunları çok üzgünüm anlıyorum, işaretçi aritmetiğinin altında yatan C veya C ++ karmaşıklıklarını anlamayan biri olarak etiketlenmek istemiyorum.


2
Referanslar işaretçi değildir. Bunları aritmetik olarak kullanamazsınız ve işaret ettikleri hafızayı yeniden yorumlamak için kullanamazsınız. Ve elbette, ne kadar çöp toplanmış bir dünyada yaşamak istiyor olursanız olun, meselenin gerçeği, dünyanın çöp toplanmış bir dünya olmadığıdır. Java'nın kötü bir dil olduğunu ya da insanların java kullanmaması gerektiğini söylemiyorum. Eğer beğenirseniz, kullanın, bununla ilgili harika şeyler var. Yeni başlayanlar için uygun olmadığını düşünüyorum çünkü yeni programcıların anlaması için gerekli olan şeyleri gizliyor.
Billy ONeal,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.