Her yıl yeni bir programlama dili öğrenilecekse, liste ne olmalı? [kapalı]


19

Bölüm birinde "Pragmatik Programcı" ilk öğrenme hedeftir:

Her yıl en az bir yeni dil öğrenin. Farklı diller aynı sorunları farklı şekillerde çözer. Birkaç farklı yaklaşım öğrenerek, düşüncelerinizi genişletmenize ve bir avcıya yakalanmadan kaçınmanıza yardımcı olabilirsiniz. [...]

Bunu bir kariyer boyunca başarmak için, dil listesi oldukça uzayacaktır (özellikle yönetime "ilerlemek" istemiyorsanız). Açıkçası bir programcının (veya herhangi bir formun) eğitimi, ticari olarak yararlı dillerin (iş ilanından genel liste: C, C ++, Ruby, Python, JavaScript, C #, Java, VB, vb.) .). Ek olarak, resmi veya gayri resmi bir öğrenme programının işlevsel yaklaşımları içermesi muhtemeldir (Haskell, LISP veya ML'den türetilen bir dil aracılığıyla)

Ancak bu listenin makul bir alt kümesi öğrenildikten sonra - sırada ne var ve neden ?


3
Gelen bu cevap senin yeteneklerini genişletmek için çalışılan olabilir dil paradigmaların listelenmektedir. Tüm bu paradigmaları öğrenmeye çalışarak başladım (dillere odaklanmak yerine), bu yüzden mevcut dilinizin kullandığı tüm işaretleri işaretleyin, sonra alışık olduğunuzdan çok farklı dilleri seçin. C # 'da Java ile başlamanın fazla bir anlamı yok, başlangıçta daha fazla çeşitlendirmeye çalışın. Tüm temel türleri kapsadıktan sonra, diğer ortak dilleri seçebilirsiniz.
Simon P Stevens

@Simon: Bunu neden burada cevaplamıyorsun?
Richard

1
Java'dan C # 'a giden çok şey öğreneceksiniz, ancak başka bir yoldan gitmeyeceksiniz
Casebash

@Richard. Bunun tam bir cevabı haklı bulduğunu sanmıyordum, sadece başka bir yerde yazdığım alakalı bir şeyden bahsediyorum.
Simon P Stevens

1
Yılda bir dil öğrenen çoğu kişi, birkaç yıl boyunca birkaç kişiye odaklanana kadar "tüm esnafların krikosu ama hiçbirinin ustası" olacaktır. Çok tecrübeye dayanarak, 'tam yığın' programcı kavramının geliştiricilerin% 1 -% 5'i dışında yanlış olduğuna inanıyorum. Tanıdığım çoğu sert çekirdekli arka plan arkadaşının harika ön uç becerileri yok ve tam tersi.
Junky

Yanıtlar:


19

İlgi çekici hale getirin ve her yıl, hiç programlama dili kullanmadığınız bir alanı dolduran kendi programlama diliniz için bir tercüman veya derleyici yazarak geçirin. Her yıl, bir önceki derleyiciye yazdığınız dili kullanarak bir sonraki derleyicinizi / tercümanınızı yazın.


7
İmzanı alabilir miyim lütfen? :-)
Christian Davén

1
+1 Muhtemelen esprili bir şekilde ifade edilmiş olsa bile mükemmel cevap.
Joe D

1
@Joe D Tamamen mizahi bir şekilde değil. Bunu yapabilirseniz, tüm nişlere hakim oldunuz.
alternatif

