Neden c ailesi LISP ailesi yerine Matematik / CS programları için standart CS çalışma alayıdır? [kapalı]


14

Kendimi geliştirme amacıyla kendimi LISP ile tanıştırıyorum. Fark ettiğim şeylerden biri, LISP'nin Matematik paradigması içinde C'den çok daha fazla olmasıdır. Sözdizimi ve tasarım yapısı, bir algoritmanın gerçek matematiksel modelini doğrudan yansıtıyor gibi görünüyor. İyi matematik tabanlı CS programlarının bile neden LISP yerine C çalıştığını anlamıyorum. LISP'nin C'den daha yüksek matematiksel kavramları daha doğrudan kullandığını düşünüyorum. C'deki matematiksel yapıları modelleyemeyeceğinizi söylemiyorum. Sadece LISP'nin matematikçiler için kablolu olduğunu görüyorum.

Joel Spolsky'nin JAVA okullarındaki birçok bölümünü okudum ve neyi değerlendiremiyorum - ve onun değerlendirmesine katılıyorum - ama okulum bu nedenle JAVA'yı öğretmedi. İşaretçiler, algoritma tasarımı, özyineleme ve hatta montaj talimatları gibi temel kavramları öğretmede sıkıydılar. Ancak, bunu C ve c ++ ile yaptılar. Bunun nedenini ve / veya tarihini bilen var mı?


Günün sonunda bir bilgisayar bilimleri derecesi bir dereceye kadar dil bilincine sahip olmamalıdır. CS fikri, bilgisayar bilimi teorik olduğu için yeni bir dil öğrenebilmesidir. Dışında CS her şey dahil gibi görünüyor nasıl bir programcı ve bilim adamı olmayı öğretmek. Durum böyle değil, CS'nin nasıl bir dil öğrenileceğini öğrenmek.
Chris

2
Aynı şekilde LISP "bir algoritmanın gerçek matematiksel modelini yansıtır", C donanımın gerçek yapısını yansıtır ve C'deki yapıların belleğe nasıl eşleştirildiği açıktır (doğal olarak özellikle gömülü sistemler için yararlıdır). Ancak, sana tamamen katılıyorum. LISP'de daha fazla lisans dersini takdir ederdim, böylece daha da derinlemesine dalabilirdim
Bill VB

Yanıtlar:


13

TAMAM. Bu nedenle, sıkıcı cevap, sonunda, çoğu okulun profesörlerin neyi rahat ettiğini öğrettiği ve çoğu profesörün Lisp'i hacklemediğini; ilk yıllarını alanda Algol tabanlı dillerle geçirdiler. Bu nedenle, yıllar sonra, müfredat oluşturduklarında, CS'ye Pascal'da, sonra C'de, sonra C ++ ve sonra Java'da bir vakıf öğreten okullarla uğraşıyorsunuz.

Sonra kademe daha düşük ve birkaç yaş daha genç olan okullarınız var. Ve yol gösteren okulların belirlediği bara bakarlar ve öğrencilerin C'yi bilerek bu okullardan ayrıldıklarını görürler ve kendi öğrencilerinin de aynı şeyi beklediklerini görürler - bu yüzden C, sonra C ++, Java.

Son olarak, öğrencilerin özgeçmişlerinde istedikleri anahtar kelimelerle eşleşen herhangi bir teknoloji setini öğreten teknik veya 'alt uç' kurumlardan bazılarına sahipsiniz - bu yüzden hemen hemen Java elde edersiniz.

Varlık dedi ki, bazı okullar yapmak oldukça temel bir dilden daha seçmeli olabilir rağmen, öğretme Lisp'i. Ve Lisp'i bağımsız bir dil olarak öğretmeyen okullar bile, AI derslerinde yaygın olarak kullanır, bu nedenle yeni başlayan AI dersleri Lisp programlamaya başlarken yoğunlaşır.


2
Seni duyuyorum. C ve c ++ 'a saygısızlık yok, bunlar benim kariyerimin tamamı olarak benim tercih ettiğim dillerdi, ancak LISP matematik öğrencileri için C'den çok daha iyi bir öğretim aracı olurdu. C harika bir dildir ve elbette asla birini işe almam bilmiyordu, ancak CS derecesinin amacı teknik alan eğitimi değil, Matematik ve Bilgisayar Bilimleri kavramlarına hakim olmaktır. LISP bu amaç için çok daha uygun görünüyor.
Jonathan Henson

Bence her ikisinin de yeri var ve üniversiteler zihninizi genişlettiğiniz bir CS derecesine daha teorik / akademik bir yoldan faydalanabilir. Bu parça, Lisp, Prolog, Algol tabanlı vb.Dahil olmak üzere güzel bir dil aralığına sahip olmalı Ve günün pratik lezzeti ne olursa olsun yoğunlaşarak uygulama tabanlı bir parça.
Andrey Butov

@Jonathan Henson: Yerine gelin!
Chris

9

Bu gerçekten üniversiteye bağlı. Şema (bir lisp lehçesi), son zamanlarda python ile değiştirilmesine rağmen, MIT'de bilgisayar bilimlerinde giriş dersinin dili olmuştur. Lisansımı CS'de bir mühendislik okulunda aldım. İlk yılımda C, Scheme, Prolog ve C ++ 'a maruz kaldım. Bence bu iyi bir karışımdı.

Beyniniz dünyaya bakmanın tek bir yoluna girmeden önce hangi dilde başladığınız dilin çok sayıda paradigmaya maruz kalmaktan çok daha az önemli olduğuna inanıyorum.


1

Temel olarak, bilgisayar bilimi teorisi matematikseldir. Ancak yazılım mühendisliği değildir. Matematiksel kavramların doğrudan modellenmesi doğal bir avantaj değildir - genellikle dezavantaj olabileceğini savunuyorum.

İyi teoriler ve iyi programlar ille de ilişkili olmayabilir.


"İyi teoriler ve iyi programlar ille de ilintili olmak zorunda değildir.": Programlama problemleri çözen soyutlamalar oluşturmak ve birleştirmektir. Ve Wikipedia'ya göre, "Teori ... soyut ya da genelleştirici bir düşünce türü ya da bu düşüncenin sonuçlarıdır." ( en.wikipedia.org/wiki/Theory ) Yani teori ve (iyi) programlama gerçekten birbirine çok yakın.
Giorgio
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.