非程序猿学习什么计算机语言比较好?C语言已经学过了,有没有什么语言打的代码比较少的?
回复内容:
说到打的代码比较少……我就列几种在Code Golf(Programming Puzzles & Code Golf Stack Exchange)中表现突出的语言吧。前三个是APL家的(参见 @bhuztez 的回答 ),后面的都是专为Code Golf设计的语言。当然,这些语言我全部不懂。- APL
- J
- K
- GolfScript
- CJam
- Pyth
- Clip
- Sclipting
python 或者 ruby 这种正经的脚本语言都可以。 在很多层面上看,Python就是21世纪的Basic。很适合非程序员 建议学一下Java,这样你就会觉得所有语言打代码都很少了。
// --------------------------
哦,其实我不是因为黑Java啰嗦而黑Java啰嗦。而是因为Java很难避免被某些人乱七八糟的加入一些模式什么的,变得自然啰嗦。
比Java更Verbose的语言有不少,比如评论里面提到的Visual Basic,比如Ada。却也不觉得读起来或者写起来比Java更蠢更累。
OK,你们说有IDE,你们说可以有Extraction, Completing 和 Refactoring的帮助可以让你们少些很多很多的代码。但是你们少些的代码能证明你们的Java代码不啰嗦吗?!能吗?!能吗!!!
艹!
// ---------------------------
Learn You a Haskell for Great Good! racket 我的回答是haskell:
1. 用类似数学的方法书写程序:
f x = 2 * x - 1
2. 递归
不管是函数递归还是递归的类型(这样说没错吧)表达起来极为方便:
链表的定义:
data Linklist a = Node a (Linklist a)
树的定义:
data Tree a = Node a (Tree a) (Tree a)
没有更简便的了吧
这也算简短代码的部分了吧。
3. 函数组合
通过函数组合将简单的函数组合为更复杂的函数而无需重写
foo = unwords . (map toUpper) . words . reverse
使用了函数科里化 运行起来大概是这样:
ghci > foo "i have a dream"
MAERD A EVAH I
4. 泛型
可以使用类型变量(如a)代替一类的类型
head :: [a] -> Maybe a
head [] = Nothing
head x:xs = Maybe x
这样就不必一个类型一个对应的取头元素的函数了
5. 类型类
类型类很好用,比如我希望一种类型可以进行相等性运算可以这样:
data Foo a = Foo a --new defined type
instance Eq (Foo al) where
Foo a == Foo b = a == b
6. 模式匹配
这个绝对是省代码量的利器好吗~
lucky :: Int -> String
lucky 7 = "You're lucky"
lucky x = "Unlucky"
如果模式多了还可以考虑门卫:
tellWeightState :: Int -> String
tellWeightState x
| x > 140 = " Too Fat"
| x | otherwise = " Oll Korrect "
(反正俺是感觉比if-else,switch好用得多)
-----------分割线-----
7. list comprehension
如果想生成一个列表(甚至是无穷长度的),复杂的写法就是写一个函数然后返回符合要求的列表--但在haskell只需要像数学里的集合一样写就可以达到预期目标!:
>lst = [x^2 | x 试试看:
>take lst 4
[1, 4, 9, 16]
而且就算是Python来写这段代码,也仍要更多的代码量(字符数),而且并不是:无穷的
你只能这样:
lst = [ x * x for x in range(1, 4)]
这样直接得到拥有四个元素的列表,但如果我需要更多呢,下一步就是函数化了吧,于是又增加了代码量
虽然haskell里的这种写法也是语法糖,但是可比Python甜得多
8. lambda
同样是相较于Python
Python对lambda有很大的限制(只允许有一条语句)
但haskell中对lambda函数没有限制
这个例子在「Learn You a Haskell」里的对bracketOnError的使用中有体现
而且...lambda在haskell里很_简_短:
Python: foo = lambda x : x + 2
Haskell : foo = \x -> x + 2
上例在haskell里甚至可以更短,下一点讨论
9. 部分应用
上例的haskell代码可以直接简写为:
foo = (+ 2)
这就叫部分应用,函数组合利用的也正是这种原理,说到底都是函数科里化带来的好处
-----------------分割线
想起来再答:有错误请指出,轻喷,感谢阅读 python 找个程序员秘书,你动动嘴就可以了,一行代码都不用写。 Python和lua,还可以学学c#和Java,不要学c++脑袋疼。 要代码短,APL家族随便选一门就可以了。要知道在codegolf上,J语言可是经常毫无压力击败专门为codegolf开发的GolfScript的。
谁说APL难学的,看见APL IS EASY TO LEARN没?

图摘自 APL In Exposition

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

정규 표현식은 프로그래밍의 패턴 일치 및 텍스트 조작을위한 강력한 도구이며 다양한 응용 프로그램에서 텍스트 처리의 효율성을 높입니다.

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.
