En çok zihin bükme programlama dili? [kapalı]


45

Bir itibaren makul En kafa karıştıran olmak buluyorsunuz ortak programlama dili?

Pek çok programlama podcast'i dinliyor ve yaklaşmakta olan ve önemli olan bazı yeni dilleri öğrenmek için zaman ayırıyorum. Her zaman BrainFuck'tan bahsetmiyorum , ama ortak programlama paradigmalarına meydan okuyan hangi dil olduğunu düşünürsünüz?

Benim için , 1990'lı yıllarda bazı işlevsel ve mantıksal (örneğin, Prolog ) programlama yaptım, bu yüzden orada özel bir şey bulduğumu söyleyemem.

Bu konuda uzman olmaktan çok uzaktayım , ancak bugün bile benim için en çok düşünen programlama dili Perl . Değil çünkü "Merhaba Dünya" uygulamak zordur, ama daha ziyade zor çözümlerden bazıları öylesine şiirsel Kafamı boşaltmak için uzakta benim terminali dışarıdan yürümek zorunda olduğunu çürümüş olabilir o kadar çok sözcük esneklik vardır. Büyük olasılıkla ticari bir yazılım uygulaması satacağımı söylemiyorum, sadece Perl'nin bu kadar ünlü olmasının farklı bir nedeni var. Sadece kitapların temel listesine bakın.

Peki, daha iyi programlama ve uygulamalarınızı teşvik eden zihin bükme diliniz nedir?


Akılda kalıyor ve sadece buna bırakmıyor mu?

4
Beyaz alanın önemli olduğu herhangi bir dil!
mootinator

@ mootinator - Ama Python, metin editörünüz size acı vermeyeceği sürece birlikte çalışmak için gerçekten eğlenceli.
rjzii

1
@Thorbjorn Birisi INTERCAL ekleyecek mi? APL, bu büyük babaya kıyasla bir lise projesidir.
Mark C,

Perl en zor yerin yakınında değil. 12 yaşındayım ve Perl'i kolayca programlayabilirim.
Dinamik

Yanıtlar:


73

APL

Bu dil son derece güçlü ve çok veciz, bu olacak beyninizi zarar.

Başlangıç ​​olarak, kullandığı tüm belirsiz sembolleri göstermek için özel bir klavye veya en azından bir klavye kaplaması olmadan kullanmak zor.

APL Klavye

O zaman dil, vektör / dizi tabanlı paradigmanın dilidir ve karmaşık doğrusal cebire doğru uzmanlaşmıştır. Orijinal versiyonda sıradışı dizi operatörlerini zincirleyerek zincir yapıları, hiçbir şey ve yapılan her şey bile yoktu.

  • strip_tags()kimse yok mu? (Wikipedia'dan ödünç alındı)

strip_tags () ala APL


18
Klavyeyi göstermek için +1
tcrosley

5
@tcrosley: It en güzel gerçek varsa wickensonline.co.uk/apl/unicomp-apl-top-large.jpg
Orbling

4
Zaten yeterince zihin bükme olmadıysa, geri alma / çıkarma tuşunu kullanarak gereken bazı operatörler vardı. Örneğin, matris tersi, bir bölme işaretiyle (klavye görüntüsünün sağ üst köşesindeki backarrow tuşunun yanındaki kutu) fazladan bırakılan kare kutu (L tuşunun üstünde) idi.
Tangurena

2
1980'lerin başında APL'yi yüksek düzeyde istatistiksel regresyon analizi yapmak için yaptığımda tersine dönüyorum, insanlar hala bunu kullanıyor mu? Titreme.
HLGEM

2
Bir zamanlar birçok APL yaptım - hala benim için nostaljik bir nokta var ... O zamanlar çok sevdim.
hızla 0 Ocak'ta

56

Haskell . Çoğu insanın alışık olmadığı tamamen işlevsel olmaya çok yakın; çok zorlu, ki ne yaptığınızı öğrendikten sonra faydalı ancak o zamana kadar sinir bozucu; oldukça kriptik, oldukça sembolik bir sözdizimine sahip, bunu bir kez öğrendikten sonra harika ama ondan önce donuk ... liste devam ediyor.

Ayrıca, şeyleri bana iyi görünecek şekilde biçimlendirmek imkansızdır.


7
Ben de Haskell diyecektim ama şifreli olduğu için değil. Anlaşılması kesinlikle zor olsa da, zihin bükme olayı arkasındaki teori ile ilgili. Monad ve Oklar hala fethetmediğim bir alan adı :)
Matthieu M.

