Haskell matematiğin temellerini öğretmede iyi midir?


19

AS ve A seviye Matematik spesifikasyonu gibi derslere matematik öğretimi yapıyorum.

Sınıf kitapları normal olarak matematik görevlerine uygulanan bilgisayar yazılımı örnekleri sağlar, ancak normal olarak mathlab, mathematica veya türet gibi yazılım uygulamalarına dayanır.

Bir bile gerçek programlama dili kullanılır, normalde Pascal gibi eski fashoned dildir. Bence bu çok üzücü.

Çünkü, Haskell matematikle olan hissi ile ünlüdür ve ben de onunla ilgileniyorum, Haskell'in ilk sınıf üniversite sınıfı öğrencileri için uzatma egzersiz yöntemi olarak iyi bir seçim olup olmadığını sormak istiyorum. Tipik özneler fonksiyonlar, caclulus, limitler, fakat aynı zamanda örneğin lineer cebirdir.

Programlamada orta düzeyde bilgi deneyimim var (c #, ruby, powershell, javascript, tex) ve ayrıca XSLT ile fonksiyonel programlamaya zaten yaklaştım.

Yanıtlar sorumlu bir şekilde kaldırılacaktır. Matematiğe uygulanan lineer cebir (örn. Vektörel uzay), polinomlar, lineer denklemlerin çözülmesi gibi bazı temel Haskell kod örneklerini içeren ayrıntılı cevaplar, aranan olarak çok takdir edilir ve hedeflenir.



@larsmans: teşekkürler. Bu gerçekten iyi bir başlangıç ​​noktası; Ayrıca farklılaşma, limitler, integraller gibi daha pratik matematikle ilgileniyorum.
Emiliano Poggi

Mathematica'nın gerçek bir programlama dili olmadığını göremiyorum . Matematik problemlerim olduğunda ilk önce bunu (oktav) kullanıyorum ve sonra başka bir dile çeviriyorum. Eğer odak matematik üzerindeyse, o zaman özel bir matematik dilinin uygun olmasının bir sebebini göremiyorum.
edA-qa mort-ora-y

@edA: Mathematica! = Oktav! Octave bir Matlab klonudur. Her ikisini de kullanan insanlar bana Matlab / Octave'nin sayısallara (büyük diziler, FFT'ler vb.) Daha çok yönelik olduğunu, Mathematica ise sembolik manipülasyon için daha iyi olduğunu söylüyor. Mathematica'ya en yakın FOSS muhtemelen Maxima'dır (eski adıyla Macsyma).
timday

@timday, yes, Octave! = Mathematica'yı biliyorum, ama kod dili aynı. Maxima'yı sembolik manipülasyon için de kullanıyorum.
edA-qa mort-ora-y

Yanıtlar:


9

Haskell matematikçiler arasında popülerlik kazanıyor. Bir blog yazarının belirttiği gibi:

"Kendimi konuya dahil ettikten sonra, göze çarpan bir şey, sıradan günlük matematik söylemimle ifade edilen düşünce ile Haskell kodunda ifade edilen düşünce arasındaki nispeten düşük mesafedir."

İşte topladığımız bazı görüşler, bu yaklaşımı alarak çok yanlış gidemeyeceğinizi söylüyor.

resim açıklamasını buraya girin

resim açıklamasını buraya girin

En sonunda,


1
Bağlantılarınızdan bazılarını okuduktan sonra, çok ikna olduğumu söyleyemem. Haskell oturumu için oturan ve Mathematica / Maxima gibi çalıştıran birine gerçekten örnek var mı? Ayrıca, "11 neden" blogu, bir matematikçinin bakış açısından standart kütüphanenin ne kadar karışıklık olduğuna dikkat çekiyor ve matematik paketleri listesine baktığımda çok fazla sayısal (örn. Blas, fft) görüyorum ama çok fazla sembolik manipülasyon yolu / CAS. Bunu söyledikten sonra ... her iki kitap da gerçekten ilginç görünüyor!
timday

Evet, gerçek matematiğin bazı örnekleri harika olurdu (lin. Cebir matrisi ilaveleri gibi ...) Bahse girerim op-aşırı yükleme bile yok ...
Andriy Drozdyuk

