Java genellikle akademi'de bulunur. Bunun arkasındaki sebep nedir?
realDünyada hiç kimsenin kullanmadığı şeyleri incelemek için 4 yıl harcamak , öğrencilere veya öğrencileri işe almak isteyen şirketlere fayda sağlamaz.
Java genellikle akademi'de bulunur. Bunun arkasındaki sebep nedir?
realDünyada hiç kimsenin kullanmadığı şeyleri incelemek için 4 yıl harcamak , öğrencilere veya öğrencileri işe almak isteyen şirketlere fayda sağlamaz.
Yanıtlar:
Bir kaç Üniversiteler yeterince iyi birçok (olmasa bile en) kararları örneğin vs. o kişinin hoşlandığı, hoşlanmadığı, görüşler, tat, sadece etrafında döner olduğu bilinmektedir birileri, Texas A & M kadrosunda Bjarne Stroustrup sahiptir var; Müfredatının C ++ 'ı vurgulama eğiliminde olduğu kimseye pek de sürpriz gelmedi.
Çoğu üniversite olsa da biraz farklı. Birincisi, kararlar genellikle fakültenin yararına öğrencilerden çok daha fazla verilir. Birçok durumda en büyük kriter "hangi dil bizim tarafımızdan en az çabayı gerektiriyor?" Bunların çoğu tembelliklerine de dikkat ediyorlar - sadece öğrenecekleri en az gelişmiş konseptli dili değil, aynı zamanda yeni bir şeyi yenilemek, güncellemek ya da kucaklamak için en yavaş olanı da istiyorlar.
İkincisi, çoğu karar komite tarafından verilir. Bu, nihai kararın nadiren (hiç de olsa) herhangi birinin gerçekte istediği anlamına geldiği anlamına gelir - komitenin en az üyesinin (özellikle en fazla etkiye sahip olanlar) özellikle sakıncalı bulduğu şeydir. Dondurmanın tadına bakmak gibi. Biri çileği sever, ancak bir diğeri de çileğe alerjisi vardır. Bir başkası çikolataya bayılır, ama başkası buna dayanamaz. Yine bir diğeri romlu kuru üzümün harika olduğunu düşünüyor, ancak diğer ikisi de "rom" lafının alkol kötüye kullanımını teşvik ettiği şeklinde yorumlanacağından endişe ediyorlar - bu yüzden herhangi birisinin istediği şey olmasa da vanilya ile sonuçlandılar.
Son olarak, genellikle , önceki iki kriterin izolasyonda üreteceklerinin çoğuna doğrudan doğrudan karşı çıksa da, genellikle endüstrinin ihtiyaçlarına cevap veren olarak görülmeleri gerekir (veya en azından istemektedir).
Java, bu üçünün kesişimidir:
Gerçekten de (örneğin) Java hakkında bilmeniz gereken, OOP'nin en temel kavramından daha fazla bir şey olmadığını söylemiyorum - yalnızca öğretmenin kabul edilebilir bir işi için geçenleri yapmak için gereken tek şey budur.
Java ortaya çıkmadan hemen önce doksanlı yılların başında Bilgisayar Bilimi okudum. Profesörlerimiz tarafından takip edilen yaklaşım aşağıdaki gibidir.
İlk yıl: Pascal'da programlama ve algoritmalar hakkında tanıtım kursu. Neden Pascal? Çünkü programlama kavramlarını hackleme imkânı olmadan öğretmek için tasarlanmış temiz bir dildir. Elbette biz öğrenciler o zamanki en popüler dilin C olduğunu ve artan popülariteye sahip yeni bir dil olduğunu biliyorduk: C ++. Bu yüzden sürekli bu dilleri okuyup tartışıyor ve kendi başımıza kullanarak küçük projeler yapıyorduk. Yani fikir şuydu: sınıfta ciddi teoriyi yaparız (Pascal) evdeyken nasıl hack edeceğimizi (C) öğreniriz. :-)
İkinci yıl boyunca C ve montajda alıştırmaları yapmamızın istendiği bir işletim sistemi kursu vardı. Profesör bize C konusunda tam bir ders vermedi (sadece birkaç ders) çünkü (1) ilk yıl boyunca programlama dersi aldık ve (2) programlama kavramlarını bilen her bilgisayar bilimcisinin, Bir kitap okuyabilir ve yeni bir programlama dili öğrenebilir. Kurs oldukça sorunsuz geçti ve hepimiz C ve meclisin kendi başınıza öğrendiğiniz ya da diğer öğrencilerle koridorda tartıştığınız ancak ders yapmaya değmeyecek pratik konular olduğunu normal bulduk.
Üçüncü yıl boyunca, farklı programlama dilleri paradigmalarını (zorunlu, işlevsel, mantıksal, nesne yönelimli) çalıştığımız programlama dilleri üzerine bir kurs yaptık, genel kavramları ve uygulama tekniklerini öğrendik ve ana programlama dillerini gözden geçirdik (Pascal, C, Modula2, Simula, Lisp, C ++, Prolog). Profesörümüzün kursun başında bize anlattığı şey şuydu: kursun sonunda kaç tane programlama dili bildiğinizi düşünerek bu kursu değerlendirmemelisiniz, bunun yerine öğrendiğiniz tüm genel kavramlar, nasıl olduklarını düşünerek birbirleriyle, ne için iyi olduklarını, hangi dillerde nasıl kullanıldığını. Daha sonra, belirli bir dili öğrenmek, sadece kitap okumak, mevcut koda bakmak, belirli bir projede kullanmaya çalışmak, vb.
Bu yaklaşımı çok uygun ve etkili buldum. Üniversitenin iyi programcılar hazırlamayı amaçlaması gerektiğini düşünmüyorum, bunun yerine programlama ve programlama dillerini anlamaya izin veren iyi bir bilgi vermeyi amaçlıyorum. İyi bir programcı olmak bunun bir yan etkisi olarak ortaya çıkacaktır. Şimdi Ada'nın zorunlu olduğu bir işe başvurmayı düşünüyorum ve daha önce Ada'da ciddi bir programlama yapmadığım halde ondan korkmuyorum.
Java öğretimi sorununa geri dönüyoruz. Sanırım Java genellikle öğretim için kullanılıyor, çünkü yeterince tarafsız ve endüstri dünyasına yakın bir dil kullanarak programlama ilkelerini açıklamaya izin veriyor.
Şahsen ilk dersim için Pascal veya benzer bir dil kullanmaya devam edeceğim, çünkü bu, Java / nesne yönelimli dillerde sıkıca tümleşik olan kontrol yapıları ve veri yapıları arasında ayrım yapmama izin verecek. Bu yüzden, benim görüşüme göre Pascal, programlama temel kavramları için daha kademeli bir giriş yapacaktır.
Ayrıca, bir bilgisayar bilimcisi (ve iyi bir programcı), yığın, yığın, parametre geçirme, bellek tahsisi, işaretçiler gibi temel mekanizmalar / çalışma zamanı yapıları veya yerleşik tesislerini kullanmadan soyut veri tiplerinin nasıl uygulanacağı hakkında bilgi sahibi olmalıdır. dil (listeler, ayarlar vb.) Java, bunun çoğunu programcılardan alır (elbette iyi), ancak yeni başlayanlar bu şeyleri öğrenmelidir. Belki de Java’daki ilk programlama kursundan sonra, programlama dilleri kavramları hakkında daha genel bir kurs almalısınız.
Bu sadece benim deneyimim ve görüşlerim.
Java geldiğinde okuldaydım. Ve üniversitem neredeyse bir gecede değişti. Java'da akademi'de insanlar başıboş dolaşıyordu. Ortaya çıktığında bir Jr'ydim ve o zamana kadarki son sınıfımda, neredeyse tüm akademi müfredatlarını değiştirmek için hızla ilerliyordu. Sadece üniversitemde değil her yerde. Gerçekten bu kadar hızlıydı. İkinci giriş kursumuz Pascal idi ve bu bir yıldan kısa bir süre içinde hızlı bir şekilde Java'ya dönüştürüldü. Neden bu kadar hızlı dönüştüler? İki büyük sebep.
Bir akademisyen teori ve algoritmaları öğretmek istiyor. Çalıştırmak için çok fazla deneyime ihtiyaç duymayan algoritmaları öğrenmenizi kolaylaştıran diller en iyisidir: Şema, Python, Java, Smalltalk, vb. O zamanlar betik dilleri ikinci sınıf vatandaşlardır, işverenler tarafından ucuz ya da hızlı ve kirli olarak kaşlarını çattılar. Akademisyenler, onları daha çok kopya kedi olarak görüyordu, ancak işverenlerin istediği şey akademisyenlerle de birlikte hareket ediyor.
Bu bizi bir sonraki nedene getiriyor. İşverenler belli bir dil tecrübesi istiyorlar ve o zamanlar C / C ++ idi. Ancak, C / C ++ öğrenmek için çok fazla tecrübe alır ve dikkat dağıtıcı olan bir çok köşe durumu vardır. C / C ++ derslerini aldık ancak daha düşük seviyelerde değil. O zamanlar işverenler CS programlarına kızdılar çünkü öğrenciler C / C ++ guruları olmadılar.
Java, neredeyse akademi kadar hızlı bir şekilde endüstriyi taradı. Sonunda akademi istediklerini elde ediyordu. Öğrenmesi kolay olan üst düzey bir dil ve bir dil işvereninin aranması. Her şey çok mükemmeldi. Ben gittikten 3 yıl sonra arkadaşıma akademi'ye geri döndüm ve her CS dersinde bir Java kitabı bulabileceğini söyledi. Java, akademi'yi bu kadar hızlı aldı.
Şahsen, Java’nın CS’yi bırakmadığını düşünüyorum, çünkü öğrenciler CS’i okuyabilir, Açık Kaynak’a katılabilir ve okuldayken bile iş bulabilirler. Hala CS öğrencisi olarak birçok dil öğrenmelisin ve bu sadece Java olmamalı. Ancak, eğer hepsi python kullandıysa, Joel de pythondan nefret ederdi.
Bunun da dahil birkaç nedeni var:
Aynı nedenden dolayı C # öğreten çok sayıda okul olduğunu unutmayın. Bazılarının bireysel okula özgü olmasının çok daha fazla nedeni var. Temelde Java, geçmişe ait nesneye yönelik "TEMEL" olmuştur.
*sözdizimine sahip olmayabilir , ancak temel bir işaretçi anlayışı olmadan kullanımı çok zor olurdu .
Joel Spolsky'nin The Perils Of Java Schools başlıklı yayınını beğendim . Bence Berin Loristch bu dersi basitleştirmekte haklı ve aynı zamanda gerçek dünyaya da uygulanabilir.
Aşağıdakilerin birçok kez söylediklerini duydum: "Bilgisayar Bilimi derecesi programlama öğrenmek için bir derece değil, teoriyi öğrenmek için". Dilin, mutlaka teori öğrenilebildiği sürece (buna engel olmamasına rağmen) önemli olması gerekmez. Java, alması nispeten kolay bir dildir ve her şeyin arkasındaki teoriyi öğrenmek için daha fazla zaman harcanmasını sağlar. Bu, MIT’in Şema’yı kullanmasının sebeplerinden biridir (bu yüzden duydum).
Yukarıda verilen cevapların çoğu iyi cevaplardır, ancak bir şeyi dışarıda bırakırlar.
Java çok platformlu bir dildir. Bir öğrenci Mac, diğeri PC, diğeri ise öğrenci Unix hesabını kullanabilir. Aynı kod aynı şeyi yapacaktır. Hem öğretmenin hem de okulun BT departmanının desteklemesinin ne kadar kolay olduğunu düşünün.
Java ortaya çıktığında asıl önemi buydu. Şaka, "Kod bir kez, her yerde hata ayıklama" idi, ancak gerçekten donanım ve işletim sistemlerini denklemden çıkardı.
Profesörlerin Java'yı öğretmek için kullandıklarını söylediklerini duydum çünkü
Şahsen ben öğretmek için Scheme kullandıkları zaman Berkeley’de CS aldığım için mutluyum. Bir dilin ne kadar zarif olduğunu fark etmeme rağmen, birkaç yıl sonraya kadar.
Küçük bir arka plan
Okulumuzda sunulan tek Java sınıfını aldım. Bu, 90'lı yılların başında, 2000'lerin başındaydı. Java büyüyordu, ancak neredeyse kalkmıyordu. C'deki bir çok gelişmeden gelince, Java'nın çalışmaya başlaması için gereken tüm kod kodunda biraz hayal kırıklığına uğradım. Görevime odaklanamadım. "Open" ile bir dosyayı açamadım. Sınıfı ve ardından ithalatları vb.
Bilgisayar mühendisliği yaptım, bu yüzden önce montaj programlamasına sonra da C ve sonra C ++, Scheme ve o bir Java kursu aldım. Çoğunlukla C odaklı bir okul programıydı. Algoritmalar sınıfı C kullanılarak öğretildi.
Endüstriye girdiğimde Java açıkça baskın oyuncuydu. Belki de arka uç COBOL sistemlerinden Java web iş uygulamalarına dönüşüm sırasında tek oyuncuydu. Java, iş dünyasında 2000 gün başlarında büyük adımlar attı.
Aynı zamanda, Java çerçevelerinin tümünü bilmiyordum ama nasıl Java ortamına kodlanacağını ve uyarlanacağını biliyordum. İyi Java kodlama standartları hakkında eğitim kursları alsaydım, muhtemelen daha iyi Java stili ya da Java ekosistemi bilgisiyle başlayabilirdim.
Geçmişe bakıldığında, bunun önemli olduğunu sanmıyorum.
Sorunuzu cevaplamak için: Neden üniversitede Java okuyoruz?
Java öğretilmeli ancak tüm derslerde kullanılmamalıdır:
Bilgisayar bilimi öğreniyorsanız, Java'yı üniversitedeki bir noktada öğrenmelisiniz. İş dünyasında popüler. Java ve belki de C # öğrenmelisin. ABSOLUTELY, Java'ya giriş programlama dersi olarak ders vermezdim. Ve Java kesinlikle tüm derslerde kullanılan ana dil olmamalıdır.
Java eleştirisinde:
Java çok fazla eleştiri alır ve her zaman vardır. "Java, Enterprise için hazır mı?" Java platformu hala yaygın olarak kullanılan bir platformdur. Ancak, çoğu genel programlama görevi için Java iyi çalışıyor. Ve Java ile ilgili herhangi bir önemli sorun yoktur. Yeteneğini incitmez. Altında ne olup bittiğini öğrenmeden Java kütüphanelerine güveniyorsanız olabilir. Ancak Java, herhangi bir beyin hasarına neden olmaz (bazı geliştiriciler bunun gerçekten doğru olduğuna inanır).
Ayrıca, geliştiriciler neden C veya C ++ 'ya saldırmıyor? Veya en azından C ++. Zorunlu programlama paradigmaları çok benzer. Ve ben C ++ ile bir webapp yazmayı düşünmezdim ama Java ile yapabilirim.
İşte nasıl bir müfredat kurarım:
Müfredatımda listelediğim diller oldukça yaygın. Pek çok okul, pek çok dili sorunsuzca öğretiyor. Endüstride birçok farklı programlama dili kullanacaksınız. Duymadığınız dilleri kullanacaksınız.
Okullardaki Java konusu, sizi tamamen Java'dan korumak istemedikleri veya SADECE Java'yı öğretmek istemedikleri sürece bir sorun değildir. Her iki durumda da okullar haksız.
(Üzgünüm Ruby Lang)
Üzgünüm, sadece uzun sıkıcı cevap:
(1) Bunu mu demek istediniz:
“Neden Java'yı üniversitede ilk programlama dili olarak okuyoruz?”
(2) Yoksa:
“Neden Java'yı başka programlama dilleri öğrensek bile, Java'dan önce üniversitede okuyoruz?”
Her iki soruyu da kastediyor gibisin.
(1) durumunda:
Java'nın (veya .NET C # ve Visual Basic'in) ilk programlama dili olarak öğretilmesi gerektiğini düşünmüyorum. Yapısal ve Modüler Pascal, eski ve modası geçmiş olsa bile ilk olmalıdır.
Pek çok insan, "Hype" veya "trend" olduğu için, insanlara anında Nesne Yönelimli programlama veya İşlevsel programlama öğretmemiz gerektiğini düşünüyor.
Structured Pascal'ı benzer bir şey değil, "Object Oriented Programming" in küçük bir sürümü olarak öğrendim. Yapısal bir programı tek bir küçük nesne olarak görüyorum.
Bundan sonra, İşlevsel diller ve Nesne Pascal'a devam etmeyi öneririm.
Ve sonra, C, C ++, C #, VB.Net, Java.
Java veya C # 'ı ilk programlama dili olarak sevmememin temel nedenleri, "işaretçiler", "nesnelere işaretçiler" ve "nesnelerin" kendileri ("referanslar") kavramlarını karıştırmalarıdır.
Öğrencilerin bu kavramlar arasındaki farklılıkları ve benzerlikleri göz önünde bulundurmaları gerektiğine inanıyorum. Java'daki Strings nesnelerinin karşılaştırılması bu tuhaflığa iyi bir örnektir:
String A = "Mars";
String A = "Venus";
// pointer comparison or object comparison ???
if (A == B)
{
DoSomething();
}
(2) durumunda:
Bence Java ya da C # okulda öğretilmelidir, çünkü çeşitli güncellenmiş iyi özelliklere sahipler ve aynı zamanda gerçek dünya kullanımları var.
Bilgisayar bilimi öğreniyorsanız, Java'yı üniversitedeki bir noktada öğrenmelisiniz. İş dünyasında popüler. Java ve belki de C # öğrenmelisin. ABSOLUTELY, Java'ya giriş programlama dersi olarak ders vermezdim. Ve Java kesinlikle tüm derslerde kullanılan ana dil olmamalıdır.
Daha fazla katılmıyorum. Java, üniversitemde, okulumdaki CS&E programına girmek için almanız gereken bir dildi. Java'nın öğretilmesi son derece kolaydır. Çünkü kendinizi “programcı olmayanların” öğrenebileceği bazı kavramlarla sınırlayabilirsiniz.
Ayrıca, KESİNLİKLE Java'yı bir giriş programlama kursu olarak öğretmek isteyip istemediğinizi de söyleyemem. Temel olarak, kesinlikle öğretmeyeceğinizi söyleyemeyeceğinizi mi söylediniz ?
Basit sebep zaten açıklanmıştır. Java'nın lisans ücreti yoktur. Temel bir test editörü kullanarak bunu öğretebilirsiniz. Kesinlikle yanlış sebeplerden dolayı kullanılır.
Bir önceki cevaba katılmıyorum, Java'nın öğrencileri "alçakgönüllü" olarak geçirmesini sağlamadı, gerçekten C ++ 'da diziler ve listeler gibi basit kavramlarla ilgili problemleri olduğunda gerçekten gösteriyor.
Dan anahtarı C için Java meydana geldi yanlış zamanda .
2000 civarında bir yerlerde. Üniversitemdeki son C sınıfındaydım .
C ++ acemiyi karıştırmamak için çok fazla özelliğe sahipti . (Ve hala var. Ve bazı eklemeyi planlıyor.)
.NET yeterince olgun değildi ve bugünden daha pahalıydı.
Amaç C eskiydi ve Apple'ın kullanımı radarın altında uçuyordu ( çevresinde iPhone yoktu )
Buradaki cevapları eklemeye mecbur olduğumu hissediyorum çünkü bu cevapların hiçbirini aslında bakış açımla örtüşmüyor.
Ben hobi programcısıyım. “Bilgisayarlar” ve “programlama” söz konusu olduğunda eğrinin çok ilerisindeydim. Lisans - Lisans - 2007 ve Yüksek Lisans derecelerini iki sene sonra tamamladım - 2009. Meclis, QuickBASIC, C, C ++, Java, PHP, Perl, Python, BASH Scriptleri, Javascript, COBOL vb. Dillerin bolluğu ile çalıştım. .
Öğrencilere programlama öğretmek için kullanılan IMHO, şu an içinde yaşadığımız zamanların bir göstergesidir. Örneğin, 1980'lerde, C yüksek seviyeli bir dil olarak kabul edilirken, Meclis, düşük seviye bir dildi.
1990'lı yıllarda C ++, Java, Perl ve bu tür diller önem kazandı; çünkü C'den çok daha yüksek seviyeli ve hızlı gelişim ilkelerini içeriyordu. Böylece, Meclis'e CS öğrencilerine öğretmeyi bıraktılar ve C'ye algoritmaları ifade etmenin bir yolu olarak öğrettiler. Yavaş yavaş bu, C'nin algoritmaların özünü etkili ve çok fazla 'sistem' bilgisi olmadan yakalayamayacak kadar düşük seviyeli bir dil olarak kabul edildiği son yıllarda değişmiştir. CS müfredatının odağının pratikten daha “teorik” olması gerektiği ve bir algoritma yazmak istediği her seferinde, bellek tahsisleri ve işaretçi aritmetiği ile boğuşursa, o zaman elde edemeyeceğiniz için bu gerçekten çok önemlidir. herhangi bir yer.
Bugün bir Masters CS programında olsanız bile, öğrencilerin sistem düzeyinde uygulamaları programlayabilmeleri için gereken belirli 'Sistemler' gereksinimlerini (ABD'de en az ve bu ABD üniversiteleri için çok farklı olmamalıdır) yerine getirmeniz gerekir. Bazı durumlarda çekirdek seviyesi kadar derin olan haberi, gerçekte gereklilikleri geçmek için hacklemek. Bu nedenle, C okullarda öğretilen defacto dili olmasa da , sözde Sistemler veya Yüksek Performanslı Bilgi İşlem veya bu gibi alanlarda uzmanlaşmak isteyebilirsiniz.
Başka bir noktadan da bahsetmek isterim ki, Java gibi diller bu tür kısıtlamalar konusunda biraz rahatlarken, C'nin işleri düzeltmek için çok fazla disiplin gerektirdiğidir. Bu, RA / TA'ların bir öğrencinin programında hata ayıklamak için GDB'yi başlatmalarını gerektirmeden kurslar düzenlemeyi kolaylaştırır :)
Sanırım bunun büyük bir kısmı sektörde kullanılan şey.
CS programımın yerel teknoloji ve havacılık şirketlerinden kıdemli çalışanlardan oluşan bir Endüstriyel Danışma Kurulu vardı ve müfredata çok fazla katkı sağladı. Giriş sınıfındaki CS sınıfları Pascal'ı, başladığım yıl (1986), büyük ölçüde IAB'nin emriyle C'nin lehine düşürdü. Benzer şekilde, yerel havacılık şirketleri DoD çalışması için kullanmak zorunda kaldıklarından, bazı üst düzey kurslarda Ada'ya öğretme yönünde bir baskı vardı.
Java'nın şimdi her yerde, özellikle de Android cihazların çıkardığı her yerde. Didaktik bir bakış açısıyla berbat, ama sonra C de.
Çünkü daha az öğrencinin kendi içinde başarısız olan dersten başarısız olacağını ümit ediyorlar, IMHO. Belki de neredeyse hiç kimsenin Üniversite derecelerini ciddiye almamasının nedenlerinden biri, en azından burada.
Java, bir dil için çok basittir ve PC sınırlı kaynaklar paradigması olduğunu öğretmez. Aynı zamanda “başka bir soyutlama katmanı ile çözülemeyen hiçbir şey yoktur” düşüncesi içine zorlar.
Evet, OOP konseptleri ve oyuncak problemleri için iyidir, fakat problemlere yanlış açıdan yaklaşmayı öğretir. Burada düzgün bir yapı kullanın, gerisini sıkın.
Ancak akademi AI, OWL ve diğer oyuncak teknolojileri hakkında rüya gördüğüyle bilinir. Bu tür şeyleri araştırmaya devam ederken, bazen birileri de orada şaşırtıcı bir şeyler icat eder, ancak iyi bir geliştirici olmak istiyorsanız, bunu bağımsız olarak öğrenmelisiniz.