11
Neden "tamamen işlevsel olmaya çok yakın"? Bu tamamen işlevseldir.
dan_waterworth

4
Kendimden alıntı yapmak ve Haskell'in fikrinizi nasıl bükeceğini eklemek isterim: "Haskell halının altındaki şeyleri atmanızı önler, programınızın yapısıyla başa çıkmaya zorlar ve bu yapıları tanımlamak için size bir dil öğretir. türlerin dili. Türlerin anlaşılması, özellikle Haskell gibi zengin türler, sizi herhangi bir dilde daha iyi bir programcı yapacaktır. " programmers.stackexchange.com/questions/28950/…
Waquo

14
Haskell tamamen işlevsel bir programlama dilidir. Haskell'e yazdığınız kod tamamen işlevseldir (unsafePerformIO ve benzerlerini kullanmadığınız sürece). IO-Monad tamamen işlevseldir, aksi takdirde inanıyorsanız, monadların kontrol akışını tamamen işlevsel bir şekilde modellemek için nasıl kullanıldığını anlamıyorsunuz. Programınızı IO-eylemlerinin bir alışveriş listesi olarak düşünün, bir alışveriş listesi yalnızca saf bir veri yapısı, yan etkiler yok ve dil çalışma zamanı yan etkileri gösteren bir alışverişçi.
Waquo

8
@Jon, peki, biz de aynı fikirdeyiz: Dil, Haskell tamamen işlevseldir, ancak çalışma zamanı sistemi değildir. Bir haskell programının yürütülmesi saf değildir, ancak programın kendisi saftır.
dan_waterworth

30

Prolog. İlk maruz kaldığımda kullandığım diğer dillerden çok farklıydı. Sevdim, bu yüzden sözdiziminden ya da hiçbir şeyden nefret etmiyorum.



1
@Xepoch: Orada olabileceğinizi düşünüyorum, Prolog soruyu formüle ediyor. Kullanılan tek uygun 5GL dilden biri.
Orbling

Genel olarak, Prolog'un şimdiye kadar çok ilginç ve son derece güçlü olduğunu düşünüyorum, ancak kafamı tam olarak kesilmiş yerleşimin etrafına sokmakta büyük zorluk çekiyorum ( !).
Orbling

Prolog için 1, ben Prolog kullanılan bir yapay zeka kursu vardı ve ben de kötü yapmış olduğu tek tek bilgisayar bilimi sahasıdır.
rjzii

Prolog işlevsel bir programlama dili değildir. İşlevsel olarak Prolog tarafından tedarik edilmek, Lisp'in prosedürel programlamasından kaynaklanmak gibidir.
SADECE

24

Perl'de seninle aynı fikirdeyim. Gördüğüm en çirkin sözdizimi. Perl geliştiricilerinin bile ertesi gün ne yazdıklarını hatırlayamadıklarını söylüyorlar.


2
Perl'deki Def +1. Ben her zaman özellikle (onların adlandırıldığına inanıyorum) 'ima edilen' değişkenlerden hoşlanırdım. Mükemmel salt okunur kod için yapar.
GrandmasterB

2
Herkes Perl'i o kadar farklı yazar ki, farklı diller de yazabilirler - Perl'in içindeki başka birinin kodunu almak için nasıl çalıştığını öğrenmek zorunda değilsin, aynı zamanda o kişinin nasıl kullandığını da öğrenmek zorundasın.
glenatron

3
Bah bu cevaba ve bunun üzerine hem yorum. İyi yazılmış perl okumak ve yazmak kolaydır. Yeniler tarafından yazılmış bebek perl, eğer ayrıntılı ise, basittir. Yalnızca "okunamayan" perl, kasıtlı olarak gizlenir veya tek gömlekleri kodlar.
Sean McMillan

22

Forth demek zorunda kalacağım . Tüm işlemlerin yığın manipülasyonları olduğu gösterimi. Saf haliyle, kullanılacak hiçbir yerel değişken yoktur.


10
FORTH harika bir dildir. 80'li yılların başında ilk kez programlama öğrenirken Atari 400'üm vardı ve seçimlerim BASIC, Assembly ve FORTH olarak yorumlandı. Her üçünü de yoğun kullandım, ama FORTH diğerlerinden daha fazla kullandı. Hala Leo Brodie'nin ultra klasik Başlangıç ​​FORTH ve Thinking FORTH kitaplarına sahibim. Aslında, yeni bir donanım sisteminde sıfırdan kendi kendine barındırma dili yaratmam istendiyse, tereddüt etmeden FORTH seçecektim.
Adam Crossland

