精华内容
下载资源
问答
  • 因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。**前文介绍了什么是GO语言及为什么我要学习Golang;这篇文章将介绍Go的编译运行、语法规范...

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。前文介绍了什么是GO语言及为什么我要学习Golang;这篇文章将介绍Go的编译运行、语法规范、注释转义及API标准库知识。 这系列文章入门部分将参考“尚硅谷”韩顺平老师的视频和书籍《GO高级编程》,详见参考文献,并结合作者多年的编程经验进行学习和丰富,且看且珍惜吧!后续会结合网络安全进行GO语言实战深入,加油~

    这些年我学过各种编程语言,从最早的C语言到C++,再到C#、PHP、JAVA,再到IOS开发、Python,到最新的GO语言,学得是真的杂。有时候觉得编程语言恰恰是最简单的,而通过一门编程语言能够解决实际问题或深入底层才是其价值所在,并且当我们学好一门编程语言后(尤其C和C++),其他编程语言都非常类似,殊途同归,学起来也很迅速。

    在这里插入图片描述

    源码下载地址:

    前文参考:


    一.Go语言执行流程和编译运行

    1.回顾前文

    前面我们通过VSCode已经快速编写了第一个Go程序,具体步骤如下:

    • 第一步,在Goproject文件夹中创建“src\go_code”目录,并创建第一个项目“project01”。
    • 第二步,VSCode打开刚才创建的文件目录。
    • 第三步,通过go_build命令对该go文件进行编译,生成.exe文件。
    • 第四步,在DOS命令行下执行.exe文件,并查看运行效果。
    • 第五步,通过go run命令可以直接运行test01.go程序。

    在这里插入图片描述

    在这里插入图片描述

    其运行结果如下图所示:

    在这里插入图片描述

    核心代码如下:

    package main    //把test.go文件归属到main
    
    import "fmt"    //引入包fmt
    func main() {
    	//输出内容
    	fmt.Println("hello, My name is Eastmount!")
    }
    

    代码解释:

    • Go程序的后缀是 .go
    • Go项目结构通常采用:GOPROJECT -> src -> go_code -> 项目名称
    • package main:表示test01.go文件所在包是main,在go中,每个文件都必须归属于一个包
    • import “fmt”:表示引入了一个包,包名为fmt,引入该包后就能使用其函数,比如fmt.Println
    • func main() {}:这是一个关键字,后面对应是一个函数。main是主函数,即程序的入口
    • fmt.Println(“hello, My name is Eastmount!”):调用fmt包中函数输出内容

    2.执行流程

    如果是对源码编译后再执行,Go的执行流程如下图所示:

    • 编译源代码:go build指令,生成可执行文件
    • 运行可执行文件:输出程序的结果

    在这里插入图片描述

    如果是对源码直接执行,通过“go run”运行程序,Go的执行流程如下图所示:

    • go run将编译和运行一起执行

    注意,在真实环境中是需要先编译后运行的。所以“go run”命令的运行时间更长,因为编译过程中隐藏在命令中,而上面的步骤是运行编译后的可执行文件。

    在这里插入图片描述

    “尚硅谷”韩顺平老师简单总结了两种执行流程的区别:

    • 如果先编译生成了可执行文件,那么可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行;
    • 如果我们直接运行“go run go源代码”,那么如果要在另外一个机器上运行,也需要go开发环境,否则无法执行;
    • 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了很多,如下图所示。

    在这里插入图片描述


    3.编译运行

    (1) 什么是编译呢?
    编译(compilation , compile) 指利用编译程序从源语言编写的源程序产生目标程序的过程,Go程序的编译就是把高级语言(源码)变成计算机可以识别的二进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成二进制的。

    当有了Go源文件后,通过编译器将其编译成机器可以识别的二进制文件,如下图所示,在该源文件目录下,通过“go build”对test01.go文件进行编译。

    在这里插入图片描述

    注意,“go build”编译可以指定生成的可执行文件名,但在Windows下必须是“.exe”后缀。下面简单演示下。

    • go build -o eastmount.exe test01.go
    • Goproject\src\go_code\project01\main

    在这里插入图片描述

    运行结果如下图所示:

    • eastmount.exe
    • hello, My name is Eastmount!

    在这里插入图片描述

    小技巧:在CMD中如何快速进入指定目录
    打开源文件所在目录,在路径栏输入cmd+回车,即可快速进入CMD。
    在这里插入图片描述
    在这里插入图片描述
    显示结果如下图所示:
    在这里插入图片描述
    另一种方法是在该目录下按住“Shift+鼠标右键”,点击“在此处打开PowerShell”即可。
    在这里插入图片描述

    (2) 错误提升
    如果程序没有错误,没有任何提示,会在当前目录下出现一个可执行文件(Windows下是.exe文件,Linux下是一个可执行文件),该文件是二进制文件,也是可以执行的文件。如果程序有错误,编译时会在错误的那行提示,这有助于程序员调试代码。

    在这里插入图片描述

    (3) 什么是运行
    运行有两种形式:

    • 直接运行生成的可执行Go程序,比如test01.exe
    • 通过运行工具go run对源代码文件进行运行

    在这里插入图片描述


    二.语法要求及常见问题

    1.语法注意事项

    • Go源文件以“go”为扩展名
    • Go应用程序的执行入口是main()函数,这个和其他编程语言一样(如c、java)

    在这里插入图片描述

    • Go语言严格区分大小写

    • Go方法由一条条语句构成,每个语句后不需要分号,Go语言会在每行后自动加分号,这也体现了Golang的简洁性,和Python一样

    • Go编译器是一行行进行编译的,因此我们一行写一条语句,不能把多条语句写在同一行,否则会报错

    在这里插入图片描述

    • Go语言定义的变量或者import的包如果没有用到,代码不能编译通过

    在这里插入图片描述

    • 大括号都是成对出现的,缺一不可

    2.常见问题

    (1) 如何修改字体大小?
    如果我们想在VSCode中修改Go程序字体大小,则需要在设置中修改代码选项。

    在这里插入图片描述

    性能->设置->字符大小。

    在这里插入图片描述

    (2) 系统找不到指定文件。
    解决方法:源文件名不存在或错误,或者路径写错误。

    在这里插入图片描述

    (3) 每次编译和运行都需要在CMD中执行吗?
    作为Go初学者,我建议大家先结合CMD来执行程序,这既能了解程序的基本执行流程;又能了解CMD的常用操作,如果你是想用GO做安全或后台,这些都是非常基础的命令。当然,随着这些列文章深入,后面会分享更好的集成开发工具,那些工具中可以直接执行程序,这也是为什么Python我首先推荐大家使用官网的IDLE。

    (4) 编程语法错误。
    作为初学者,在编程过程中最容易犯的错误就是语法错误,GO要求必须按照语法规则编写代码。如果你的程序违反了语法规则,如忘记大括号、引号、拼写错误、变量定义未使用等,Go编译器都会提示相应的语法错误,记住:

    • 尝试看懂编译器报告的语法错误
    • 学会独立去谷歌或百度错误,解决错误
    • 这些独立解决问题的能力更为重要,无论以后做项目、工作或科研,都将终身受益

    如下图所示,在第6行没有定义“fmt.Printin”,这就是一个语法错误,正确的应该是“fmt.Println”。

    在这里插入图片描述


    三.Golang转义字符、注释及编程风格

    1.转义字符

    Go语言常用的转义字符(escape char)如下:

    • \t:表示一个制表符,通常使用它来排版
    • \n:表示换行符
    • \\:表示一个\
    • \":表示一个"
    • \r:表示一个回车,比如 fmt.Println(“Eastmount\rCSDN”)

    具体实例如下所示,新建文件夹“chapter02”和“escaptechar”,接着新建“main.go”文件,并添加如下代码:

    在这里插入图片描述

    接着我们在CMD中去到指定目录,编译运行程序输出如下图所示效果:

    • cd chapter02\escaptechar
    • go run main.go

    在这里插入图片描述

    完整代码如下:

    package main
    
    import "fmt"    //引入包fmt 提供格式化、输出、输入函数
    func main() {
    	//转义字符
    	fmt.Println("Eastmount\tCSDN\tyangxiuzhang")
    
    	fmt.Println("Hello\nWorld!!!")
    
    	fmt.Println("C:\\Users\\xiuzhang\\Desktop\\data")
    
    	fmt.Println("秀璋说\"我爱娜娜\"")
    
    	//注意:回车会替换前面的内容
    	fmt.Println("秀璋爱娜娜\r珞珞")
    
    	fmt.Println("\a")
    }
    

    输出结果如下所示:

    在这里插入图片描述

    其他转义字符如下所示:

    \a             响铃符       (相当于 \x07)
    \b             退格键(BS)   (相当于 \x08)
    \f             换页符       (相当于 \x0C)
    \t             横向制表符    (相当于 \x09)
    \n             换行符       (相当于 \x0A)
    \r             回车符       (相当于 \x0D)
    \v             纵向制表符    (相当于 \x0B)
    \123           匹配 8  進制编码所代表的字符(必须是 3 位数字)
    \x7F           匹配 16 進制编码所代表的字符(必须是 3 位数字)
    \x{10FFFF}     匹配 16 進制编码所代表的字符(最大值 10FFFF  ) 
    \\             匹配字符 \
    \"             匹配字符 "
    

    2.注释

    注释(Comment)用于解释程序的文字,注释提高了代码的阅读性。一个程序员一定要养成良好的编程习惯,注释就是将自己的思想整理出来,再用代码去实现。注释的好处及应用场景如下:

    • 当你过段时间发现程序有问题或者调整功能时
    • 当你去修改别人的代码或工作交接给别人时
    • 当需要补充设计文档时
    • 大型团队开发项目,各个成员相互合作通过注释和接口进行协调

    即使是Go语言的源代码,也包括了丰富的注释,所以养成良好的注释习惯真的很重要,尤其是初学者。通常三行代码一行注释,根据个人习惯而定。

    在这里插入图片描述

    Go语言支持C语言风格的 /* */ 块注释,也支持C++风格的 // 行注释。行注释更通用,块注释主要用于针对包的详细说明、函数功能说明或屏蔽大块的代码。

    Golang两种注释如下:

    • 行注释
      基本语法: // 注释内容

    在这里插入图片描述

    • 块注释
      基本语法:
      /*
      注释内容
      */

    在这里插入图片描述

    注释的使用细节:

    • 对于行注释和块注释,被注释的文字不会被Go编译器执行
    • 块注释里不允许有块注释嵌套
    • VSCode选中代码 Ctrl+斜杠(/)会自动生成行注释,再按一次注销,IDEA通用

    3.编程风格

    (1) 正确的注释和注释风格

    • Go官方推荐使用行注释来注释方法和语句
    • 多学习官方标准包注释

    在这里插入图片描述

    (2) 正确的缩进和空白

    • 使用一次tab操作实现缩进,默认整体向右移动,恢复使用shift+tab向左移动
    • 使用gofmt来进行格式化
    • 运算符两边习惯个增加一个空格,比如:2 + 3 * 5

    在这里插入图片描述

    使用gofmt后自动对齐,如下图所示:

    • gofmt -w test02_02.go

    在这里插入图片描述
    在这里插入图片描述

    (3) Go语言的代码风格
    正确的代码风格:

    package main
    
    import "fmt" //引入包fmt 提供格式化、输出、输入函数
    func main() {
    	//行注释:转义字符
    	fmt.Println("Eastmount\tCSDN\tyangxiuzhang")
    }
    

    错误的代码风格:

    • Go语言设计者认为这会导致两种标准,他们的思想是一个问题尽量只有一个解决方法。Go规定如此,大家需要按规则编写代码。
    package main
    
    import "fmt" //引入包fmt 提供格式化、输出、输入函数
    func main()
    {
    	//行注释:转义字符
    	fmt.Println("Eastmount\tCSDN\tyangxiuzhang")
    }
    

    (4) 一行代码最长不超过80个字符,超过请使用换行展示,尽量保持格式优雅。


    四.Golang编程指南

    Golang 官方网站如下,记住官方文档和源码永远是最好的学习场所。

    在这里插入图片描述

    当我们点击“Run”按钮即可运行程序,我们可以通过官网进行简单的代码学习。

    在这里插入图片描述

    点击“Tour”可进入编程指南,点击“packages”可查看官方标准包说明文档。

    在这里插入图片描述

    1.编程指南

    点击“Tour”编程指南显示如下图所示:

    在这里插入图片描述

    下列代码输出结果如下:

    package main
    
    import "fmt"
    
    func main() {
    	fmt.Println("Hello, eastmount")
    	fmt.Println("CSDN")
    	var num = 1 + 2
    	fmt.Println("num=", num)
    }
    

    在这里插入图片描述

    那么,官方文档怎么使用呢?
    我们点击“简体中文”,然后看到如下图所示的Go指南。

    在这里插入图片描述

    比如我们想了解“包”的基本概念,可以点击显示如下图所示,并且有对应的示例代码。

    package main
    
    import (
    	"fmt"
    	"math/rand"
    )
    
    func main() {
    	fmt.Println("My favorite number is", rand.Intn(10))
    }
    

    在这里插入图片描述

    虽然这个手册对我们编程有帮助,但是其解释过于简单,对零基础的同学不太友好。但也建议大家去了解学习。


    2.官方API标准库

    Go语言是通过包(packages)的形式来管理它的函数的,点击“packages”可查看官方标准包说明文档。

    在这里插入图片描述

    比如我们想了解import "fmt"中对应的函数及功能。我们直接在网站中查询“fmt”,点击“index”显示如下图所示:

    在这里插入图片描述

    我们想查看函数Println原型和案例,显示如下图所示:

    • func Println(a …interface{}) (n int, err error)

    在这里插入图片描述

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	const name, age = "Kim", 22
    	fmt.Println(name, "is", age, "years old.")
    
    	// It is conventional not to worry about any
    	// error returned by Println.
    }
    

    输出结果为:

    在这里插入图片描述

    Go标准库API文档

    • API(Application Programming Interface,应用程序编程接口)是Golang 提供的基本编程接口;
    • Go提供了大量的标准库
    • Go中文网在线标准库文档:https://studygolang.com/pkgdoc
      比如搜索“fmt”,解释为“fmt包实现了格式化I/O函数,类似于C的printf和scanf”。

    在这里插入图片描述

    在这里插入图片描述

    Go的包和源文件及函数的关系简图如下所示:

    • 调用函数:import 包名
    • 使用函数:包名.函数名
    • Go安装src目录包含对应源码

    在这里插入图片描述

    比如作者的GO源码如下图所示:

    在这里插入图片描述


    五.Dos常用指令

    DOS常用指令这里仅简单介绍,这是为了让大家更好地了解Windows基础操作,同时对Linux、MacOS和安全领域的命令操作也有帮助。当然,后续也会详细介绍在工具中编译运行GO程序的方法。

    • DOS:Disk Operating System,磁盘操作系统,即Windows目录结构

    1.目录操作指令

    常见命令如下:

    • dir:查看当前目录
    • cd 盘符:切换到其他盘符
    • cd …:切换到上一级目录
    • cd \:切换到根目录

    在这里插入图片描述

    • md(make directory):新建目录
      新建多个目录:md test01 test02
    • rd:删除目录
      带询问删除目录及下面的子目录和文件:rd /s test02

    在这里插入图片描述


    2.文件操作指令

    • 新建一个空文件:type nul>eastmount.txt
    • 新建或追加内容到文件:echo hello > eastmount.txt
    • 显示文件内容:type eastmount.txt
    • 复制文件并重新文件名:copy eastmount.txt d:\yxz.txt
    • 移动文件:move d:\yxz.txt c:\
    • 删除指定文件:del d:\yxz.txt
    • 删除指定目录中txt结尾所有文件:del *.txt

    在这里插入图片描述


    3.其它指令

    • 清屏:cls
    • 退出dos:exit

    在这里插入图片描述


    六.Golang编程练习

    1.题目

    虽然GO语言的基本语法下一篇文章再叙述,但作者希望你们能通过搜索引擎独立解决这六个基础练习,加油!

    • (1) 编写程序输出自己的名字,熟悉GO语言

    在这里插入图片描述

    • (2) 请使用一行代码输出如下内容

    在这里插入图片描述

    • (3) 编写程序实现2和3的加减乘除运算并输出结果

    在这里插入图片描述

    • (4) 编写程序获取当前时间分别输出年、月、日

    在这里插入图片描述

    • (5) 编写程序计算1+2+…+100,并输出结果

    在这里插入图片描述

    • (6) 编写程序输出如下图所示倒三角

    在这里插入图片描述


    2.解答

    • (1) 编写程序输出自己的名字,熟悉GO语言
    package main
    
    import "fmt"
    func main() {
    	fmt.Println("Hi, My name is Eastmount!")
    }
    
    • (2) 请使用一行代码输出如下内容
    package main
    
    import "fmt"    //引入包fmt 提供格式化、输出、输入函数
    func main() {
    	fmt.Println("姓名\t年龄\t籍贯\t行业\nyxz\t28\t贵州\t程序员")
    }
    
    • (3) 编写程序实现2和3的加减乘除运算并输出结果
    package main
    
    import "fmt"    //引入包fmt 提供格式化、输出、输入函数
    func main() {
    	var a = 2
    	var b = 3
    	fmt.Println("a + b = ", a + b)
    	fmt.Println("a - b = ", a - b)
    	fmt.Println("a * b = ", a * b)
    	fmt.Println("a / b = ", a / b)
    }
    
    • (4) 编写程序获取当前时间分别输出年、月、日
    package main
    
    import (
       "fmt"
       "time"
    )
    
    func main() {
    	//获取当前日期
        today := time.Now()
    	fmt.Println("当前日期为:", today)
    	//分别获取年月日
    	year := today.Year()
        month := today.Month()
    	day := today.Day()
    	fmt.Println("年:", year)
    	fmt.Println("月:", month)
    	fmt.Println("日:", day)
    	fmt.Printf("%d-%02d-%02d", year, month, day)
    }
    

    补充知识:= 是赋值, := 是声明变量并赋值

    // = 使用必须使用先var声明
    var a
    a=100
    var b = 100
    var c int = 100
    // := 是声明并赋值,并且系统自动推断类型,不需要var关键字
    d := 100
    
    • (5) 编写程序计算1+2+…+100,并输出结果
    package main
    
    import "fmt" 
    func main() {
    	var result = 0
    	for i := 0; i <= 100; i++ {
    		result += i 
    	}
    	fmt.Println("1+2+...+100=", result)
    }
    
    • (6) 编写程序输出如下图所示倒三角
    package main
    
    import "fmt" 
    func main() {
    	var len = 5
    	for i := 0; i < len; i++ {
    		for j := len - i; j > 0; j-- {
    			fmt.Print("*")
    		}
    		fmt.Print("\n")
    	}
    }
    

    七.总结

    写到这里,这篇基础性Golang文章介绍完毕,希望您喜欢!

    • 一.Go语言执行流程和编译运行
      1.回顾前文
      2.执行流程
      3.编译运行
    • 二.语法要求及常见问题
      1.语法注意事项
      2.常见问题
    • 三.Golang转义字符、注释及编程风格
      1.转义字符
      2.注释
      3.编程风格
    • 四.Golang编程指南
      1.编程指南
      2.官方API标准库
    • 五.Dos常用指令
      1.目录操作指令
      2.文件操作指令
      3.其它指令
    • 六.Golang编程练习
      1.题目
      2.解答

    编程习惯和Go基本概念了解后,后面的文章将详细介绍Go语言的基础语法知识,并结合案例进行普及。希望这篇基础性文章对您有帮助,写得不好的地方还请海涵。同时非常感谢参考文献中的大佬们的文章分享,深知自己很菜,得努力前行。也希望自己能深入下去,未来四年好好研究Go编程语言,做更多实际工程,写更好的文章,共勉!

    源代码下载地址:

    在这里插入图片描述

    2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。

    在这里插入图片描述

    (By:娜璋AI之家 Eastmount 2021-01-29 星期五 夜于贵阳 https://blog.csdn.net/Eastmount)


    参考文献:

    展开全文
  • 网页设计规范及脚本语言规范

    千次阅读 2004-08-27 14:37:00
    网页设计规范及脚本语言规范 提高网页设计制作效果,加快信息化建设工作,网页设计制作规范化是一项很重要的工作,以下网页设计制作规范以供大家参考。 一、运行环境 1 .网页制作软件平台: 网页制作可采用 D ...
    网页设计规范及脚本语言规范
    提高网页设计制作效果,加快信息化建设工作,网页设计制作规范化是一项很重要的工作,以下网页设计制作规范以供大家参考。

    一、运行环境

    1 .网页制作软件平台:

    网页制作可采用 D reamWeaver X.0/ FrontPage 98 (2000)/ FireWorks X.0 / HotDog X.0/ Office 97(2000) 等编辑软件,建议采用 DreamWeaver 4.0 以上版本。

    2 .网络浏览软件:

    浏览软件建议采用 Netscape, Internet Explorer 4.0 及以上版本。

    3 .网页适用的屏幕大小:

    制作网页时,显示器的分辨率设置可以为 800*600 或 1024×768 。

    二、主页连接方式

    1 .主页制作完成后,经部门领导审查同意后(信息安全性由信息提供部门负责),向公司业务及信息中心提出挂接申请。

    2 .信息中心根据实际需求和可提供服务的能力,在主服务器上开设虚拟 WWW 目录。

    3 .公司主页由技术总监负责统一管理,由网页设计制作中心统一维护,各页信息由信息部门定期提供。

    4 .与公司有关主页的链接统一管理。

    5 .由网页设计制作中心定期向用户通知网页连接情况。

    三、制作主页的要求

    1 .制作主页时,不要使用 ShareBorder ,此项功能和计数器由网页组来统一负责添加设置。

    2 .网页制作允许使用 JAVASCRIPT 或 VBSCRIPT 语言, JAVA 、 CGI 、 PEEL 等设计工具。

    3 .所有的图片最好都放置在 IMAGE 目录下,以便于管理和维护。

    4 .指定专人负责主页的制作、维护,同时对信息的安全性、正确性和准确性进行负责。

    5 .技术中心定期进行制作网页的技术培训。

    另外,对于一个商业信息网站的总体的规范,也是相当重要,归纳为以下几点:

    一 . 导航规范

    * 每一个页面都出现的固定信息
    * 内容包括:首页,网站介绍,网站地图,联系方式,反馈,搜索工具,常见问题解答,实际内容栏目 ( 包括相关站点链接、新闻页 )
    * 栏目如果采用图标 , 下面应附有文字说明,以避免图像表达不清。
    * 无任何链接内容的不做成按钮的形式
    * 纯文本 like 用常用颜色。避免在链接处使用特殊的颜色。应该使用标准、
    醒目的颜色。
    * 每个页面都应包括 : 版权及网站管理员的 E-mail 地址
    ** 每个页面都应包括代表 " 返回 " 或 " 前进 " 的箭头。

    二 . 网站框架

    1. 网站介绍
    * 背景介绍
    * 栏目介绍(提供连接)
    2. SITE MAP (站点结构图)
    * 结构图(提供连接)
    3. CONTACT PAGE (联系方式页)
    * 网站管理员的 E-mail 地址(根据需要加入其它职能负责的 E-mail )
    * 通信地址,联系人,传真、电话号码等。
    4. FEEDBACK FORMS (反馈表) Reasons :
    * 姓名:
    * 性别:
    * 职业:
    * 单位地址:
    * 联系方式:
    * 意见建议:
    (根据实际就以上各项作调整,力求简洁有效)
    5. 实际内容,及栏目设置要求
    * 在每页中都要包含相关的,引人入胜的内容。特别是当你要销售一种产
    品的时候,每个页面都要用详细的内容和图像精心修饰一番。
    * 网页上的语言尽量通俗易懂。
    * 用符号突出特别重要的内容,不要过多,保持页面的简洁。
    * 不要把你的站点建成单纯的网上公司介绍,适当发布行业信息。
    6. FAQs (常见问题解答)
    * 将所有问题列于页面的上部,并将每个问题与答案链接在一起。
    * 对专业用语及技术术语进行解释。
    * 回答共性问题节省网管和访问者的时间和精力。
    7. SEARCHING MECHANISMS (搜索工具)
    * 在搜索框中键入关键词语或词组,在点击查寻按钮后,本站
    相关的网页列表就会出现在屏幕中。
    * 有效查寻的说明。
    8. 新闻
    * 在最新更新的信息边加注一个亮丽的小图标 --" 新! " 。
    * 为最新消息创建单独页面,并在一段时间后将新闻放置于适当的目录下。
    * 在主页或每个页面下加注一行文字,表明本站点或每个单独的页面最近
    一次被更新的时间。
    9. RELEVANT LINKS (相关站点链接)
    * 提供其它网站链接,以提供更多相关信息。
    * 每个链接做简要说明,并对它被链接的原因进行阐述。
    * 每周对各链接站点作定期的访问,删除那些死站点。
    ** 为你的站点创建纯文本的版本。


    三 . VI 标准化要求

    * logo 及中英文标准字体 ( 包括应用范例 )
    * 网站标准色 ( 包含扩展范例 )
    * 链接图标 ( 尺寸 pixels: 88x31/468x60 ) 各两个 ( 包括应用范例 )

    四 . 网页制作技术要求

    * 主要页面要写 ( 主页要写上企业中英文名称 )<BR>* 主要页面 <meta> 字段便于搜索引擎查找。 <BR>* <img> 的长宽值和 alt 属性 , 使不能看图的用户也可以读懂页面。 <BR>* 以最流行的浏览器的最普及版本为标准,同时照顾低版本浏览器。 <BR>为不同的浏览器分别制作不同的页面,以获得尽可能多的浏览量。 <BR>* 尽量使用广泛支持的技术。页面适应不同的屏幕分辨率。 <BR>* 不使用过小的字体 <BR>不使用过大的图片、动画、声音 <BR>不使用过长的滚屏 </P> <P class=zt12>其中各具体规范如下: </P> <P class=zt12>网络 LOGO 的规范 </P> <P class=zt12>  设计 LOGO 时,面向应用的各种条件作出相应规范,对指导网站的整体建设有着极现实的意义。具体须规范 LOGO 的标准色、设计可能被应用的恰当的背景配色体系、反白、在清晰表现 LOGO 的前提下制订 LOGO 最小的显示尺寸,为 LOGO 制订一些特定条件下的配色,辅助色带等方便在制作 BANNER 等场合的应用。另外应注意文字与图案边缘应清晰,字与图案不宜相交叠。另外还可考虑 LOGO 竖排效果,考虑作为背景时的排列方式等。 </P> <P class=zt12>  一个网络 LOGO 不应只考虑在设计师高分辨屏幕上的显示效果,应该考虑到网站整体发展到一个高度时相应推广活动所要求的效果,使其在应用于各种媒体时,也能发挥充分的视觉效果;同时应使用能够给予多数观众好感而受欢迎的造型。 </P> <P class=zt12>  所以应考虑到 LOGO 在传真、报纸、杂志等纸介质上的单色效果、反白效果、在织物上的纺织效果、在车体上的油漆效果,制作徽章时的金属效果、墙面立体的造型效果等。 </P> <P class=zt12>网络图形的规范: </P> <P class=zt12>1、在同一张网页中,不应有超出三幅以上的动画闪动。(友情链接广告除外)<BR>2、尽量少使用大图片,图形大于100K时,必须采用缩略图,用点击放大方式制作。<BR>3、一页网页的在56K调制解调器完全显示的等待时间不得大于30S。<BR>4、为减少图形文件大小,图形颜色丰富(>128色)时使用JPG格式(JPG压缩比为6),颜色单调(<128色)时使用GIF格式。<BR>5、一张网页放置多幅图片时,图形排列要整齐,横排的图形高度要一致,竖排的图形宽度要一致。<BR>6、网页使用图片时,应有说明性的文字,以便图片未显示时供浏览者阅读。<BR>7、图形中文字内容正确无误、文字清晰。<BR>8、图形与网页背景必须完全融合。(必要时可考虑采用WEB安全色。)<BR>9、图形创意美观、和谐,符合客户企业文化。 </P> <P class=zt12><BR>网络文字与表格的规范: </P> <P class=zt12>10、 处理网页中的文字,禁止直接复制粘贴WORD中的文字,应将文字粘贴至记事本后再使用。用户无特殊要求时,一般汉字采用宋体,英文数字采用Arial,日文采用MS明朝。<BR>11、 处理网页中的表格,禁止直接复制粘贴WORD中的表格,应在网页制作软件中制作表格。在空的单元格中,应插入一些与网页背景颜色相同的点,使表格在浏览器显示比较美观。<BR>12、 网站的所有网页风格要一致(包括文字大小、框架、色彩等),网页背景色一定要定义。<BR>13、 必须使用CSS样式表来定义整个网站文字风格。<BR>14、 文字正确无误,段落层次清晰,中文段落首行缩进二个汉字或直接采用方便浏览直接用文字左对齐方式。 </P> <P class=zt12><BR>网络兼容性:</P> <P class=zt12>15、 网页设计时要考虑到IE和Netscape浏览器的兼容性。国内用户可先优考虑IE浏览器,美国、日本用户 必须使两种浏览器均能正确浏览。<BR>16、 网页设计时要考虑到不同语言环境的兼容性,正确设置语言属性。<BR>17、 兼顾桌面分辨率800×600、1024×768下的显示效果。<BR>18、 在主页中尽量少使用滚动条,网页中禁止出现横向滚动条。 </P> <P class=zt12><BR>网络标识:</P> <P class=zt12>19、 每张网页上都清晰明了地显示出客户公司的名称及产品图形。<BR>20、 每张网页的标题要清晰。推荐使用“欢迎光临××公司网站”字样,禁止出现“New Page”或“Untitled Document”字样。<BR>21、 网页版权信息清晰明了。主页版权信息推荐使用下列格式: </P> <P class=zt12>Best viewed with IE4.0, Resolution: 800×600.<BR>Copyright?001 ××××××,All right reserved.<BR>Designed by amayonline. </P> <P class=zt12>如果有需要采用中文推荐使用下列格式: </P> <P class=zt12>建议使用 800×600屏幕分辨率和IE4.0以上版本浏览器浏览本站<BR>版权所有: ××××××××××××××××公司 网站制作维护:AMAY </P> <P class=zt12>注:版权信息均使用小字体( 9pt),××××××为客户公司名称、公司英文名称较长时可采用域名(xxx.com)代替。AMAYONLINE超链至http://amayonline.myrice.com。“Best viewed with 800×600”、“建议使用800×600屏幕分辨率”在网页只适用于800×600时使用。网页只适用于1024×768时作相应修正。在网页只适用于IE时使用必须加上“IE4.0”字样。 </P> <P class=zt12>22、 未完成网页一律采用“网页正在建设中……”或“The Homepage is building……”字样,并加注网页版权信息。<BR>网站结构: <BR>23、 确保电子邮箱的超级链接正确无误。<BR>24、 文档间的超级链接必须使用相对路径、各超级链接正确无误。<BR>25、 网页的文件名命名规范,必须使用英文小写字母、数字或下划线。<BR>26、 网页存放文件夹必须清晰,网站根目录文件只放置index.htm或index.asp,HTML文件与图形文件应分开存放。各种语言版本的文件也应分开存放。如有特效情况,必须在readme.txt文件中说明。</P> <P></P> <P class=zt12><BR>总 论 </P> <P class=zt12>本规范既是一个开发规范,也是一个脚本语言参考,本规范并不是一个一成不变的必须严格遵守的条文,特殊情况下要灵活运用,做一定的变通。但是,请大家千万不要随意更改规范。如果有任何问题,请及时与我联系,我会及时更改本规范的相关代码样例和文档。 </P> <P class=zt12>基 本 要 求 </P> <P class=zt12>1. 在网站根目录中开设 images common temp 三个子目录,根据需要再开设 media 子目录, images 目录中放不同栏目的页面都要用到的公共图片,例如公司的标志、 banner 条、菜单、按钮等等; common 子目录中放 css 、 js, 、 php 、 include 等公共文件; temp 子目录放客户提供的各种文字图片等等原始资料; media 子目录中放 flash, avi, quick time 等多媒体文件 。 </P> <P class=zt12>2. 在根目录中原则上应该按照首页的栏目结构,给每一个栏目开设一个目录,根据需要在每一个栏目的目录中开设一个 images 和 media 的子目录用以放置此栏目专有的图片和多媒体文件,如果这个栏目的内容特别多,又分出很多下级栏目,可以相应的再开设其他目录。 </P> <P class=zt12>3. temp 目录中的文件往往会比较多,建议以时间为名称开设目录,将客户陆续提供的资料归类整理。 </P> <P class=zt12>4. 除非有特殊情况,目录、文件的名称全部用小写英文字母、数字、下划线的组合,其中不得包含汉字、空格和特殊字符;目录的命名请尽量以英文为指导,不到万不得已不要以拼音作为目录名称,经验证明,用拼音命名的目录往往连一个月后的自己都看不懂, </P> <P class=zt12>脚 本 编 写 </P> <P class=zt12>我们应该有一个脚本整体风格一致的概念,意思是一个月后和一个月前的你写的脚本风格保持一致,以及同一个工作组中不同的开发人员编写的脚本风格保持一致,因为我们不可能永远孤立的开发,你随时都有可能和三个月前的自己合作(你的客户要求改版),也经常要和工作室中不同的同事共同开发一个项目,还有可能被要求修改已经离职人员开发的脚本,当然你自己也有可能会扔下一个项目给后来的同事。 </P> <P class=zt12>1. Html 文件的通用模板: </P> <P class=zt12><html> <BR><!-- <BR>Generator: Sub Design Studio ( http://www.eastline.net.cn) <BR>Creation Data: 2000-8-1 <BR>Original Author: eastline <BR>--> <BR><head> <BR><title> 文档标题

    其他 meta 标 记
    rel="stylesheet" type="text/css" href="style/style.css">

    样式表定义

    客户端 Javascript 函数定义及初始化操作


    … …

    补充:
    为了保证网站能够与下一代的 web 语言 xml 标准兼容,所有的 HTML 标签的属性都要用单引号或者双引号括起,即我们应该写 而不 是 .

    2. 允许全文检索的页面,为了使 Internet 上的搜索引擎能够有效检索,在频道的首页的 html 的 之间应该加入 Keywords 和 Description 元标记,例如 :



    . CSS 文件的格式样例代码 :

    ???这里尤其要注意的是 a:link a:visited a:hover a:actived 的排列顺序一定要严格照上面的样例代码,否则或多或少会出问题。另外我们规定重定义的最先,伪类其次,自定义最后,便于自己和他人阅读!

    ???为了保证不同浏览器上字号保持一致,字号建议用点数 pt 和像素 px 来定义, pt 一般使用中文宋体的 9pt 和 11pt , px 一般使用中文宋体 12px 和 14.7px 这是经过优化的字号,黑体字或者宋体字加粗时,一般选用 11pt 和 14.7px 的字号比较合适。

    ???在写

    互相嵌套时,严格按照的规范,对于单独的一个
    来说,
    对齐,
    缩进两个半角空格, 中如果还有嵌套的表格,

    而应该是这样的:

    ???这是因为浏览器认为换行相当于一个半角空格,以上不规范的写法相当于无意中增加一个半角空格,如果确实有必要增加一个半角空格,也应该这样写:

    ???属于同一个级别 的

    也缩进两个半角空格,如果
    中没有任何嵌套的表格,
    结束标记应该与
    处于同一行,不要换行,

    如我们注意在源代码中不应有这样的代码:


     

    5. Width 和 height 的写法也有统一的规范,一般情况下只有一列的表格, width 写在

    一定是左首对齐的,另外不允许没有任何内容的空的单元格存在,高度大于等于 12px 的单元格应该 在
    之间写一 个   如果高度小于 12px, 则应该 在
    之间插入一个 1*1 大小的透明的 gif 图片,这是因为某些浏览器认为空单元格非法而不会予以解释。如果代码顺序较乱,在 DW3 中可以通过 command->apply souce formatting 进行重新整理!
    的标签内,只有一行的表格, height 写在

    标记,注意,一般情况下,请不要省略










    标记。 ?

    8. 请不要在网页中连续出现多于一个 的   也尽量少使用全角空格(英文字符集下,全角空格会变成乱码),空白应该尽量使用 text-indent, padding, margin, hspace, vspace 以及透明的 gif 图片来实现。

    9. 中英文混排时,我们尽可能的将英文和数字定义为 verdana 和 arial 两种字体。

    10. 行距建议用百分比来定义,常用的两个行距的值是 line-height:120%/150%.?

    11. 网站中的路径全部采用相对路径,一般链接到某一目录下的缺省文件的链接路径不必写全名,如我们不必这样:
    而应该这样: ?

    12 、嵌入图形文本的使用较大的字体,建议不要在图形中包括文本。

    13 、“网页大小”定义为网页的所有文件大小的总和,包括 HTML 文件和所有的嵌入的对象。用户喜欢快的而不是新奇的站点。对于解调器用户,网页大小保持在 34K 以下为合适。

    文 件 命 名 原 则 ?

    1. 每一个目录中应该包含一个缺省的 html 文件,文件名统一用 index.htm?

    2 . 件名称统一用小写的英文字母、数字和下划线的组合。

    3. 命名原则的指导思想一是使得你自己和工作组的每一个成员能够方便的理解每一个文件的意义,二是当我们在文件夹中使用“按名称排例”的命令时,同一种大类的文件能够排列在一起,以便我们查找、修改、替换、计算负载量等等操作 。

    4. 下面以“新闻”(包含“国内新闻”和“国际新闻”)这个栏目来说明 html 文件的命名原则

    ☆ 在根目录下开设 news 目 录

    ☆ 第一条缺省新闻取名 index.htm?

    ☆ 所有属于“国内新闻”的新闻依次取名为: china_1.htm, china_2.htm, …

    ☆ 所有属于“国际新闻”的新闻依次取名为: internation_1.htm, internation _2.htm, …

    ☆ 如果文件的数量是两位数,请将前九个文件命名为: china_01.htm, china_02.htm 以保证所有的文件能够在文件夹中正确排序。

    5. 图片的命名原则遵循以下几条规范 :

    ☆ 名称分为头尾两两部分,用下划线隔开。

    ☆ 头部分表示此图片的大类性质,例如广告、标志、菜单、按钮等等 。

    ☆ 一般来说 :?

    放置在页面顶部的广告、装饰图案等长方形的图片我们取名: banner?
    标志性的图片我们取名为: logo?
    在页面上位置不固定并且带有链接的小图片我们取名为 button?
    在页面上某一个位置连续出现,性质相同的链接栏目的图片我们取名: menu?
    装饰用的照片我们取名: pic?
    不带链接表示标题的图片我们取名: title?
    依照此原则类推。

    ☆ 尾部分用来表示图片的具体含义。

    ☆ 下面是几个样例,大家应该能够一眼看明白图片的意义:
    banner_sohu.gif banner_sina.gif menu_aboutus.gif menu_job.gif title_news.gif logo_police.gif logo_national.gif pic_people.jpg pic_hill.jpg.

    设计流程规范

    <1> 、收集网站前期资料以及所需文档
    网站策划人员先期分析网站的目的,并分析出网站的功能情况、定位以及初步栏目的规划描述。然后根据策划方案去收集相关资料
    l 小组讨论开会 ----- 分析网站目的和功能情况 ------ 主要负责人签字 ------ 生效并打印文档

    <2> 、将策划方案打印给小组成员人手一份,开始设计人员进行设计工作。
    根据策划文档及网站设计规范,主要设计人员进行前期的首页设计。
    l 小组负责人确定设计进程时间并派任务单 ------ 主要设计人员开始设计 ----- 递交审核 ------ 通过后主要负责人签字

    <3> 、根据网站的模式和特点以及网站制作规范定制出最适当的标准样式
    l 主要负责人与策划人员、主要网站制作人员定制标准样式 ---- 打印并小组成员人手一份

    <4> 、设计人员进行二级页面设计工作
    l 依照网站设计规范和标准样式 ------ 由小组负责人确定设计进程时间并派任务单 ----- 主要设计人员开始设计工作 ----- 递交审核 ----- 通过后主要负责人签字

    <5> 、制作人员开始制作工作
    l 依照网站设计规范和标准样式 ------ 由小组负责人确定制作进程时间并派任务单 ----- 主要制作人员开始内容建设工作 ----- 与程序方面配合人员协调工作 ------ 递交审核 ----- 通过后主要负责人签字

    <6> 、程序开发阶段
    l 所有工作人员开始与程序上的结合页面修改工作

    <7> 、完成
    网站策划人员把所有有关网站的备份文件以及原程序备份,并书写一份网站跟踪报告。说明此网站的建设工作的开始到结束所用资源人力以及执行情况。

    <8> 、 QA 部门进行测试工作

    注:
    + 主要负责人包括所有参与网站项目的负责人,每个负责人做到审核签字。
    + 所有工作人员进行工作时必须在规定的工作时间内完成工作,不能完成工作的有权承担一定的责任。
    + 在主要负责人通过后,任何人不得以理由修改页面设计工作,特殊情况除外。
    + 网站策划人员必须及时跟踪网站建设情况并记录下来。安排任务进程。

    的标签内,多行多列的表格, width 和 height 写在第一行或者第一列的
    标签内。总之遵循一条原则:不出现多于一个的控制同一个单元格大小的 height 和 width, 保证任何一个 width 和 height 都是有效的,也就是你改动代码中任何一个 width 和 height 的数值,都应该在浏览器中看到变化。做到这一条不容易,需要较长时间的练习和思考。

    一 般 原 则 ?

    1. 在排布表格之前,请大家一定要好好思考一个最佳的方案,表格的嵌套尽量控制在三层以内,并且应该尽量避免 两个标记,经验表明,这两个标记会带来许多麻烦。

    2. 一个网页要尽量避免用整个一张大表格,所有的内容都嵌套在这个大表格之内,因为浏览器在解释页面的元素时,是以表格为单位逐一显示,如果一张网页是嵌套在一个大表格之内,那么很可能造成的后果就是,当浏览者敲入网址,他要先面对一片空白很长时间,然后所有的网页内容同时出现。如果必须这样做,请使用

    标记,以便能够使这个大表格分块显示。 3. 排版中我们经常会遇到需要进行首行缩进的处理,不要使用   或者全角空格来达到效果,规范的做法是在样式表中定义 p { text-indent: 2em; } 然后给每一段加上 结束标记 。 4. 原则上,我们禁止用 来人为干预图片显示的尺寸,而且建议 标签中不要带上 width 和 height 两个属性,这是因为制作过程中,图片往往需要反复的修改,这样可以避免人为干预图片显示的尺寸,尽可能的发挥浏览器自身的功能;但是这样的一个副作用是当网页还未加载图片时,不会留出图片的站位大小,可能会造成网页在加载过程中抖动(如果图片是插在一个固定大小的表格里的,不会有这个现象),尤其是当图片的尺寸较大时,这种现象会很明显,所以当预料到这种会明显导致网页抖动的情况会发生时,请大家务必在最后给 附上 width 和 height 属性。 5. 为了最大程度的发挥浏览器自动排版的功能,在一段完整的文字中请尽量不要使用 来人工干预分段。 6. 不同语种的文字之间应该有一个半角空格,但避头的符号之前和避尾的符号之后除外汉字之间的标点要用全角标点,英文字母和数字周围的括号应该使用半角括号。 7. 所有的字号都应该用样式表来实现,禁止在页面中出现
    展开全文
  • 浙江高校师生语言表达受方言影响根深蒂固,语言不规范现象非常普遍,这对浙江省普通话推广工作和语言文字规范工作产生了一定的负面影响。文章总结了几类浙江高校语言不规范现象,从语言使用群体文化特点、语言本身发展...
  • 中国少数民族语言文字

    千次阅读 2009-01-16 09:58:00
    中国少数民族语言文字-----泱泱中华文明中国是一个统一的多民族国家,民族多、语言多、文字多。除汉族外,已确定民族成分的有五十五个少数民族,约占全国人口总数的8%,分布在占全国总面积50%~60%的土地上。 ...

     中国少数民族语言和文字-----泱泱中华文明

    中国是一个统一的多民族国家,民族多、语言多、文字多。除汉族外,已确定民族成分的有五十五个少数民族,约占全国人口总数的8%,分布在占全国总面积50%~60%的土地上。

      一、中国少数民族的语言

     

      中国境内的语言非常丰富,这在世界上是罕见的。五十五个少数民族中,除回族、满族已全部转用汉语外,其他五十三个民族都有自己的语言。据统计,在中国,少数民族正在使用的语言有72种左右,已经消亡的古代语言更是不计其数。说它“左右”是因为有的是语言还是方言不好界定,还有的语言可能还未发现。

     

      五十五个少数民族中,除回族、满族已全部转用汉语外,其他五十三个民族都有自己的民族语言。有些民族内部不同支系还使用着不同的语言(不包括转用或者兼用汉语的情况):瑶族的不同支系分别使用勉语、布努语和拉珈语;高山族的不同支系分别使用泰耶尔语、赛德语、邹语、沙阿鲁阿语、卡那卡那布语、排湾语、阿眉斯语、布农语、鲁凯语、卑南语、邵语、萨斯特语、耶眉语共13种语言;景颇族的不同支系分别使用景颇语、载瓦语;怒族的不同支系分别使用怒苏语、阿侬语、柔若语;裕固族使用东部裕固语、西部裕固语;门巴族使用门巴语、仓拉语。

     

      语言学家按世界各民族语言的亲流程度将语言分为语系、语族、语支。在历史发展过程中,一种语言可以分化成几种不同语言,它们之间有亲属关系,称为“亲属语言”,这是历史上社会分化的产物。当一个社会在地域上分化成若干半独立社会时,语言也分化成若干方言;当社会再分化为几个不同的独立社会时,语言进一步分化成亲属语言。因此语言的亲疏关系表明了民族间在历史上、族源上的亲疏程度。

     

      许多民族用本族文字记载本族的历史、文字、医学、宗教及其他文化宝藏,无文字的民族则以口头文学(诗歌、神话传说、民间故事、民歌等)记载并传承着本民族的文化精粹。

     

    --------------------------------------------------------------------------------

     

    --  作者:妙语

    --  发布时间:2008-6-2 10:42:24

    -- 

    数千年华夏历史长河中,各民族历经变迁,中外民族和古代诸民族间的迁徙、交融,形成今日中国民族语言的五大语系:

      ⑴汉藏语系的民族共31个,分为:

      ①壮侗语族(含壮傣语支、侗水语支、黎语支)-壮语、侗语、傣语、布依语、水语、仫佬语、毛南语、拉珈语、仡佬语、黎语等;

      ②藏缅语族(含藏语支、彝语支、景颇语支、羌语支)-藏语、嘉戎语、门巴语、珞巴语、土家语、羌语、普米语、独龙语、怒语、彝语、僳僳语、纳西语、哈尼语、拉祜语、白语、基诺语、景颇语、载瓦语、阿昌语等;

      ③苗语语族(含苗语支、瑶语支)-苗语、布努语、勉语、畲语等;

      ④汉语。

     

      ⑵阿尔泰语系共19个民族,分为:

      ①突厥语族-维吾尔语、哈萨克语、柯尔克孜语、乌孜别克语、塔塔尔语、撒拉语、图瓦语、西部裕固语;

      ②蒙古语族-蒙古语、达斡尔语、东乡语、东部裕固语、土族语、保安语;

      ③满-通古斯语族(含满语支、通古斯语支)-满语、锡伯语、赫哲语、鄂温克语、鄂伦春语。

     

      ⑶南亚语系有三个民族,包括云南的佤族、德昂族和布朗族,都属于孟高棉语族-佤语、德昂语、布朗语。⑷南岛语系仅高山族一个民族,属于印度尼西亚语族-排湾语、布嫩语、阿眉斯语等。

     

      ⑸印欧语系有两个民族,分为:伊朗语族-塔吉克语(塔吉克族)和斯拉夫语族(东斯拉夫语支)-俄罗斯语(俄罗斯族)。

     

      此外还有朝鲜语和京语,它们究竟属于哪个语系,现在还不清楚。

     

      现有的少数民族语言,都是经历了历史上语言功能竞争的考验而在长期的使用过程中发展起来的,这些语言发展至今成为本族母语,是客观实际需要决定的,都有其客观必然性。各民族都热爱自己民族的语言文字,把语言文字看成民族特征的重要方面,当作民族的宝贵财富,并对民族语言文字有着统一的愿望和意识;同时对本族文字又不同程度地存在着一种稳固或守旧的心理。

     

      现在除少数几个民族程度不同地转用了汉语外,多数民族以本族语言作为日常生活的主要交际工具;一些民族有传统的文字,一些民族使用新创文字。少数民族语言文字在少数民族社会生活中起着十分重要的、其他民族的语言文字无法完全替代的作用。

     

      目前少数民族语言的使用情况大致有以下三种类型:

     

      第一种类型,如蒙古、藏、维吾尔、哈萨克、朝鲜等族,有大片聚居区,人口均在百万以上,文字历史也比较悠久,他们的语言除了在家庭内部、邻里亲友间使用外,还在本民族的政治、经济、文化、教育各个领域中使用,甚至在一些邻近的或者杂居在一起的其他民族中使用。

     

      第二种类型,如彝族和傣族,他们虽然也有成片的聚居区,有传统的文字,但是文字没有统一的规范,方言差异也较大,本民族的语言在社会上的应用不如蒙古、藏、维吾尔、哈萨克、朝鲜等民族那么广泛。壮语和傈僳语、拉祜语、景颇语、载瓦语由于语言内部差别较大,全民族通用的共同语还没有形成,文字的使用范围也很小,语言使用情况与彝语、傣语接近。

     

      第三种类型,民族的语言只在本民族内部日常生活中使用

     

    --------------------------------------------------------------------------------

     

    --  作者:妙语

    --  发布时间:2008-6-2 10:42:38

    -- 

    用其他民族的语言(主要是汉语,有些地方也使用其他少数民族语言);没有与本民族语言相一致的文字,一般使用汉字。属于这个类型的少数民族语言相当多,大约占语言总数的四分之三以上,使用人口占少数民族总人口的一半以上。

      五十五个少数民族使用语言的情况列表如下(不包括兼用汉语或其他少数民族语言的情况):民族名称 使用语言的名称

     

      蒙古族   蒙古语

      回族    汉语

      藏族    藏语

      维吾尔族  维吾尔语

      苗族    苗语

      彝族    彝语

      壮族    壮语

      布依族   布依语

      朝鲜族   朝鲜语

      满族    汉语

      侗族    侗语

      瑶族    勉语、布努语、拉珈语

      白族    白语

      土家族   土家语

      哈尼族   哈尼语

      哈萨克族  哈萨克语

      傣族    傣语

      黎族    黎语

      傈僳族   傈僳语

      佤族    佤语

      畲族    畲语 高山族  泰耶尔语、赛德语、邹语、沙阿鲁阿语、卡那卡那布语、排湾语、阿眉斯语、布农语、鲁凯语、卑南语、邵语、萨斯特语、耶眉语

      拉祜族   拉祜语

      水族    水语

      东乡族   东乡语

      纳西族   纳西语

      景颇族   景颇语、载瓦语

      柯尔克孜族 柯尔克孜语

      土族    土族语

      达斡尔族  达斡尔语

      仫佬族   仫佬语

      羌族    羌语

      布朗族   布朗语

      撒拉族   撒拉语

      毛难族   毛难语

      仡佬族   仡佬语

      锡伯族   锡伯语

      阿昌族   阿昌语

      普米族   普米语

      塔吉克族  塔吉克语 怒族    怒苏语、阿侬语、柔若语

      乌孜别克族 乌孜别克语

      俄罗斯族  俄罗斯语

      鄂温克族  鄂温克语

      德昂族   德昂语

      保安族   保安语

      裕固族   东部裕固语、西部裕固语

      京族    京语

      塔塔尔族  塔塔尔语

      独龙族   独龙语

      鄂伦春族  鄂伦春语

      赫哲族   赫哲语

      门巴族   门巴语、仓拉语

      珞巴族   珞巴语

      基诺族   基诺语

     

    --------------------------------------------------------------------------------

     

    --  作者:妙语

    --  发布时间:2008-6-2 10:43:02

    -- 

    二、中国少数民族的文字

      文字是书写语言的符号,它产生以后,克服了语言的时空限制,扩大了信息传播,增加了文化积累,对社会的发展产生了巨大的推动作用。

     

      在中国,汉字不但是汉族的文字,也是全国各个少数民族通用的文字,是在国际活动中代表中国的法定文字。全民族都通用汉语的几个少数民族,很自然地以汉字作为自己的文字,没有与自己语言相一致的文字的少数民族,大多也选择了汉字作为自己的文字。汉、回、满三个民族通用汉文,蒙古、藏、维吾尔、哈萨克、柯尔克孜、朝鲜、彝、傣、拉祜、景颇、锡伯、俄罗斯12个民族各有自己的传统文字。这些文字多数都有较长的历史,有的文字如藏文、彝文已经有一千多年的历史,其他文字也都有几百年的历史。它们大部分已经有比较规范的习惯用法,使用范围较广,影响也较大。苗文和壮文虽然创制时间不长,但使用人数也较多。其中蒙古族使用一种竖写的拼音文字,通用于蒙古族地区。居住在新疆的蒙古族还使用一种以通用的蒙古文为基础而适合卫拉特方言特点的拼音文字。云南傣族在不同地区使用4种傣文。上述15个民族共使用17种文字。

     

    此外,傈僳族中大部分信仰基督教的群众,使用一种用大写拉丁字母及其颠倒形式的字母拼写傈僳语的文字,还有少数人使用当地农民创制的傈僳音节文字“竹书” 。云南省东北部一部分信仰基督教的群众使用一种把表示声、韵、调的符号拼成方块的苗文。云南佤族中信仰基督教的少数群众使用拉丁字母形式的佤文。壮族、白族和瑶族中还有一部分人使用在汉字影响下创制的方块壮字、方块白文和方块瑶字。

     

     还有一些在历史上使用过,后来停止使用的文字,即突厥文、回鹘文、察合台文、于阗文、焉耆-龟兹文、窣利文、八思巴字、契丹大字、契丹小字、西夏文、女真文、东巴图画文字、沙巴图画文字、东巴象形文字、哥巴文、水书、满文等17种文字。

     

      现在中国五十五个少数民族中,除回族、满族已不使用自己民族的文字而直接使用汉字外,有29个民族有与自己的语言相一致的文字,由于有的民族使用一种以上的文字,如傣语使用4种文字,景颇族使用2种文字,所以29个民族共使用54种文字。列表如下:

     

      民族名称  使用文字的名称

     

      蒙古族   传统蒙文、托忒文

      藏族     藏文

      维吾尔族   维吾尔老文字、维吾尔新文字

      苗族    老苗文、黔东苗文、湘西苗文、川黔滇苗文、滇东北苗文(后4种为新创)

      彝族     爨文、规范彝文

      壮族     方块壮字、壮文(新创)

      布依族    布依文(新创)

      朝鲜族    朝鲜文

      侗族     侗文(新创)

      瑶族     门方言文字、勉方言文字

      白族     老白文、白文(新创)

      土家族    土家文(新创)

      哈尼族    哈雅文、碧卡文(均为新创) 哈萨克族   哈萨克老文字、哈萨克新文字

      傣族    老傣仂文、新傣仂文、老傣那文、新傣那文、傣绷文、金平、傣文

      黎族     黎文(新创)

      傈僳族   老傈僳文(大写拉丁字母的拼音文字、格框式拼音文字、表音的音节文字)、新傈僳文

      佤族     撒拉语、佤文(新创)

      拉祜族    拉祜文

      水族     水书

      纳西族    东巴文、哥巴文、玛丽萨文、纳西文(新创)

      景颇族    景颇文、载瓦文(新创)

      柯尔克孜族  柯尔克孜文

      土族     土文(新创)

      羌族     羌文(新创)

      锡伯族    锡伯文

      俄罗斯族   俄文

      独龙族    独龙文(新创)

      基诺族    基诺文(新创一些只有语言没有文字的民族,为了保存并发展民族文化,扩大信息来源,提高科学水平,千方百计地创造文字。中华人民共和国成立后,主要是二十世纪五十年代,政府组织语言学专家、少数民族知识分子经过调查研究,先后为壮、布依、彝、苗、哈尼、傈僳、纳西、侗、佤、黎等10个民族制订了14种拉丁字母形式的文字方案,其中,分别为苗语的不同方言制订了4种文字方案,为哈尼语的不同方言制订了2种文字方案。后来又为景颇族的载瓦支系制订了拉丁字母形式的载瓦文方案,为土族制订了拉丁字母形式的土文方案。二十世纪八十年代年代根据本民族的要求,又为白、独龙、土家、羌、基诺等民族设计了拼音文字方案。

     

        藏、彝、蒙古、维吾尔、哈萨克、柯尔克孜、朝鲜、傣等民族都有自己的传统文字,有的文字如藏文、彝文已经有一千多年的历史,其他文字也都有几百年的历史。它们大部分已经有比较规范的习惯用法,使用范围较广,影响也较大。苗文和壮文虽然创制时间不长,但使用人数也较多。

     

    --------------------------------------------------------------------------------

     

    --  作者:妙语

    --  发布时间:2008-6-2 10:43:36

    -- 

     

    少数民族文字

     

    文字是记录和传达语言的书写符号。有的民族在古代就创造了自己的文字,并且从古至今一直使用这种文字。有的民族使用过古文字,其间又换用其他文字。有的民族使用几种文字,但由于历史的的各种原因,有的民族还没有创造和使用文字。新中国建立以前曾拥有和使用本民族文字的,有藏、蒙古、维吾尔、哈萨克、柯尔克孜、朝鲜、傣、彝、俄罗斯、苗、纳西、水、拉祜、景颇、锡伯等民族。

     

    少数民族文字大都是拼音文字,但在书写形式上各有不同,比如维吾尔文、哈萨克文,是从右往左书写;蒙古文、锡伯文是从上往下书写,行序从左往右;有的标点符号也不同,如藏文标点,短词和句尾用一条垂直线表示,章节段落结尾用双垂直线,全文结束用四条垂直线;蒙古文用一个点表示逗号,两点表示句号,段落末尾用四个点表示。

     

    新中国少数民族语言文字的发展新中国成立以来,国家为促进少数民族文化教育事业的发展,帮助一些少数民族改进和创制了文字,先后对傣、彝、景颇、拉祜文字行了改革,同时采用拉丁字母帮助壮、布依、苗、黎、纳西、僳僳、哈尼、佤、侗等十几个民族设计了十四种文字方案,以便于书写、学习和印刷出版。目前,我国已正式使用和经国家批准推行的少数民族文字有19种,它们是蒙古文、藏文、维吾尔文、朝鲜文、壮文、哈萨克文、锡伯文、傣文、乌孜别克文、柯尔克孜文、塔塔尔文、俄罗斯文、彝文、纳西文、苗文、景颇文、僳僳文、拉祜文和佤文。

     

     

     

    鄂温克族、布朗族、得昂族、普米族、保安族、裕固族、怒族、门巴族、珞巴族、畲族等民族都没有文字

     

    展开全文
  • 我为什么放弃Go语言

    万次阅读 多人点赞 2014-04-14 19:24:19
    我为什么放弃Go语言?有好几次,当我想起来的时候,总是会问自己:这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。开门见山地说,我当初放弃Go语言,就是因为两个“不爽”:第一,对Go语言...

    我为什么放弃Go语言

    作者:庄晓立(Liigo)

    日期:2014年3月

    原创链接:http://blog.csdn.net/liigo/article/details/23699459

    转载请注明出处:http://blog.csdn.net/liigo

    有好几次,当我想起来的时候,总是会问自己:我为什么要放弃Go语言?这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。

    开门见山地说,我当初放弃Go语言(golang),就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽。毫无疑问,这是非常主观的结论。但是我有足够详实的客观的论据,用以支撑这个看似主观的结论。

    第-1节:更新日志(倒叙)

    Liigo 2021-07-13 补记14:今日HN热帖上大伙普遍吐槽channel,要用好真的很难。judofyr: "Channels are extremely subtle in my experience". laumars: "It took me a loooong time to fully wrap my head around channels. They’re definitely not explicit and full of subtle yet devastating bugs when used inappropriately (which is all to easy to do too)." 💡 另将本文更新日志从文末移至文首作为第-1节,并改为按日期倒叙排列。

    Liigo 2020-2-19 补记13:本文末尾增加Golang 2.0泛型相关信息。

    Liigo 2016-5-15 补记12:文中第2节(我为什么对Go社区的人不爽)增加netroby和D语言联合创始人的现身说法。补充说明Go 1.5后不再使用C语言开发。

    Liigo 2016-3-3 补记11:文中1.5节(垃圾回收器/GC)末尾增加一段,再次提示开发者重视Go语言GC的潜在问题。

    Liigo 2015-7-17 补记10:文中1.11节(泛型)增加来自HN的延伸阅读链接,开发者们抱怨Go欠缺泛型支持。

    Liigo 2015-7-3 补记9:文中1.5节(垃圾回收器/GC)增加 “Stop the world” 相关的三个链接。

    Liigo 2015-7-2 补记8:前两天网上出现了一篇本文的驳文,《驳狗屎文 "我为什么放弃Go语言"》,作者是chai2010,请读者们参照阅读,顺便领略一下本文后半部分描述过的Go粉的"风采"。(这篇驳文至少有两个好处:1 它全文引用了本文(便于读者参照);2 使用了本文当时的最新版(包含了补记7)。)

    Liigo 2015-6-2 补记7:补充两篇英文:Why Go Is Not Good(作者Will Yager重点批评了Go语言的设计不佳甚至是倒退),Leaving Go(作者Danny Gratzer放弃Go语言的原因主要是:没有泛型,充满黑魔法)。这两篇文章都是针对具体问题做具体分析的,与本文写作精神一致,务实不务虚。其中提到的对Go语言不满的地方,本文也多有涉及,结论类似。

    Liigo 2015-5-29 补记6:补充说明Go语言直到2015年下半年1.5发布后才将GOMAXPROCS设置为大于1的默认值(HN),他们文中承认之前一直默认设置为1是因为调度器不完善(与我此文最初发表时的猜测一致)。

    Liigo 2015-4-1 补记5:文中1.10(黑魔法)和1.12(接口)章节增加了两处“延伸阅读”链接,被引用的链接后面均有大量网友评论。此举主要是为了说明本文观点并非一家之言。

    Liigo 2015-1-31 补记4:全世界认为Go语言不好的可不只是我Liigo一个人。国外著名的问答网站Quora上面有个人气很高的提问,“为什么不要用Go语言”(英文网页),看看那排名最前的两个答案,以及广大程序员们给这两个答案的数百个“赞”,都足以说明Go语言自身的问题是客观存在的。人民群众的眼睛是雪亮的。

    Liigo 2014-4-29 补记3:Go语言的拥护者们,似乎连Go语言的“核心优势”都说不出几条。知乎上很有人气的一条问答《为什么要使用 Go 语言,Go 语言的优势在哪里》,连静态编译、GC、跨平台都拿出来说了(无视C/C++/Java),甚至连简单易学(无视Python/易语言)、“丰富的”标准库(跟谁比?敢跟Java/C#/Python比么?)、好用的工具链(gofmt)都扯出来了,可见除了“并发、网络”之外,他们也讲不出另外的什么核心优势了,只能靠一些周边的东西凑数。

    Liigo 2014-4-29 补记2:著名的编程语言研究专家王垠写了一篇《对 Go 语言的综合评价》(晚于本博文发表约三五天),也是总体上持批判态度,看衰Go语言。读者们可以对照阅读。

    Liigo 2014-4-29 补记1:Go语言社区还有一个很奇特的现象,就是中国社区独大,国外社区要小的多。有外国网友还专门写了一篇文章研究《为什么Golang中国社区独大》这个问题(文中也提到了我这篇博文)。通常来说,在IT和软件领域,向来都是国外先进国家引领技术潮流,然后国内缓慢跟进。而到了Go语言这里,恰恰反过来了,似乎暗示着在国外的主流软件开发技术人员并不怎么待见Go语言,Go只是在国内受到一帮人的盲目推崇而已,至于这帮人的眼光如何,反正我不看好。

    第0节:我的Go语言经历

    先说说我的经历吧,以避免被无缘无故地当作Go语言的低级黑。

    2009年底,Go语言(golang)第一个公开版本发布,笼罩着“Google公司制造”的光环,吸引了许多慕名而来的尝鲜者,我(Liigo)也身居其中,笼统的看了一些Go语言的资料,学习了基础的教程,因对其语法中的分号和花括号不满,很快就遗忘掉了,没拿它当一回事。

    两年之后,2011年底,Go语言发布1.0的计划被提上日程,相关的报道又多起来,我再次关注它,[重新评估][1]之后决定深入参与Go语言。我订阅了其users、nuts、dev、commits等官方邮件组,坚持每天阅读其中的电子邮件,以及开发者提交的每一次源代码更新,给Go提交了许多改进意见,甚至包括[修改Go语言编译器源代码][2]直接参与开发任务。如此持续了数月时间。

    到2012年初,Go 1.0发布,语言和标准库都已经基本定型,不可能再有大幅改进,我对Go语言未能在1.0定型之前更上一个台阶、实现自我突破,甚至带着诸多明显缺陷走向1.0,感到非常失望,因而逐渐疏远了它(所以Go 1.0之后的事情我很少关心)。后来看到即将发布的Go 1.1的Release Note,发现语言层面没有太大改变,只是在库和工具层面有所修补和改进,感到它尚在幼年就失去成长的动力,越发失望。外加Go语言社区里的某些人,其中也包括Google公司负责开发Go语言的某些人,其态度、言行,让我极度厌恶,促使我决绝地离弃Go语言。

    在上一个10年,我(Liigo)在我所属的公司里,深度参与了两个编程语言项目的开发。我想,对于如何判断某个编程语言的优劣,或者说至少对于如何判断某个编程语言是否适合于我自己,我应该还是有一点发言权的。

    [1]: https://plus.google.com/+LiigoZhuang/posts/CpRNPeDXUDW

    [2]: http://blog.csdn.net/liigo/article/details/7467309

    第1节:我为什么对Go语言不爽?

    Go语言有很多让我不爽之处,这里列出我现在还能记起的其中一部分,排名基本上不分先后。读者们耐心地看完之后,还能淡定地说一句“我不在乎”吗?

    1.1 不允许左花括号另起一行

    关于对花括号的摆放,在C语言、C++、Java、C#等社区中,十余年来存在持续争议,从未形成一致意见。在我看来,这本来就是主观倾向很重的抉择,不违反原则不涉及是非的情况下,不应该搞一刀切,让程序员或团队自己选择就足够了。编程语言本身强行限制,把自己的喜好强加给别人,得不偿失。无论倾向于其中任意一种,必然得罪与其对立的一群人。虽然我现在已经习惯了把左花括号放在行尾,但一想到被禁止其他选择,就感到十分不爽。Go语言这这个问题上,没有做到“团结一切可以团结的力量”不说,还有意给自己树敌,太失败了。

    1.2 编译器莫名其妙地给行尾加上分号

    对Go语言本身而言,行尾的分号是可以省略的。但是在其编译器(gc)的实现中,为了方便编译器开发者,却在词法分析阶段强行添加了行尾的分号,反过来又影响到语言规范,对“怎样添加分号”做出特殊规定。这种变态做法前无古人。在左花括号被意外放到下一行行首的情况下,它自动在上一行行尾添加的分号,会导致莫名其妙的编译错误(Go 1.0之前),连它自己都解释不明白。如果实在处理不好分号,干脆不要省略分号得了;或者,Scala和JavaScript的编译器是开源的,跟它们学学怎么处理省略行尾分号可以吗?

    1.3 极度强调编译速度,不惜放弃本应提供的功能

    程序员是人不是神,编码过程中免不了因为大意或疏忽犯一些错。其中有一些,是大家集体性的很容易就中招的错误(Go语言里的例子我暂时想不起来,C++里的例子有“基类析构函数不是虚函数”)。这时候编译器应该站出来,多做一些检查、约束、核对性工作,尽量阻止常规错误的发生,尽量不让有潜在错误的代码编译通过,必要时给出一些警告或提示,让程序员留意。编译器不就是机器么,不就是应该多做脏活累活杂活、减少人的心智负担么?编译器多做一项检查,可能会避免数十万程序员今后多年内无数次犯同样的错误,节省的时间不计其数,这是功德无量的好事。但是Go编译器的作者们可不这么想,他们不愿意自己多花几个小时给编译器增加新功能,觉得那是亏本,反而减慢了编译速度。他们以影响编译速度为由,拒绝了很多对编译器改进的要求。典型的因噎废食。强调编译速度固然值得赞赏,但如果因此放弃应有的功能,我不赞成。

    1.4 错误处理机制太原始

    在Go语言中处理错误的基本模式是:函数通常返回多个值,其中最后一个值是error类型,用于表示错误类型极其描述;调用者每次调用完一个函数,都需要检查这个error并进行相应的错误处理:if err != nil { /*这种代码写多了不想吐么*/ }。此模式跟C语言那种很原始的错误处理相比如出一辙,并无实质性改进。实际应用中很容易形成多层嵌套的if else语句,可以想一想这个编码场景:先判断文件是否存在,如果存在则打开文件,如果打开成功则读取文件,如果读取成功再写入一段数据,最后关闭文件,别忘了还要处理每一步骤中出现错误的情况,这代码写出来得有多变态、多丑陋?实践中普遍的做法是,判断操作出错后提前return,以避免多层花括号嵌套,但这么做的后果是,许多错误处理代码被放在前面突出的位置,常规的处理逻辑反而被掩埋到后面去了,代码可读性极差。而且,error对象的标准接口只能返回一个错误文本,有时候调用者为了区分不同的错误类型,甚至需要解析该文本。除此之外,你只能手工强制转换error类型到特定子类型(静态类型的优势没了)。至于panic - recover机制,致命的缺陷是不能跨越库的边界使用,注定是一个半成品,最多只能在自己的pkg里面玩一玩。Java的异常处理虽然也有自身的问题(比如Checked Exceptions),但总体上还是比Go的错误处理高明很多。

    1.5 垃圾回收器(GC)不完善、有重大缺陷

    在Go 1.0前夕,其垃圾回收器在32位环境下有内存泄漏,一直拖着不肯改进,这且不说。Go语言垃圾回收器真正致命的缺陷是,会导致整个进程不可预知的间歇性停顿(Stop the World)。像某些大型后台服务程序,如游戏服务器、APP容器等,由于占用内存巨大,其内存对象数量极多,GC完成一次回收周期,可能需要数秒甚至更长时间,这段时间内,整个服务进程是阻塞的、停顿的,在外界看来就是服务中断、无响应,再牛逼的并发机制到了这里统统失效。垃圾回收器定期启动,每次启动就导致短暂的服务中断,这样下去,还有人敢用吗?这可是后台服务器进程,是Go语言的重点应用领域。以上现象可不是我假设出来的,而是事实存在的现实问题,受其严重困扰的也不是一家两家了(2013年底ECUG Con 2013京东的刘奇提到了Go语言的GC、defer、标准库实现是性能杀手,最大的痛苦是GC;美团的沈锋也提到Go语言的GC导致后台服务间隔性停顿是最大的问题。更早的网络游戏仙侠道开发团队也曾受Go垃圾回收的沉重打击)。在实践中,你必须努力减少进程中的对象数量,以便把GC导致的间歇性停顿控制在可接受范围内。除此之外你别无选择(难道你还想自己更换GC算法、甚至砍掉GC?那还是Go语言吗?)。跳出圈外,我近期一直在思考,一定需要垃圾回收器吗?没有垃圾回收器就一定是历史的倒退吗?(可能会新写一篇博客文章专题探讨。)

    2016年3月3日Liigo补记:直到2015年底,Go 1.5新GC发布后数月,仍获知有大陆圈内知名团队因为GC的原因考虑换掉Go语言,颇有感触。当软件系统逐步发展到更庞大更复杂的时候,Go语言的垃圾回收器(GC)就变成了指不定啥时候会出现的拦路虎,让人进退两难。进,暂时没有确切有效的技术手段对付响应延迟和内存暴涨;退,多年开发付出的心血付之东流损失惨重。语言选型之前多做调查分析,如果一定要用Go语言开发,控制系统规模和复杂度,避开底层的核心业务,可能是比较明智的选择。

    1.6 禁止未使用变量和多余import

    Go编译器不允许存在被未被使用的变量和多余的import,如果存在,必然导致编译错误。但是现实情况是,在代码编写、重构、调试过程中,例如,临时性的注释掉一行代码,很容易就会导致同时出现未使用的变量和多余的import,直接编译错误了,你必须相应的把变量定义注释掉,再翻页回到文件首部把多余的import也注释掉,……等事情办完了,想把刚才注释的代码找回来,又要好几个麻烦的步骤。还有一个让人蛋疼的问题,编写数据库相关的代码时,如果你import某数据库驱动的pkg,它编译给你报错,说不需要import这个未被使用的pkg;但如果你听信编译器的话删掉该import,编译是通过了,运行时必然报错,说找不到数据库驱动;你看看程序员被折腾的两边不是人,最后不得不请出大神:`import _`。对待这种问题,一个比较好的解决方案是,视其为编译警告而非编译错误。但是Go语言开发者很固执,不容许这种折中方案。

    1.7 创建对象的方式太多令人纠结

    创建对象的方式,调用new函数、调用make函数、调用New方法、使用花括号语法直接初始化结构体,你选哪一种?不好选择,因为没有一个固定的模式。从实践中看,如果要创建一个语言内置类型(如channel、map)的对象,通常用make函数创建;如果要创建标准库或第三方库定义的类型的对象,首先要去文档里找一下有没有New方法,如果有就最好调用New方法创建对象,如果没有New方法,则退而求其次,用初始化结构体的方式创建其对象。这个过程颇为周折,不像C++、Java、C#那样直接new就行了。

    1.8 对象没有构造函数和析构函数

    没有构造函数还好说,毕竟还有自定义的New方法,大致也算是构造函数了。没有析构函数就比较难受了,没法实现RAII。额外的人工处理资源清理工作,无疑加重了程序员的心智负担。没人性啊,还嫌我们程序员加班还少吗?C++里有析构函数,Java里虽然没有析构函数但是有人家finally语句啊,Go呢,什么都没有。没错,你有个defer,可是那个defer问题更大,详见下文吧。

    1.9 defer语句的语义设定不甚合理

    Go语言设计defer语句的出发点是好的,把释放资源的“代码”放在靠近创建资源的地方,但把释放资源的“动作”推迟(defer)到函数返回前执行。遗憾的是其执行时机的设置似乎有些不甚合理。设想有一个需要长期运行的函数,其中有无限循环语句,在循环体内不断的创建资源(或分配内存),并用defer语句确保释放。由于函数一直运行没有返回,所有defer语句都得不到执行,循环过程中创建的大量短暂性资源一直积累着,得不到回收。而且,系统为了存储defer列表还要额外占用资源,也是持续增加的。这样下去,过不了多久,整个系统就要因为资源耗尽而崩溃。像这类长期运行的函数,http.ListenAndServe()就是典型的例子。在Go语言重点应用领域,可以说几乎每一个后台服务程序都必然有这么一类函数,往往还都是程序的核心部分。如果程序员不小心在这些函数中使用了defer语句,可以说后患无穷。如果语言设计者把defer的语义设定为在所属代码块结束时(而非函数返回时)执行,是不是更好一点呢?可是Go 1.0早已发布定型,为了保持向后兼容性,已经不可能改变了。小心使用defer语句!一不小心就中招。

    1.10 许多语言内置设施不支持用户定义的类型

    for in、make、range、channel、map等都仅支持语言内置类型,不支持用户定义的类型(?)。用户定义的类型没法支持for in循环,用户不能编写像make、range那样“参数类型和个数”甚至“返回值类型和个数”都可变的函数,不能编写像channel、map那样类似泛型的数据类型。语言内置的那些东西,处处充斥着斧凿的痕迹。这体现了语言设计的局限性、封闭性、不完善,可扩展性差,像是新手作品——且不论其设计者和实现者如何权威。延伸阅读:Go语言是30年前的陈旧设计思想,用户定义的东西几乎都是二等公民(Tikhon Jelvis)。

    1.11 没有泛型支持,常见数据类型接口丑陋

    没有泛型的话,List、Set、Tree这些常见的基础性数据类型的接口就只能很丑陋:放进去的对象是一个具体的类型,取出来之后成了无类型的interface{}(可以视为所有类型的基础类型),还得强制类型转换之后才能继续使用,令人无语。Go语言缺少min、max这类函数,求数值绝对值的函数abs只接收/返回双精度小数类型,排序接口只能借助sort.Interface无奈的回避了被比较对象的类型,等等等等,都是没有泛型导致的结果。没有泛型,接口很难优雅起来。Go开发者没有明确拒绝泛型,只是说还没有找到很好的方法实现泛型(能不能学学已经开源的语言呀)。现实是,Go 1.0已经定型,泛型还没有,那些丑陋的接口为了保持向后兼容必须长期存在着。延伸阅读:HN网友抱怨Go没有泛型

    1.12 实现接口不需要明确声明

    这一条通常是被当作Go语言的优点来宣传的。但是也有人不赞同,比如我。如果一个类型用Go语言的方式默默的实现了某个接口,使用者和代码维护者都很难发现这一点(除非仔细核对该类型的每一个方法的函数签名,并跟所有可能的接口定义相互对照),自然也想不到与该接口有关的应用,显得十分隐晦,不直观。支持者可能会辩解说,我可以在文档中注明它实现了哪些接口。问题是,写在文档中,还不如直接写到类型定义上呢,至少还能得到编译器的静态类型检查。缺少了编译器的支持,当接口类型的函数签名被改变时,当实现该接口的类型方法被无意中改变时,实现者可能很难意识到,该类型实现该接口的隐含约束事实上已经被打破了。又有人辩解说,我可以通过单元测试确保类型正确实现了接口呀。我想说的是,明明可以通过明确声明实现接口,享受编译器提供的类型检查,你却要自己找麻烦,去写原本多余的单元测试,找虐很爽吗?Go语言的这种做法,除了减少一些对接口所在库的依赖之外,没有其他好处,得不偿失。延伸阅读:为什么我不喜欢Go语言式的接口(老赵)。

    1.13 省掉小括号却省不掉花括号

    Go语言里面的if语句,其条件表达式不需要用小括号扩起来,这被作为“代码比较简洁”的证据来宣传。可是,你省掉了小括号,却不能省掉大括号啊,一条完整的if语句至少还得三行吧,人家C、C++、Java都可以在一行之内搞定的(可以省掉花括号)。人家还有x?a:b表达式呢,也是一行搞定,你Go语言用if else写至少得五行吧?哪里简洁了?

    1.14 编译生成的可执行文件尺寸非常大

    记得当年我写了一个很简单的程序,把所有系统环境变量的名称和值输出到控制台,核心代码也就那么三五行,结果编译出来把我吓坏了:EXE文件的大小超过4MB。如果是C语言写的同样功能的程序,0.04MB都是多的。我把这个信息反馈到官方社区,结果人家不在乎。是,我知道现在的硬盘容量都数百GB、上TB了……可您这种优化程度……怎么让我相信您在其他地方也能做到不错呢。(再次强调一遍,我所有的经验和数据都来自Go 1.0发布前夕。)

    1.15 不支持动态加载类库

    静态编译的程序当然是很好的,没有额外的运行时依赖,部署时很方便。但是之前我们说了,静态编译的文件尺寸很大。如果一个软件系统由多个可执行程序构成,累加起来就很可观。如果用动态编译,发布时带同一套动态库,可以节省很多容量。更关键的是,动态库可以运行时加载和卸载,这是静态库做不到的。还有那些LGPL等协议的第三方C库受版权限制是不允许静态编译的。至于动态库的版本管理难题,可以通过给动态库内的所有符号添加版本号解决。无论如何,应该给予程序员选择权,让他们自己决定使用静态库还是动态库。一刀切的拒绝动态编译是不合适的。

    1.16 其他

    • 不支持方法和函数重载(overload)
    • 导入pkg的import语句后边部分竟然是文本(import ”fmt”)
    • 没有enum类型,全局性常量难以分类,iota把简单的事情复杂化
    • 定义对象方法时,receiver类型应该选用指针还是非指针让人纠结
    • 定义结构体和接口的语法稍繁,interface XXX{} struct YYY{} 不是更简洁吗?前面加上type关键字显得罗嗦。
    • 测试类库testing里面没有AssertEqual函数,标准库的单元测试代码中充斥着if a != b { t.Fatal(...) }
    • 语言太简单,以至于不得不放弃很多有用的特性,“保持语言简单”往往成为拒绝改进的理由。
    • 标准库的实现总体来说不甚理想,其代码质量大概处于“基本可用”的程度,真正到企业级应用领域,往往就会暴露出诸多不足之处。
    • 版本都发展到1.2了,goroutine调度器依旧默认仅使用一个系统线程。GOMAXPROCS的长期存在似乎暗示着官方从来没有足够的信心,让调度器正确安全地运行在多核环境中。这跟Go语言自身以并发为核心的定位有致命的矛盾。(直到2015年下半年1.5发布后才有改观
    • 官方发行版中包含了一个叫oracle的辅助程序,与Oracle数据库毫无关系,却完全无视两者之间的名称混淆。

    上面列出的是我目前还能想到的对Go语言的不爽之处,毕竟时间过去两年多,还有一些早就遗忘了。其中一部分固然是小不爽,可能忍一忍就过去了,但是很多不爽积累起来,总会时不时地让人难受,时间久了有自虐的感觉。程序员的工作生活本来就够枯燥的,何必呢。

    必须要说的是,对于其中大多数不爽之处,我(Liigo)都曾经试图改变过它们:在Go 1.0版本发布之前,我在其官方邮件组提过很多意见和建议(甚至包括提交代码CL),极力据理力争,可以说付出很大努力,目的就是希望定型后的Go语言是一个相对完善的、没有明显缺陷的编程语言。结果是令人失望的,我人微言轻、势单力薄,不可能影响整个语言的发展走向。1.0之前,最佳的否定自我、超越自我的机会,就这么遗憾地错过了。我最终发现,很多时候不是技术问题,而是技术人员的问题。

    第2节:我为什么对Go语言的某些人不爽?

    这里提到的“某些人”主要是两类:一、负责专职开发Go语言的Google公司员工;二、Go语言的推崇者和脑残粉丝。我跟这两类人打过很多交道,不胜其烦。再次强调一遍,我指的是“某些”人,而不是所有人,请不要对号入座。

    Google公司内部负责专职开发Go语言的核心开发组某些成员,他们倾向于闭门造车,固执己见,对第三方提出的建议不重视。他们常常挂在嘴边的口头禅是:现有的做法很好、不需要那个功能、我们开发Go语言是给Google自己用的、Google不需要那个功能、如果你一定要改请fork之后自己改、别干提意见请提交代码。很多言行都是“反开源”的。通过一些具体的例子,还能更形象的看清这一层。就留下作为课后作业吧。

    我最不能接受的就是他们对1.0版本的散漫处理。那时候Go还没到1.0,初出茅庐的小学生,有很大的改进空间,是全面翻新的最佳时机,彼时不改更待何时?1.0是打地基的版本,基础不牢靠,等1.0定型之后,处处受到向后兼容性的牵制,束手缚脚,每前进一步都阻力重重。急于发布1.0,过早定型,留下诸多遗憾,彰显了开发者的功利性强,在技术上不追求尽善尽美。

    Go语言的核心开发成员,他们日常的开发工作是使用C语言——Go语言的编译器和运行时库,包括语言核心数据结构和算法map、channel、scheduler,都是C开发的——真正用自己开发的Go语言进行实际的大型应用开发的机会并不多。虽然标准库是用Go语言自己写的,但他们却没有大范围使用标准库的经历。实际上,他们缺少使用Go语言的实战开发经验,往往不知道处于开发第一线的用户真正需要什么,无法做到设身处地为程序员着想。缺少使用Go语言的亲身经历,也意味着他们不能在日常开发中,及时发现和改进Go语言的不足。这也是他们往往自我感觉良好的原因。(2016年5月15日补记:2015年8月Go 1.5版本之后不再使用C语言开发。)

    Go语言社区里,有一大批Go语言的推崇者和脑残粉丝,他们满足于现状,不思进取,处处维护心中的“神”,容不得批评意见,不支持对语言的改进要求。当年我对Go语言的很多批评和改进意见,极少得到他们的支持,他们不但不支持还给予打击,我就纳闷了,他们难道不希望Go语言更完善、更优秀吗?我后来才意识到,他们跟乔帮主的苹果脑残粉丝们,言行一脉相承,具有极端宗教倾向,神化主子、打击异己真是不遗余力呀。简简单单的技术问题,就能被他们上升到意识形态之争。现实的例子是蛮多的,有兴趣的到网上去找吧。正是因为他们的存在,导致更多理智、清醒的Go语言用户无法真正融入整个社区。

    如果一个项目、团队、社区,到处充斥着赞美、孤芳自赏、自我满足、不思进取,排斥不同意见,拒绝接纳新方案,我想不到它还有什么前进的动力。逆水行舟,是不进反退的。

    2016年5月15日补记:@netroby:“Golang社区的神经病和固执,我深有体会。我曾经发过Issue,请求Golang官方,能为doc加上高亮,这样浏览器阅读文档的时候,能快速阅读代码参考。但是被各种拒绝. 他们的理由是很多开发者不喜欢高亮。” https://github.com/golang/go/issues/13178

    2016年5月15日补记:C++天才人物、D语言联合创始人Andrei Alexandrescu:“Go所走的路线在一些问题上持有极其强硬和死板态度,这些问题有大有小。在比较大的方面,泛型编程被严格控制,甚至贬低到只有"N"个字;有关泛型编程的讨论都是试图去劝阻任何有意义的尝试,这已经足够让人觉得耻辱。从长远来看,技术问题的政治化是一种极其有害的模式,所以希望Go社区能够找到修正它的方法。”  http://www.csdn.net/article/2015-12-20/2826517

    第3节:还有比Go语言更好的选择吗?

    我始终坚持一个颇有辩证法意味的哲学观点:在更好的替代品出现之前,现有的就是最好的。失望是没有用的,抱怨是没有用的,要么接受,要么逃离。我曾经努力尝试过接受Go语言,失败之后,注定要逃离。发现更好的替代品之后,无疑加速了逃离过程。还有比Go语言更好的替代品吗?当然有。作为一个屌丝程序员,我应该告诉你它是什么,但是我不说。现在还不是时候。我现在不想把这两门编程语言对立起来,引发另一场潜在的语言战争。这不是此文的本意。如果你非要从现有信息中推测它是什么,那完全是你自己的事。如果你原意等,它或许很快会浮出水面,也未可知。

    第4节:写在最后

    我不原意被别人代表,也不愿意代表别人。这篇文章写的是我,一个叫Liigo的80后屌丝程序员,自己的观点。你完全可以主观地认为它是主观的,也完全可以客观地以为它是客观的,无论如何,那是你的观点。

    这篇文字是从记忆里收拾出来的。有些细节虽可考,而不值得考。——我早已逃离,不愿再回到当年的场景。文中涉及的某些细节,可能会因为些许偏差,影响其准确性;也可能会因为缺少出处,影响其客观性。如果有人较真,非要去核实,我相信那些东西应该还在那里。

    Go语言也非上文所述一无是处,它当然有它的优势和特色。读者们判断一件事物,应该是优劣并陈,做综合分析,不能单听我一家负面之言。但是它的那些不爽之处,始终让我不爽,且不能从其优秀处得以完全中和,这是我不得不放弃它的原因。


    关于对作者倾向性质疑的声明

    读者看到本文全都是Go语言负面性的内容,没有涉及一点Go语言好的地方,因而质疑作者的盲目倾向。出现这种结果完全是因为文章主题所限。此前本文末尾也简单提到过,评估一件事物,应当优劣并陈,优势项加分,劣势项减分,做综合评估分析。如果有突出的重大优势,则可以容忍一些较大的劣势;但如果有致命的劣势或多项大劣势,则再大的优势也无法与之中和。中国乒乓球界讲领军人物必须做到“技术全面,特长突出,没有明显弱点”,我甚为赞同。用这句话套用Go语言,可以说“技术不全面(人家自己说成简洁),有一点特长(并发),有明显的弱点(包括但不限于本文列出的这些)”。如此一来,优势都被劣势中和了,劣势还是那么突出,自然是得负分,自然是弃用,自然是没有好印象。我在这里可以说观点鲜明、态度明确,不和稀泥。与其看那些盲目推崇Go语言的人和文章,笼统的说“好”,不如也顺便看看本文,具体到细节地说“不好”。凡是具体到细节的东西,都是容易证实或证伪的,比笼统的东西(无论是"黑"还是"粉")可信性更高一些。

    关于对作者阴谋论的声明

    有某些阴谋论者(例如谢某),说我因一个Pull Request被Go开发者拒绝而“怀恨至今”,暗示此文是故意报复、抹黑Go语言。我对Golang有恨吗?当然是有的,那是一个不爽接一个不爽(如本文一一罗列的那些),逐步累积,由量变形成质变的结果,是我对Golang综合客观评估之后的主观态度,并非由哪一个单独的事件所主导。要说Pull Request被拒绝,Rust开发者拒绝我的PR次数还少吗?比如 https://github.com/mozilla/rust/pull/13014 和 https://github.com/liigo/rust/tree/xp (https://github.com/rust-lang/rust/issues/12842),要是再算上被拒的Issues,那就多的数不清了。我显然不可能因为某些个别的事件,影响到我对某个事物的综合评估(参见前文)。那本文是“故意抹黑”Go语言吗?我觉得不是,理由有二:1、这是作者的主观感受,2、这些感受是以许多客观事实为基础的。如果本文一一列出的那些现象,是不存在的,是虚构出来的,是凭空生成的,那么作者一定是“低级黑”。问题是,那些都是客观存在的事实。把事实说出来,怎么能叫“黑”呢?欢迎读者客观而详细的指正本文中的所有错误。

    关于Golang 2.0的泛型

    今天(2020年2月19日)看到HN的一篇关于 Go2 Generics 的讨论。有网友说到:

    Ken Thompson and Rob Pike are mostly out not at all involved with Go anymore. They are 2/3 of the original creators. It’s different people making the decisions now.

    我找到如下两个链接基本证实了Rob Pike确实已经淡出Golang的核心开发组:

    Rob Pike最近两年仅提交了4k行无关紧要的代码;Ken Thompson就更不用说了,许多年前就已经淡出;Russ Cox似乎也不太参与Go2相关的决策。如此看来,对于Go2的泛型而言,非技术方面的障碍已不存在,剩下只是技术性障碍。

    Ian Lance Taylor 上周(2020年2月13日)说到

    We're working on it. Some things take time.

    展开全文
  • 自然语言处理研究的内容包括但不限于如下分支领域:文本分类、信息抽取、自动摘要、智能问答、话题推荐、机器翻译、主题词识别、知识库构建、深度文本表示、命名实体识别、文本生成、文本分析(词法、句法、语法)、...
  • JULIA编程规范

    千次阅读 2018-08-07 23:32:56
    在掌握一门语言的基本语法后,就可以一试身手,编写一些程序了。 但实际上,一切才刚刚开始! 在计算资源的各种限制下,在运行指标的各种要求中,若要使用某种语言编写出足够可靠、高效、稳定的程序,还需对该语言...
  • 强国的语言语言强国

    千次阅读 2006-04-12 13:03:00
    《强国的语言与语言强国》 作者:教育部语言文字信息管理司司长教育部语言文字应用研究所所长中国社会科学院研究生 李宇明 理论上语言是一律平等的,现实中语言是有强有弱的。语言的强弱与语言所属社团的强弱盛衰呈...
  • web开发规范 - html书写规范

    千次阅读 2019-06-30 17:05:14
    head区代码规范 head区是指HTML代码的和之间的内容。 更多meta标签请访问这篇文章 必须加入的标签 a) 公司版权注释 <!— The site is designed by EHM,Inc 07/2005 —> b) 网页显示字符集 简体中文: <meta...
  • UML建模学习1:UML统一建模语言简介

    万次阅读 2016-04-16 20:33:07
     Unified Modeling Language(UML又称为统一建模语言或标准建模语言)是国际对象管理组织OMG制定的一个通 用的、可视化建模语言标准,可以用来描述(specify)、可视化(visualize)、构造(construct)和记载(document)...
  • 【自然语言处理】详说中文自动分词

    千次阅读 多人点赞 2018-11-06 17:05:44
    文章目录中文自动分词前言一、 what is 中文分词二、中文分词的用途三、中文分词的特点和难点四、常见的中文分词方法五、中文分词工具1、HanLP 中文分词A、 python调用hanlp进行中文分词2、 BosonNLP3、 语言云:4、...
  • 转载请注明出处:... 本文章是根据众多公司的编程规范整理而成,如果错误,还请指出。 Android编程规范                         编写人 赵凯强 日期 2014-8-5 审核人
  • 文法和语言的基本知识

    千次阅读 2016-08-11 11:29:22
    主要内介绍内容是程序设计语言的定义,高级语言的一般特性,高级语言的语法描述,上下文无关文法,语法分析树和二义性,乔姆斯基文法体系。任何语言程序都可看成是一定字符集(称为字母表)上的一字符串(有限序列)...
  • HTML编码规范 - (WEB前端命名规范)

    万次阅读 多人点赞 2016-03-21 17:06:54
    HTML编码规范 - (WEB前端命名规范)
  • 伪代码规范

    千次阅读 多人点赞 2019-05-09 20:10:58
    原文链接:...使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语...
  • [深度学习] 自然语言处理 --- NLP入门指南

    千次阅读 多人点赞 2019-12-15 11:01:55
    自然语言处理(NLP)的一个最伟大的方面是跨越多个领域的计算研究,从人工智能到计算语言学的多个计算研究领域都在研究计算机与人类语言之间的相互作用。它主要关注计算机如何准确并快速地处理大量的自然语言语料库...
  • Web命名规范

    千次阅读 2018-04-12 16:20:56
    HTML编码规范(一)命名规则: 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:left right c...
  • Visual C# .NET 2003 语言的改变

    千次阅读 2004-11-09 16:43:00
    Visual C# .NET 2003 语言的改变 Prashant SridharanMicrosoft Corporation 2002年12月30日 适用于:Microsoft Visual Studio® C# 2003 摘要:为了与欧洲计算机制造商协会 (ECMA) 的 C# 规范完全兼容,Microsoft ...
  • Web前端开发规范手册

    千次阅读 多人点赞 2019-07-16 14:18:49
    动态语言文件命名原则2 文件存放位置3 css 书写规范4 html书写规范1.网页制作细节 ---- head区代码规范2.网页制作细节 ---- 字体3.网页制作细节 ---- 链接4.网页制作细节 ---- 表格5.网页制作细节 ---- 下载速度6....
  • 文字识别(一)--传统方案综述

    万次阅读 多人点赞 2019-02-17 12:48:15
    文字识别是计算机视觉研究领域的分支之一,归属于模式识别和人工智能,是计算机科学的重要组成部分,本文将以上图为主要线索,简要阐述在文字识别领域中的各个组成部分(更侧重传统非深度学习端到端方案)。...
  • 给外行能看懂的科普:这就叫自然语言处理如何向文科同学科普自然语言处理(NLP)? 刘知远,NLPer前几年曾经马少平老师的引荐,为某科普图书写过一篇短文介绍自然语言处理。如果只是介绍NLP的概念、任务和挑战,...
  • 自然语言处理讲义

    万次阅读 2004-06-27 15:41:00
    就计算机的应用而言,据统计用于数学计算的仅占10%,用于过程控制的不到5%,其余85%左右都是用于语言文字的信息处理。在这样的社会需求下,自然语言理解作为语言信息处理技术的一个高层次的重要方向,
  • 彩信之SMIL规范

    千次阅读 2014-02-25 10:50:10
    彩信之SMIL规范  上次给大家分析了短信问题,下面我分析下彩信,因为彩信不想短信只是一段文字。彩信有自己的协议格式,先给大大家介绍下彩信是什么,再给大家分析原创、发送、播放彩信问题。  彩信数据资源包,...
  • JAVA是解释型语言还是编译型语言

    万次阅读 2012-08-30 12:20:00
    JAVA是解释型语言还是编译型语言 Under J2SE | 三月 10th, 2010 1 comment   JAVA是解释型语言还是编译型语言 概念: 编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接...
  •  高级编程语言的发展历程(三)FORTRAN 语言是怎么来的  高级编程语言的发展历程(四)LISP 和 AI 的青梅竹马 A  高级编程语言的发展历程(五)LISP 和 AI 的青梅竹马 B  高级编程语言的发展历程(六)SCHEME...
  • OWASP-安全编码规范

    千次阅读 2021-05-31 23:27:48
    OWASP-安全编码规范 原文 pdfhttp//www.owasp.org.cn/owasp-project/download/OWASP_SCP_Quick_Reference_GuideChinese.pdf 1. 序言 本项目与技术无关的文档以清单列表的形式,定义了一套可以集成到软件开发生命周期...
  • iOS开发笔记 - 语言篇之Swift

    万次阅读 2016-03-20 18:18:44
    2014年的苹果全球开发者大会(WWDC),当Craig Federighi向全世界宣布“We have new programming language”(我们有了新的编程语言)的时候,全场响起了最热烈和持久的掌声,伴随着掌声到来的语言叫Swift。...
  • 前端代码规范手册

    千次阅读 2018-08-15 15:43:15
    现代软件架构都需要协同开发完成,高效 协作即降低协同成本,提升沟通效率,所谓无规矩不成方圆,无规范不能协作。众所 周知,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全。试想如 果没有限速,...
  • 编码规范(二)----JAVA编码规范插件

    千次阅读 2017-12-18 15:44:45
    在项目开发的过程中,很多时候,无法统一大家的编码规范,你有你的风格,我有我的风格,虽然每个公司都有自己的规范,但是有时候,作为开发人员的我们,写者写着,就按自己的来了,反正有没有人来检查,或者是人为的...
  • 在日常生活、工作中, 语言是人们交流的工具 中国人和中国人交流,使用中文语言 美国人和美国人交流,使用英文语言 人想要和计算机交流,使用计算机语言 可以看出在日常生活、工作中,人们使用的语言种类很多 如果一个很...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,592
精华内容 18,236
关键字:

关于规范语言文字方面的内容