五千年(敝帚自珍)

主题:【原创】三年级也可以学编程 -- 月色溶溶

共:💬209 🌺336
全看树展主题 · 分页首页 上页
/ 14
下页 末页
家园 和楼主一样的文科生来说几句

大学学的文科,虽然选修了一门java课程,但除了把课本上的计算器程序照抄运行无误外,其他也什么都没学会。努力尝试去理解“面向对象”和“递归”之类的专业术语,但无奈天赋有限,终究没学会。

我对计算器这个例程(在书的最后几节,前面N章没理解)比较感兴趣的原因是,我希望我写出的“程序”能被我直观的感受到,能让我点点某个按钮触发下某个事件,这会让我很有成就感,可惜书上介绍的少,而且实现起来太复杂,我终究是没学会。

后来工作中一段时间(几个月)需要大量的重复劳动,逼迫我不得不去学点程序,接触到了中文写程序的易语言,摸索了一阵子后,很快就入门并能自动替我处理一些简单的数据了。

我之所以敢向楼主推荐易语言,而且在河里大牛那么多的情况下,还敢说出来,不是自大也不是想误导楼主,而是切切实实觉得可以解决新手入门问题和解决一些生活中的实际问题。

优点如下:

1、中文比较直观,而且有语法提示。

2、自动纠错功能很强悍。至少缺少括号,数据类型不对什么的,都会自动提示,改起来很方便。而且不同数据类型之间转换也比较方便。像我这种无法把数据类型定义很好的,就用的非常舒服。

3、每种命令都有提示说明。新手遇到的最大问题是,不知道这个功能有哪些命令可以实现。或者这个命令使用错了,不知道需要写哪些参数,而这些都有提示和说明,照着看很容易用。

而且就算某些功能不会用,网上也有一堆模块下载来,下载来直接用他们的模块里的命令就好了,比如图片格式转换、定义系统热键什么的。不会写的功能也不怕。

4、创建图形界面非常简单方便。

缺点当然是编译程序较大,而且说出来很不好听(我很勇敢了,你们别给我扔草啊),就算你能用易语言写出帮你自动偷菜的程序,说出来也没别人用高级语言写一句hello world好听。

不过文科生嘛,写点程序不是为了糊口 ,而是为了实际解决问题。至少自动帮我处理excel数据和偷菜什么的还是胜任的,最近在干的事是自动采集某网站上千个页面里的数据。

我算法是一个也不会。不知道楼主学编程具体要干嘛,要了解编程思想什么的,看其他人的推荐吧,如果想解决点实际问题,希望我能帮到楼主。

仅作参考,大家别打我

家园 俺推荐两个:VBA+OZ

VBA在微软Office套件里的Word,Excel,Access等产品里都可以使用,功能强大,而且效果比较直观,容易做出比较实用的工具。但是VBA本身似乎已经被微软抛弃,现在已经进化成更强大的VSTO,后者支持VB.Net和C#,可以看成是专业的Visual Studio的简化版,自带编译器和图形开发界面,如果只是了解编程的化这两个已经足够了,学完后对命令式编程和面向对象都有了基本的认识,进可攻退可守。

另一个语言是OZ(就是《绿野仙踪》里的奥兹国的那个“奥兹”)。推荐的理由是这个语言是比较少见的多范式语言。支持目前几乎所有的编程范式和特性,网上有个总结:

 函数型语言(词法域 第一类过程 模式匹配 第一类统一语法),lazy,高阶(可实现非递归的循环),尾递归,描述式编程

 面向对象(状态 Stateful/抽象数据类型 多重继承),

 并行(多线程)(dataflow(数据流)线程 动态 连续 互影响),

 约束编程和逻辑推理(逻辑变量 分离结构 可编程搜索策略),人工智能,

 分布式(网络透明的分布式运算 组件编程 自动连接自动断线 共享变量/对象/类/过程),

 网络编程,无状态数据,

 安全,动态类型,异常处理,内存管理,交互的IDE

 多用途语言(交互的应用程序,GUI窗口程序,移动客户应用程序,Separation of Concerns (Aspects),跨平台,扩展dll,....)

举个约束求解的例子(摘自网络):

  X 属于 [1 11]

  Y 属于 [12 30]

求X Y使得满足

  X+Y=25

  X*Y=150

  条件的X和Y。

程序如下:

  declare X Y in

  X :: 1#11

  Y :: 12#30

  X+Y =: 25

  X*Y =: 150

  {Show [X Y] }

据说还有解决爱因斯坦五色房子的OZ程序,不过一时找不到。

俺推荐这种语言的理由是,对于小孩子来说,过早学习C这类工业用语言有害无益,目前主流语言基本就是命令式编程+面向对象,而实际上编程远远不止这两种思想。而且这类语言是为工业化设计的,容易陷进细节的陷阱而学不到背后的思想,限制小孩的创造力。而OZ语言可以按照需要进行取舍,不管是简单的还是复杂的,需要哪块学那块,学起来也比较有趣味,甚至可以自己添加关键字甚至定义一门新的语言(这点难度比较高,不过相对自己从头写应该容易许多,因为OZ和大部分主流语言不同,是基于核心语言的思想开发的,扩展起来相对比较容易)。

MOZART是OZ语言的一个实现,自带开发环境,网站是http://www.mozart-oz.org/