3
@Adam Crossland: Düşünmek FORTH harika bir kitap, bu linke ilginizi çekebilir: thinking-forth.sourceforge.net
Orbling 07:11

1
@Orbling: harika beyinler aynı şekilde düşünüyor. 10 dakika önce, PDF'yi Kindle'ıma koydum.
Adam Crossland

1
@Adam Crossland: Bunun için iyi bir yer. Bu kitap genellikle programcılar için faydalıdır, FORTH ile ilgilenen ya da olmayan kişiler için okuma listesinde olmalıdır.
Orbling

1
Tamamen katılıyorum. Genel olarak problem çözme hakkında nasıl düşündüğümüz hakkında söylenecek çok şey var. Brodie çok berrak bir düşünür ve net bir yazardır. Eserleri benim için bir zevk.
Adam Crossland

21

Ruby .

Bu beni kendimi öldürmek istememe neden oluyor:

1.month.from.now()

(Tam sözdizimini yanlış yapabilirdim, ama sen anladın).


23
AMAN TANRIM. Bunun iyi bir fikir olduğunu kim düşünüyordu?
EpsilonVektör

8
Zihin bükme, okuma ile değil, yazı iledir. Bu saçmalıkla başa çıkmak zordur ve tüm yerleşik işlevleri / özellikleri ezberlemek / aramak saçmadır.
Matthew

55
Bunun harika göründüğünü düşünen sadece ben miyim ve Ruby'yi öğrenmek için iyi bir neden olabilir mi?
Orbling

9
Evet, harika. Ama bu, 3. aylardan.last.month.if.it.was.a.leap.year'dan yazabileceğim anlamına mı geliyor? Hayır. Veya en azından sanmıyorum . Yapabilirsem ... RoR şimdiye kadarki ilk telepatik dil olabilir.
morganpdx

