码迷,mamicode.com
首页 > 编程语言 > 详细

如何学习一门新的语言

时间:2015-05-20 11:25:53      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:语言   词法   语法   c语言   lisp   

如何学习一门新的语言?
1 学习的目的?解决问题。
2 如何解决问题?通过语言本身和通过和语言相关的库。

学习就是学习语言的使用以及库的使用。

  我们一般都学习过一种或者几种语言,从学习语言的过程中我们自己已经摸索出了语言的特征。并且使用它来解决了一些问题。然后我们把这些问题重新提出,用新语言如何解决?这是很好的练习过程。

语言的元素:
语元(在词法分析中叫token),这个是构成语言的基本元素。在不同语言下有不同的规则。语元的种类包含关键字,标识符,符号。要知道这种语言的关键字都有哪些,标识符的构成规则(正则表达式),各种符号的意义。
语法
语言是由语句或者表达式构成(一些函数式语言是由函数和宏构成),这些语句和表达式的结构如何呢?如何使用这些表达式呢?
举个例子:
    if表达式
    在 C/C++ 中
    if-stmt: if exp stmts [else stmts]
    如果 exp 成立则执行stmt,else 部分可以选择有或者没有
    在lisp语言中
    (if cond exp1 [exp2])
    如果cond成立则返回exp1 如果有exp2 则返回exp2 否则返回NIL
    循环
    在C/C++中
    while-stmt: while(exp) stmts
    如果exp 成立则执行stmts直到exp不成立
    而在lisp中使用 loop 宏来实现,语言本身没有提供
当你理解各个语句或者表达式语法的时候,你已经掌握了它的语义。

掌握了这些语句我们就可以解决一些通用的不涉及库的问题,也就是只能运算,而不能输入输出及访问其他设备。这些设备是由特定的操作系统提供访问提,因此那些库就是为了和操作系统或者其他的设施(比如数据库,比如XML等)交互的。
接下来就是练习:
我们要把掌握的语元和语法,把原来的问题实验一下。
1 输入不同的成绩,给出不同的评级。 >90 为[80,90) 为B [60-80)为 C
用C语言就是  
    if(score >= 90) return ‘A‘;
    if(score >=80 && score <90) return ‘B‘;
    if(score >=60 && score< 80) return ‘C‘;
用 common lisp
    (if (>= score 90) ‘A‘
        (if (and (>= score 80) (< score 90) ) ‘B‘
            (if (and (>= score 60) (<80 score 80) ) ‘C‘)))
2 打印出9*9矩阵
C/C++
    for(int i=1;i<=9;i++)
        for(int j=1;j<=9;j++)
            printf("%d ",i*j);
lisp
    (loop
        for i from 1 to 9
            do (loop
                    for j from 1 to 9
                        do (format t "~a ")))

库的掌握:参考书,例子程序,实验


    
   

如何学习一门新的语言

标签:语言   词法   语法   c语言   lisp   

原文地址:http://blog.csdn.net/justin_bkdrong/article/details/45866985

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!