Tamamen mizahi bir şekilde anlamadığı için -1. (yeterince yarı
yarıya bırakılmış

2
@ZJR Yani% 99 Mizahi,% 1 Mizahi olmayan kötü mü? Hadi. Ayrıca, neden bir yoruma göre cevabı küçümsüyorsunuz?
alternatif

13

"Marjinal alaka düzeyini" en üst düzeye çıkarmalısınız, yani her zaman henüz güçlü olmadığınız yeni alanlara girmelisiniz. Hem programlama dillerini hem de kavramları değiştirin . Nesne yönelimli bir dil bilmiyorsanız, Java'yı ve Hazırda Bekleme gibi bazı yüksek soyutlama çerçevelerini deneyin. Daha sonra Python veya Perl gibi bir komut dilinde bazı sistem yönetim öğelerini yazın. Ardından, yüksek performanslı çok iş parçacıklı sunucu kodu yazarak C veya C ++ 'da bazı düşük seviyeli becerileri alın. Fonksiyonel programlamayı bilmiyorsanız, Haskell'i Peg Solitaire , vb. olarak nesne yeteneği güvenliği ,Prolog veya VHDL .

Bu arada iyi egzersiz! Bu, platforma özgü çok az tekniğe güvenmek yerine, yanal düşünmeyi ve sorunları dile agnostik terimlerle öngörmeyi öğretecektir. Örneğin, C ++ ve Python arasındaki sanal yöntem dağıtımındaki benzerlik ve farklılıklarda ustalaştığınızda, hemen hemen diğer herhangi bir dil için "hemen" alacaksınız.


9

Programlama hakkında düşünme şeklinizi etkilemeyen bir dil, bilmeye değmez. - Alan Perlis

Diğer cevapların bazıları üzerinde durulduğu gibi, yılda bir yeni dil öğreniyorsanız, neden? bir programcı olarak yeteneklerinizi geliştirmektir. Nasıl? zaten bildiğiniz dillerin dilinden farklı paradigmalara sahip dilleri öğrenmektir ve zaten bildiğiniz paradigmaların stoklarını alarak bir sonraki öğrenilecek dili belirler.

Bu paradigmalar nedir? İleri Kitap Kavramları, Teknikleri ve Bilgisayar Programlama Modelleri grafik harita ile mükemmel bir genel bakış sağlar .

Bu nedenle, sadece C benzeri zorunlu dilleri biliyorsanız, Şema / Lisp öğrenmek son derece yararlıdır. Zaten zorunlu ve fonksiyonel dilleri biliyorsanız, Prolog öğrenmek faydalı olacaktır, vb.

Çok sayıda dil ve paradigma öğretmeye çalışan yeni bir kitap, Yedi Haftada Yedi Dil'dir . Tabii ki, bir haftalık eğitimden sonra her dilde akıcı olmayacaksınız, ancak yaklaşılabilir, pratisyen odaklı çok paradigma perspektifi sağlıyor gibi görünüyor.

Başka bir paradigma yaptığınızda, bu gerçekten bir Zen anıdır; zorunluluktan işlevsel programlamaya geçmek, bilgisayar dünyasını tamamen yeni bir ışıkta görmemi sağladı. Mutlu öğrenme!


Ve bir dil, düşüncelerinizi ifade etmenize izin verdiği şeyle değil, sizi ifade etmeye zorladığı şeyle daha fazla etkiler.
Florian F

9

C - temel olarak, "her şeyin altında yatan", sistem programlama dili

Lisp (Şema) - büyük bilgisayar korsanlarının havayı tanımladığını düşündüğü garip ama inanılmaz derecede güçlü ur dili

Smalltalk - çünkü OO olması gereken buydu

Aktörleri anlamak için Erlang (veya başka bir Aktör dili)

Haskell - Monadları anlamak

Javascript - çünkü her yerde ve tarayıcı komut dosyası oluşturmak için gerekli

Python / Ruby / Perl'den biri (ama hangisinin önemli olduğu önemli değil) - bu yüzden iyi kütüphane desteği ile popüler, modern, yüksek seviyeli bir komut dosyası dilinin nasıl hissettirdiğini biliyorsunuz

SQL - böylece ilişkisel veritabanlarıyla konuşabilirsiniz

Prolog - çünkü hala aklını uçurmalısın


2
Haskell'i öğrenmemizin nedeni, işlevsel bir dil öğrenmek istememdi (daha önce bildiğim tüm prosedürel olanların aksine) ve Haskell bana fonksiyonel diller için poster çocuğu gibi görünüyordu. Haskell'i şimdi sevmemin nedeni, üst düzey bir dil olması, iyi bir kütüphane desteğine sahip olması ve hızlı olması (C kadar yaklaşık% 50 kadar hızlı, ancak ne yaptığınıza bağlı). Ayrıca, bir sürü kod yazmayı severim ve hepsi birinci veya ikinci kez çalışır (derlemeye aldıktan sonra).
Joey Adams

Perl, Python veya Ruby öğrenmeniz kesinlikle önemlidir. Örnek olarak, Python'un Ruby'de bulunmayan liste anlaşmaları ve Ruby'nin Python'da bulunmayan modülleri vardır. Her iki şeyin sonuçlarını her iki dilde de çoğaltabilirsiniz, ancak ikisinden birini öğrenmek düşüncelerinizi çok farklı şekillerde etkileyecektir.
filosodad

1
Prolog - Çünkü hala aklını uçurmalısın
Zachary K

1
Bence haskell öğrenmenin ana yararı mutlaka monad soyutlamasını kavramak değil, GERÇEK güçlü ve güçlü bir tip sisteminin faydalarını öğrenmek. Eğer birinin "statik tip sistem" fikri Java gibi bir şeyse, haskell nefesinizi kesecektir.
sara

4
  • Go (eşzamanlılık ve çok geleneksel olmayan kavramlar için iyi destek sağlayan yeni sistem düzeyinde programlama dili)
  • Lua (komut dosyası dili basit, etkileyici, son derece esnek ve dengeli paradigmalar zorunlu, fonksiyonel ve meta programlama, OOP'ye izin verir)
  • D (C / C ++ doğru yapılmış)
  • Groovy (Java dünyasında ifade ve meta programlama)
  • Eiffel (Sözleşmeli Tasarım ve OOP'ye farklı bir yaklaşım)
  • Prolog (Mantık programlama dili)

1
Neden birisi bunları öğrenmeli? ( Neden ilginç biraz az gerçekten eşsiz programlama dilleri vardır, burada: Her paradigma defadan fazla uygulamaya konmuştur.)
Richard

D' nin C'nin doğru olduğunu düşündüğünüzü görmek ilginç . Şahsen C'yi kullandığımda, çoğunlukla herhangi bir OOP soyutlaması istemediğim düşük seviyeli şeyler için kullanıyorum.
Jonas

@Jonas: Doğru yapılması gereken basit bir dile ihtiyacımız var, ancak bu dil gelmiyor D sadece zorunlu bir şekilde güzelce kullanılabilir. Sizin için, D2 daha işlevseldir, tamamlandığında belki de zorunlu olarak bir dile paradigmanın en iyi uygulaması olacaktır.
Maniero

doğru yapmak özneldir. Benim için Erlang doğru yapılmış çok küçük ve basit bir dildir. Eksik kısım harika bir GUI çerçevesidir ve karmaşık sistemler yaparsanız, daha çok statik bir dil istersiniz.
Jonas

@Jonas: Erlang iyi bir dil ama C / C ++ doğru yapılmadı, tamamen farklı bir şey.
Maniero

2

1) Prolog: Şimdiye kadar kullandığınız tüm zorunlu dillerden tamamen farklıdır ve sorunlar hakkında düşünme şeklinizi değiştirecektir

2) Lisp: onsuz Vi da kullanıyor olabilirsiniz

3) Erlang: Yine, tamamen farklı, aynı zamanda oldukça şık görünüyor.