15
Yanlış olan ne DateTime.Now.AddMonths(1);? Bu özellikler kodu daha okunaklı hale getirmez. (C # 'ın en iyi sözdizimine sahip olduğunu söylemiyorum. Herhangi bir dilde yapılan sözleşmelere geçebilirsiniz ve yine de geçerli olacaktır.)
ChaosPandion

18

brainfuck

Bir dilin bu alayını dürüstçe yazabilen birinin böyle bir konuya bile ihtiyacı olmamalıdır.

Merhaba Dünya (işaretçiler, sol; açıklama, sağ):

+++++ +++++             initialize counter (cell #0) to 10
[                       use loop to set the next four cells to 70/100/30/10
    > +++++ ++              add  7 to cell #1
    > +++++ +++++           add 10 to cell #2 
    > +++                   add  3 to cell #3
    > +                     add  1 to cell #4
    <<<< -                  decrement counter (cell #0)
]                   
> ++ .                  print 'H'
> + .                   print 'e'
+++++ ++ .              print 'l'
.                       print 'l'
+++ .                   print 'o'
> ++ .                  print ' '
<< +++++ +++++ +++++ .  print 'W'
> .                     print 'o'
+++ .                   print 'r'
----- - .               print 'l'
----- --- .             print 'd'
> + .                   print '!'
> .                     print '\n'

2
Ya da Whitespace? Brainfuck'ın tüm kötülükleri görünmez kodlarla birleştirildi.
Loren Pechtel

17

Lisp benim en son zihin bükme dilim.

Haskell'den monadları ve fonksiyonel programlamayı yanıma aldım ve şimdi çalışacak makrolarım var. Sadece CLOS'a giriyorum ve durum sistemine hiç dokunmadım.


Lisp'lerden bile hoşlanmıyorum (olası Clojure istisnası dışında - hala orada kararımı vermedim) ve sana bir +1 verdim. Zihin bükme kısmı kesinlikle orada ve Lisp'ten öğrendiklerim, kullanmasam da diğer dillerde yaptığımın çoğunu bilgilendirdim.
SADECE DOĞRU SEVİYİM

14

KABAKULAK

Bu dan açılan bir dildir zaman için zaman çevrimiçi hikayelerde ve (olup, hasta kayıtları) kritik yaşam güvenliği bilgilerini depolamak fiili üretim kullanımda olma katma onurunu sahiptir. Ancak, bu aynı zamanda açıklığın takdir edildiği ve aşağıdaki gibi işlevlerin üretim kodunda görünebileceği bir dildir ( konuyla ilgili Wikipedia makalesinden örnek ):

s A="String" F i=1:1:$L(A) W $c($S($A($E(A,i))<91:$A($E(A,i))-52#26+65,1:$A($E(A,i))-84#26+97))

vay, şaka yapmıyorsun değil mi? Uyuyamadım ve aniden 1 Nisan mı? O kadar parantez ve dolar işareti olan hiçbir şey hasta kayıtlarımın yakınında hiçbir yerde olmamalı.
dan_waterworth

1
İlk programlama işim, MUMPS konusunda uzmanlaşmış bir şirketle oldu! Ne yazık ki, web geliştirme üzerine bir üniversite kursu yaptım, bu yüzden beni eski eller yerine şirketin yeni kurulan ASP ekibine koydular, ancak MUMPS ilk birkaç haftamızda eğitim aldığımız dildi. Belki de şanslı bir kaçış
yaşadım

1
Madison Wisconsin'den buraya gönderilen var mı? Verona, gerçekten mi?
Hans Passant

1
Theilywtf.com sitesinin MUMPS'a adanmış bir bölümü olduğuna inanıyorum. Dokunmak istediğim bir dile benzemiyor.
Tyanna

1
Akademide M öğrendiğini ve özel bir dil olarak ilginç olduğunu düşündüğümü hatırlıyorum. İzin verdiği netlik, ters bir küçültme gibidir. Safimdeyken, üretim kodunun dilin aşırı stenoyu çok az içereceğini düşündüm. M kod temeli bir üretim gördüm ilk ve tek zaman benim bağırsak sıkılır ... tıpkı senin örneğine benziyordu. Ah, korku!
ajk

13

Coq veya bağımlı tip teorisinin başka bir uygulamasını söyleyebilirim . Haskell'in tipi sistemi karşılaştırmalı olarak çok etkileyici değildir. Daha etkileyici bir tür sisteme (örneğin, yapıların hesabı (CoC)) geçmek , dil içindeki programların özelliklerini kanıtlamak ve güçlü değişmezleri statik olarak kontrol edilebilecek türlerinize yerleştirmek gibi bazı temiz şeyler yapmanızı sağlar .


2
Her Bağımlı Tip sistem / prover / dil normal dillerden daha fazla kafa karıştırıcı olabilir, yani +1.
Orbling

1
Programların resmi olarak doğrulanması henüz yeni başladığım bir şey. Kesinlikle zihni büküyor ve gerçek dünyada faydalı bir hale geliyor. +1
dan_waterworth

7

Objective-C . Adil olmak gerekirse, sadece çok kısa bir süre çalıştım ve ilk bakışta sözdiziminden, bundan vazgeçtim kadar hoşlanmadım.

Böyle (nispeten) ortak bir dil olduğundan (özellikle Mac / iPhone / iPad'in geliştirilmesinde), alıştıktan sonra aslında biraz iyi olduğuna eminim.


2
Eh, muhtemelen biraz zihin bükme olarak nitelendirilebilir, ama hoşuma gidiyor. Bunun [foo bar]sadece objc_sendMsg(foo, "bar");işlev göstergesini aradığı sözdizimsel bir şeker olduğunu fark ederseniz yardımcı olabilir (bu, genel bir değil, özel bir "bar" dır ). Tamamen ördek yazıldığının farkında mısın?
Johansson’a göre

Objective-C sadece çalışma zamanı fonksiyonlarının etrafındaki devasa sözdizimsel bir şekerdir. Eğer alışması kez [receiver doStuff:arg]ona hemen hemen bir dinamik java benziyor
toasted_flakes

6

Merkür'ü seçtim .

Cıva, saf dillerin bile G / Ç yapabildiğini göstererek aklımı eğdi .

Bunun çalışma şekli, Merkür'deki G / Ç işlevlerinin 'dünya devleti' değerini alması ve yeni bir 'dünya devleti' değeri döndürmesidir. Böylece Merkür'deki G / Ç işlevleri dünyayı dönüştürür ve böylece saflık korunur.


3
+1 "... cıva dünyayı dönüştürüyor ve bu nedenle saflık korunuyor." - Bağlam dışı olmayı seviyorum. ;-)
Orbling

Şu an Mercury ile öğrenme eğrisi için mücadele ediyorum. Şimdiye kadar değerli bir mücadele oldu. Onu çok severim.
SADECE MY DOĞRUDAN

Beni cıvalandıran tek şey onun string tipinin NULL olarak sonlandırılmış olmasıdır.
dan_waterworth

6

Elbette Şeması olmalı . Anlatmaya çalışmak call-with-current-continuationher zaman beynimi acıtıyor, ama bir kez anladığınızda inanılmaz derecede zarif çözümler üretebilirsiniz.

Bir algoritma ve bir başkasına el kontrolü ile yarı yolda durdurmak ister misiniz? Elbette!

Aynı devam etmeyi birkaç kez devam ettirmek ister misiniz? Tabii ki!

Bir algoritmanın yürütülmesini duraklatmak, bir işlevi yeniden tanımlamak, daha sonra orijinal yığında ancak güncelleştirilmiş bir global durumda yürütmeye devam etmek mi istiyorsunuz? Sorun değil! Ve bunu küresel durumdaki farklı değişikliklerle birkaç kez mi yapıyorsunuz ama aynı yığın giriş noktası aynı mı? Sizin için efendim, her şey!


+1 LOL + "Sizin için efendim, her şey!" Neredeyse Oliver! 'Da bir şarkıda sıraya girme dışında, bir dilin sahip olması için de iyi bir istek.
Orbling

1
Açıkça devam eden tek dil şema değil. Örneğin Haskell , onu gayet iyi ve aynı şekilde zihin bükülmesini destekliyor.
SADECE MY DOĞRUDAN

4
Haskell'de tartışmalı olarak daha zekicedir, çünkü (call / cc) bir dil özelliği değil bir kütüphane olarak uygulanır. Ama belki bu daha az akılda kalıcı olur.
Logan Capaldo

Sanırım aynı anda hem daha az hem de daha az zihin bükme oluyor. Bu çelişkiyi kafamda tutmak aklımı büküyor. Sonuçta Haskell daha çok zihin bükücü. :)
SADECE

Scheme (ve Ruby !) Sürekliliği ile ilgili en güzel şey , dilde yerleşik olmalarıdır . Haskell, basitçe, Düzenleme'de de yapabileceğiniz sıradan devam eden geçiş stiline monadik bir sözdizimi ekler. Fakat her şeyi monadik bir kurguya gömmek zorunda kalmadan çağrı / cc'yi yerleşik olarak yapmak birçok akıl bükme yapısına kesinlikle izin verir.
Dario

4

Eskiden çok güçlü bir metin değiştirme dili olan TECO (Metin Düzenleyici ve Eşleştirici) adında eskiden bir editör kullanıyordum. Bu konudaki ünlü alıntıyı hatırlamıyorum ama asıl amaç "20 karakterden oluşan rastgele bir koleksiyonun hemen hemen her zaman meşru bir TECO programı olduğunu ve dosyanızı (bu bir editördür) temelde tahmin edilemeyecek bir şekilde değiştirecek. bir Fortran - PL1 çevirici hakkında bir sayfa TECO kodu.


5
“TECO ile oynayacak en eğlenceli oyunlardan biri, adınızı komut satırı olarak yazmak ve ne olduğunu tahmin etmeye çalışmaktır. TECO ile konuşurken olası yazım hatası hakkında muhtemelen muhtemelen programınız yok olur, hatta daha da kötüsü… Bir zamanlar çalışan bir alt programa ince ve gizemli böcekleri tanıt. " Dostum, o günlerdi!
SADECE MY DOĞRUDAN

1
TECO aynı zamanda EMACS'ın orijinal üssü idi. EMACS sadece bir TECO makro topluluğu olarak başladı!
Gabe

@Omega: Hangi TECO'yu kastettiğinizi söylemek gereklidir. MIDAS'ta yazılmış olan TOPS-10 veya MIT TECO ile birlikte gönderilen DEC TECO. Bu sonuncusu TECO, EMACS'in içine yazdığı şeydir. Aynı zamanda EMACS'in nasıl genişletildiğini de gösterir. Dersleri geçmek yerine EMACS’i hacklemeye çalışırdım.
John Saunders

Sadece DEC TECO kullandım. Ve evet o günlerdi (tekrar genç olmak için) ....
Omega Centauri

1
Vim komut modunda yazarak hatırlamamı sağlıyor
ron

3

Meclis bana en "zihin bükme" oldu, ama ben daha yeni başlıyorum.


Daha da kötüsü işletim sistemine ve donanıma bağlı olması
Dave

Peki ya bunu böyle yapar? Açık gruplama sırası olmadan doğrudan talimatlar? başka bir şey?
Jé Kuyruğu

Özellikle, program akışının kolayca göründüğü kadar net görünmediğinden hoşlanmıyorum. Hızlıca okumak kolay değil.
Anto

2
Ah, Cincinnati Milacron 2200B: Değişken kelime uzunluğu , bir JMP adresinin çalışma zamanı modifikasyonu ile birlikte . LSD'yi evcilleştirdi.
Peter Rowell

3

Lisp . Bunu öğrenmek, her biri programlama problemlerini çözme hakkındaki düşüncelerinizi tamamen değiştirecek olan bir dizi küçük epipalidir.


3

REBOL

Lisp gibi veri olarak kod kavramı etrafında inşa edilmiştir . Dilin taraftarları, ailedeki diğer yaklaşımlara göre benzersiz yararlarının ne olduğunu açıklamakta zorlanıyor ve genellikle omuz silkmek ve buna benzer şeyler söylemek "AmigaOS'u tasarlayan adamla birlikte standart kütüphaneye dahil edildi" ve bir kez 'kırmızı' alınca, kırmızı Matrix hapını almaya benzer ve asla geri dönmek istemeyeceksiniz.

Sorun, kısmen tuhaf olması ve hangi programcıların pazarda olduğunu kesin olarak tanımlamaması. Ama aynı zamanda kısmen, savunucuyu savunan birçok insan var. açıklamak için emdikleridir . :)

Fakat Douglas Crockford eskiden hayranıydı, ondan ilham aldı. almıştı ve insanların Ekim 2010'a kadar yakın zamanda incelemesini önerdi:

“Ted Neward, 'Programlama Dillerinin Geleceği' panelini düzenlemek için gerçekten iyi bir iş yaptı. Panelin sonunda Ted, panelistlere, insanların yeni fikirler edinmek için öğrenmeleri gerektiğini düşündüğü dilleri söyledi. (Bruce Tate), Rebol (Douglas Crockford) , Forth ve Faktör (Alex Payne), Şema ve Birleştirici (Josh Bloch) ve Clojure (Guy Steele). "

Kaynak: sauria.com

Dil tasarımı ve genişletilebilirlik hakkında nasıl düşündüklerini genişletmek isteyen herkesi aramaya değer. Şimdi açık kaynak (18 yıllık tescilli geliştirme sürecinden sonra) artık onu kol uzunluğunda tutmak için verdiğim olağan feragatnameler artık geçerli değil ... bir bakmaya değer! Topluluk kendi tescilli Rebol tabanlı mesajlaşma programından bile kurtuldu ve Stack Overflow'ta sohbet etmeye başladı (çok şaşırdım!)


1
REBOL'den kaçınıyorum, çünkü tek pratik uygulaması sahip olduğu şirketin kaprisinde değişen standart olmayan, açık olmayan bir yazılım. (Rebol 2 - Rebol 3 ...) Eğer hiç standartlaştırılmış veya açılmışsa, başka bir göz atacağım, ancak o güne kadar Rebol benim takımımdan kaldı.
SADECE DOĞRU SEVİYİM

1
@JUSTMYrectOPINION belki de gün başka bir görünüm almaya geldi! Rebol 3 şimdi Apache2 lisanslı bir yazılımdır . Hatta bir var RebolBot buraya Rebol'un ve Kızıl sohbet odası dili demo'ing bize yardım StackOverflow'daki. ( Kırmızı , hibrit olarak derlenmiş bir sürüm olarak çok ilginç bazı sözler gösteren başka bir açık kaynak Rebol çeşididir.)
HostileFork

2

Birçok insanın doğrudan yazmak zorunda kalmaktan kaçındığı, geliştiricilerin SQL'i zihin bükme olarak bulduklarını söyleyebilirim . Sanırım birçok insan doğal olarak kümeler açısından düşünmüyor.


SQL kesinlikle zihni büküyor, ancak daha iyi kod yazmamda bana yardımcı olmuyor.
dan_waterworth

4
SQL benim için BASIC kadar doğal, sadece benim. SQL'de tam veri işlemeyi kavradığınızda DB destekli uygulamanın ne kadar kolay olabileceğini görün.
Jé Queue

@ dan_waterworth, sanırım SQL, daha fazla ve daha özlü bir kod yazmanıza yardımcı olabilir.
Jé Kuyruğu

@Xepoch, sanırım, ORM'lerin yükselişinin bize öğrettiği herhangi bir şey varsa, insanların engelleyebilecekleri durumlarda SQL'de yazmaktan hoşlanmadıklarını düşünüyorum. Kendi dillerinde yazmayı tercih ederlerdi.
dan_waterworth

Sanırım, senden daha iyi kod yazabilecek bir şey kullanmak iyi bir şey.
JeffO

2

Saf

Saf terim, yeniden yazma terimine dayalı işlevsel bir dildir. Sevdim, biraz sade ise, hem seyrek hem de etkileyici.


+1 İşlevsel, vektör, son derece güçlü bir dil anlamına gelir. Q 'nın bir soyundan (biraz APL'ye borçludur) ve Haskell ve ark. Kesinlikle söz vermeyi garanti ediyor.
Orbling

2

En çok zihin büken olmayabilir, ancak öğrenmesi çok zor oldu ( Haskell ve assembly dilinin daha kolay olduğunu düşündüm !)

Bu , özellikle VHDL (ve Verilog'u daha az oranda) olan HDL dilleri kümesidir.

Her "fonksiyon" un aynı anda çalışması gerçeğini aşmak inanılmaz derecede zordur ve kesinlikle her şeyi paralel hale getirmekten kaçınamazsınız. Tabii ki, bu sadece sınır çizgisi olsa da bir programlama dilidir.


Bir keresinde biraz VHDL yaptım. Birdenbire, kod eklerken, bu kodu uygulamak için daha fazla donanımın ortaya çıkacağını ve tümünün aynı anda çalıştığını fark ettiğimde, gerçek bir epifani anı yaşadım. Gerçekten sınırsız eşzamanlı olarak çalıştırılan iş parçacıkları ile çok iş parçacıklı programlama gibi; belki EC2'deki sınırsız düğümlere veya harita azaltıcı kümelere erişimi olan insanlar da benzer bir vızıltıya kapılıyor. (Ama kısa bir süre sonra, bu dillere önemsiz olmayan bir şey uygulamanın ne kadar tam bir acı olduğunu anlamaya başladım ve kaçtım).
tim

1
Elektrik mühendisi olarak eşzamanlılıkla ilgili pek bir sorunum olmadı, aslında oldukça özgürleşiyordu. Uygulamadaki acıya gelince, UP, problemi algoritmadan tanımlanabilen ve problemi matematikten alan bir kavram olarak tanımlayan belirli problem sınıflarına uygun bir çözümdür. İçsel bir paralellik ile ilgili bir problem, kolay çözülebilen problemler arasındadır ve VHDL ve FPGA'lar bu zamanlarda kullanışlı olmuştur.

Evet, eğer zaten bir programcı değilseniz ve aynı anda birden fazla blokla çalışmaya alışkınsanız VHDL gariptir.
medivh

1

Tcl

Bir kere öğrenmeye başladım, ancak mantıklı gelebilecek kadar öğrendiğim gibi beynimi hissettirdiği gibi gerçekten sevmedim. Bu zihin bükme olarak nitelendirilebilir.


1
1995-1997 yılları arasında özellikle iyi bir sebep olmadan çok fazla Tcl programlama yaptım. 1998'de yeni bir iş aramaya başladığımda, Körfez Bölgesi'ndeki tüm çalışanlar düşük ücretli, yüksek basınçlı VIGNETTE konserleri için röportaj yapmam için beni almaya çalıştı. Hızlı bir şekilde özgeçmişimden çıkardım. Bu konuda size zor anlar yaşatmayı düşündüm, çünkü Tcl'i gerçekten kolay olduğunu hatırladım, ancak geriye dönüp baktığımda Python'u öğrenmeyi diliyorum.
Adam Crossland

Tcl kesinlikle kazanılmış bir tat. Şahsen ben dilin tasarımının dahi olduğunu düşünüyorum - beynimin Tcl kadar iyi bir dille uyuşmadığını biliyorum ama azınlıktayım. Sevin ya da nefret edin, öğrenmek, dillerin nasıl çalışması gerektiğini yeniden düşünmenizi gerektirir.
Bryan Oakley

1

Açıkçası, makine dilini çevirmek. Son derece güçlüdür, mevcut tüm diğer programlama dillerinden üstündür ve kullanmaya çalışırsanız beyninize zarar verme garantisi vardır.


6
Bunun kanıtlanabilir bir şekilde üstün olduğunu iddia etmemize itiraz ediyorum. Üstün terimi, öznel konuların hesaba katılmasını önermektedir. Ayrıca, C'yi sonsuz belleğe sahip bir bilgisayarda çalıştırırsak (ki bu yalnızca bir Turing makinesi sonsuz belleğe sahip olduğu için adildir) güç bakımından eşdeğerdir.
Winston Ewert

2
@ Winston: Bir turing makinesinin bandının sonsuz olması gerekmez. Sadece her iki ucunda da gerektiği kadar ek bant üretebilen bir bant fabrikası olması gerekiyor :)
Mike Dunlavey

“Muhtemelen üstün” tanımı gereği nesnel bir terimdir. Bu, herhangi bir dilin bir Turing makinesine uygulanabileceği anlamına gelir, ancak her dil bir Turing makinesini uygulayamaz. Tabii ki, bu aynı zamanda C gibi diller için de geçerlidir, sonsuz bellek ve sonsuz yığın sağlar.
user12667

BrainFuck zaten soruda bahsedildiği gibi ve hemen hemen Turing'in makine dili.
Saat

1
Bu bir Turing makinesinin daha güçlü olduğunu gösteriyor. Sorun en azından ben de vs. kullanım hesap kolaylığı, kullanılabilirlik, içine alacağını üstün olduğu bir dil iddia ederek terimini kullanmayı tercih olarak, yani
Winston Ewert

1

C

İşaretçiler, bellek yönetimi ve tür seçimi hepsi çok fazla düşünür ve yanlış anlaşılması kolaydır. Karma tablolar veya listeler gibi yerleşik veri yapılarının olmayışı, kendinizinkileri tasarlamanız veya bir üçüncü taraf kütüphanesi bulmanız ve API'sini öğrenmeniz gerektiği anlamına gelir.


Affedersiniz. C bir montaj dilidir. Tabii ki o şeylere sahip değil.
Peter Rowell

2
Meclis dilleri zihin bükmedir.
david4dev

-1

JESS (Java Uzman Sistem Kabuğu). Bir Java ortamına gömülü olan CLIPS'in bu uyarlaması, işlevsel bir kural tabanlı uzman sistem dilidir. Gerçek Java nesnelerini gerçekler olarak eşlemeye ve beklediğiniz sonuçları almak için sorulacak doğru soruları bulmaya çalışmak gerçek bir mücadeledir. Daha az bu yüzden eğer uzman sistem teorisine aşina iseniz, fakat saf bir OOP zihniyetinden geliyorsanız, bu uygun değildir. Not: CLIPS Lisp değil, öyle görünüyor. Yine başka bir zihin bükücü.

İlk öğrenme eğrisini geçtikten sonra, cevapları bulmak oldukça güç ve oldukça hızlıdır.


Jess, kendi uygulamalarınız için bir tür komut dosyası / mantık motoru olarak da yerleştirilebilen CLIPS'ın modern bir sürümüdür.
Tangurena

Tamam, düzeltilmiş duruyorum. haskel.com/corp/details/0,10294,CLI1_DIV139_ETI9759,00.html Yine de, içine gömüldüğü dilden çok farklı bir zihniyet gerektiriyor.
Berin Loritsch


-1

CIL

CIL, tüm .NET programlarının derlediği Ortak Ara Dil , bir çeşit nesne yönelimli derleme. İçinde kod yazmayı veya okumayı denemek ve yapılarını zaten bildiğim C # ile karşılaştırmak ilginç. .NET'in sahne arkasında ne yaptığını öğrenmek için iyi bir yoldur. Mono Cecil kullanarak dinamik kod oluşturma veya varolan derlenmiş kodu yeniden yazma gibi şeyler için de faydalı olabilir .


2
ya da bu konuda da bytecode?
Jé Queue

Java bayt kodunu kastediyorsanız, o zaman onunla hiçbir deneyimim yok, bu yüzden zihin bükme önerecek durumda değilim.
svick

Java-Bytecode ve CIL'i gerçekten karşılaştırmam, çünkü Java-Bytecode zaten derlendi ve CIL çalışma zamanında derlenecek (.net'in Just-In-Time-Compiler)
basti

@chiffre Çoğu durumda Java Bytecode ve CIL tamamen aynı şekilde çalışır. Her iki durumda da, "derleme zamanı" ndaki (CIL veya Java Bytecode) ikili bir ara dilde derlenen kaynak kodunuz (C # veya Java) vardır; bu durumda, bir JIT tarafından "çalışma zamanında" gerçek makine koduna derlenir derleyici.
svick
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.