@drozzy: tabii ki tip sınıfları aracılığıyla operatör aşırı yüklenmesi var.
nomen

4

Ben Haskell'in matematik öğretimi için büyük bir hayranıyım, ancak AS / A düzeyindeki tüm konular için uygun olmayabilir.

Bir fonksiyon fikrini öğretmekte sorun yaşamazsınız ve Haskell'de lineer cebir güzel olabilir. Dizilerin yerinde güncellenmesi ile doğrusal cebir genellikle çok zorunlu bir şekilde öğretilir. Hepsi Haskell'e çevrilebilir, ancak biraz farklı düşünmek gerekebilir.

Ancak sınırlar ve hesap hakkında konuşmak istediğinizde zorlaşır. Haskell'de geleneksel olmayan bir yaklaşımla matematikte büyük başarı elde ettim. Ancak sabit bir müfredata ders verirken bu iyi bir fikir olmayabilir. Alternatif olarak sembolik farklılaşma ile oynayabilirsiniz, ancak A / AS seviyesi için zor olabilecek ifadeler için veri türleri oluşturmaya başlayacaksınız. Başlamak için çok fazla kod değil, sadece birkaç satır var, ancak öğrenciler için korkutucu olabilir. Derive ve Mathematica'dan farklı olarak, ücretsiz olarak sembolik ifadeler almazsınız.

Temel birleştiricilerin Liste monad ile keşfedilmesi kolaydır. Bu olasılık teorisini öğretmek için yararlı olabilir.

Haskell, A / AS düzeyinde görünebilecek türden sayısal uygulamalar için uygundur, örn. Simpson kuralı uygulamak veya örnek araç ve varyansları araştırmak.

Temel grup teorisi yapıyor musunuz? Bu kodlamak ve Haskell ile oynamak kolaydır.

Genel olarak, sınırlar konusunda dikkatli olursanız, Haskell ile A / AS düzeyinde matematiğin çoğunun basit olmasından şüpheleniyorum.


2

Haskell'in iyi bir seçim olup olmadığından emin değilim. Tabii, çok "matematiksel bir duygu" vardır, sonsuz yapılar vb. İle ilgilenir. Ancak bu özellikleri ancak dili zaten biliyorsanız takdir edebilirsiniz . Matematiği öğrenmek için Haskell'i öğrenmek zor bir görevi diğerinin üzerine yerleştirir. Ve öğrenme Haskell olduğunu zaten programlama bilmek bile, sert. Bu gerçekten izleyicilerin yeterince parlak ve meraklı olup olmadıklarına bağlıdır, aksi takdirde matematik yüzünden yarısını, Haskell nedeniyle yarısını kaybedersiniz.


Arkasındaki matematiği zaten biliyorsanız, Haskell'i öğrenmek kolaydır. Çok kolay.
nomen

@nomen olabilir, ama soru bu değildi.
Landei

Programlama geçmişi olan birine öğrenmek zor olmanın onu diskalifiye etmediğini söylüyorum.
nomen

1

Hiçbir bilgisayar dili size matematik öğretmez. Size sadece matematik öğretecektir. Yani: kalem ve kağıt yaklaşımı (veya tebeşir ve yazı tahtası), aksiyomlar, teoremler ve kanıtlar. Bu matematik. Dil ne kadar seksi olursa olsun, içinde yazılmış bir program matematik değil, sadece bir matematik uygulamasıdır. Bir şeyi uygulamak için önce onu öğrenmeniz gerekir.


1
Kimsenin bir programlama dilinin tam anlamıyla matematik öğretmesini beklediğini düşünmüyorum ve asıl sorunun bir programlama dilinin tam anlamıyla matematik öğretmesini istediğini düşünmüyorum. Matematik öğretimine yardımcı olmak için bazı alıştırmalarda kullanılabilecek bir şey istiyorlar.
user27539

Tebeşir, yazı tahtası ...
quant_dev

Katılmıyorum. Bir dil sadece bir ifade aracıdır. Tebeşir, kalem, bilgisayar: sadece matematiksel somut olarak ifade etmek için kullanılan araçlar. Diller sadece matematiği soyut olarak ifade eden araçlardır. Haskell-Curry İzomorfizm teoremini karşılaştırın (bir program yapıcı bir mantık için bir kanıttır )
nomen
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.