遗憾的是MOZART的中文资料非常少,国内也很少人用(估计知道的都很少),如果懂英文的话配上《Concepts,Techniques and Models of Computer Programming》这本教材就完美了(据说是大名鼎鼎MIT的SICP后继,SICP这门课据说已经停止了)。

家园 基础很重要

基础很重要。特别是计算机这个专业的学生。现在的学生已经不可能过多接触硬件的内容了,所以通过汇编的学习,可以最大限度的理解计算机的指令执行。当年俺上大学那会,计算机专业可是分:硬件、软件、应用三个不同专业的,大家的毕业证书也不同。现在可只有计算机科学与技术这一个专业了。

家园 这个正是VBA的强项

在Word里面做应该是很容易的。

家园 还是不太明白

按我的理解,宏就是把一个经常需要重复进行的复杂行为(比如行为A)简化为一个快捷键,当你需要进行行为A的时候,只要按一下那个快捷键就行了,这样可以大大提高效率。

我想要的实际上是一个word+搜索引擎式的程序,不知道怎么才能用宏来实现它。

家园 VBA不是宏

VBA是一门语言,全称是Visual Basic for Applications,理论上来说,所有其他语言能干的事VBA都能干。“宏”是一段用VBA写的程序,但是这个程序在Office里可以“录制”下来而不是一上来就手写。“宏”程序录制完成后也可以修改。按快捷键只是调用了一段VBA程序,这段程序可以是录制的,也可以是完全手写的。

在Word里的每一篇文章都是有结构的,比如标题,段落,目录,字体,作者,页数等信息(还可以添加自己需要的信息),这些信息可以用VBA直接提取出来,这些东西在普通的文本文档里通常是没有的;反过来用其他语言读写Word文档(包括这些结构信息)也是很困难的。而且按你的要求一边打字一边搜索这种模式使用VBA也比较方便。

再次重申,VBA是很强大的,别的语言可以写搜索算法,VBA同样也可以写。

家园 想了想,很难。

需要一个关键词列表,左边需要监视输入,碰到关键词的时候触发搜索。因为每一个输入动作都需要引发多次搜索操作(搜索刚输入的一个,两个,三个,四个以及更多的字),所以关键词列表长一点就会有效能问题。

确定关键词存在以后,右边要对一批(可能很多)docx文件进行全文搜索。这又是一个很大的工程,表现可能很不好。

这两个效能问题联合在一起,我觉得这东西可能就没法用了。。。

一个可行的妥协是写个小工具,你输入关键词它搜索word文件然后给你返还段落。不过这样就跟用Windows自带的搜索搜文件中包含的文字没啥本质区别了。。。

家园 VBA编写太烦了

VBA编写起来太笨拙了,当然我是自学了一小段,当时给两个哥们编毕业设计,最后都快要吐了,不过大多原因还是在于对象是文档处理,所以显得很琐碎。

家园 送宝!

送花成功。有效送花赞扬。感谢:作者获得通宝一枚。

参数变化,作者,声望:1;铢钱:16。你,乐善:1;铢钱:-1。本帖花:1

家园 同样,而且VBA非常实用

VBA对于大规模的文本和数据处理特别有用。比如做一大堆报表,或者把一堆表格换个格式。

家园 我就是小学三年级开始学的编程

当时邓爷爷南巡的时候,说了句计算机要从娃娃抓起,我有幸成为那第一批的娃娃。当时ABCD还不熟悉,全靠硬背把basic语言常用命令背下来。影响中最深的是三年级接触到一个词叫“循环”,一直以为这个是外来词,直到初中学习语文词性后才明白。5年级的时候开始上奥数班,第一课学习幻方,回家后用basic语言编程,一个星期下来总算实现了用计算机来计算幻方,那个兴奋劲现在都忘不了。

上大学选专业的时候,就是想学计算机算法,以后当个程序员。可是学到大三的时候,发现数学跟不上了,再回头补又没那个精力,逐渐往应用方向转。现在做管理了,但是还时不时写些文档的批处理脚本,把手下那些个跟班震得一愣一愣的。

家园 我在Linux上编译运行了一下可以啊

我觉得可能是scanf的问题,你换成scanf("%d,%d",&a,&b)试试,运行时候输入"1,2回车"。C语言里面接受用户输入不太靠谱,我觉得还是程序中写死或者传参数进去比较方便。比如

main(int argc, char *argv[]){int a = atoi(argv[1]); int b = atoi(argv[2]);...}编译好后运行 “a.out 1 2”,这时a就是1,b就是2

家园 这个主要应该是方法问题

和语言的关系应该不太大。比如现有文档结构不太适合您所需要做的处理,或者是算法不够好等等。设想一下,如果换一种语言,在同样的文档结构下算法没什么太大区别,那就不应该是语言的问题。其实各种主流语言的能力,在大多数情况下是差不多的(特大或特小的项目,或语言内置特殊部分除外)。

家园 是不是这个原因

在输入a和b的时候你前面的格式是%d%d,中间是没有逗号的,后面的&a,&b却有逗号,前后不一致。不知道是不是这个原因。另外,真想学好的话其实一开始养成好习惯最好,比如c = a + b,中间有空格是标准写法,开始就有这样的坏习惯以后就很难改了。

全看树展主题 · 分页首页 上页
/ 14
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河