4) Turing Tarpit'ten bir şey (örneğin Brainfuck) ve muhtemelen bunun için bir derleyici veya yorumlayıcı yazın: Bunu yapmak için bir neden düşünemiyorum, ama iyi bir fikir gibi geliyor.


1
"onsuz Vi da kullanıyor olabilirsiniz". Kimse onu aldı :) şaşırttı
Gauthier

Vi kullanıyorum! (Şey gvim)
Zachary K

1

Listelediklerinizin yanı sıra,

Haskell, F #, Clojure, OCaml, Lua, Git, D, Erlang, Amaç C.


1

Her ne kadar yeni diller öğrenmenin iyi olduğunu kabul etsem de (ve uzun bir kariyeri boyunca zorunluyken), bence yılda bir ilk beş on yılı çok geçiyor. Görmeyi tercih ettiğim şey, bu düzeyde deneyime sahip bir kişinin zaten bildikleri diller hakkında yeni şeyler öğrenmesidir. Bir noktada bilginin derinliğinin yanı sıra derinliğe de ihtiyacınız var. Böylece 12 dilde bir If yapısı yazabilirsiniz. En az bir şeyle gerçekten ilgilenen ve uzmanlaşan birini görmeyi tercih ederim. Ve sonraki birkaç yıl başka bir konuda uzmanlaşacak. 30 yılı aşkın bir kariyer boyunca, bir çok şeyin sadece temel bilgilerini değil, bilginin derinliğine sahip olmasını istiyorum.

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.