# ProgrammingLanguage

# Flag

千万不要尝试用记忆力去替代自己的理解力!

代码不是靠死记硬背,而是不停的写、不停的思考,在反复的练习中熟练掌握的。

编程需要学习记住的是:不同的场景中一些实现方式的原理机制、思维方式,如:设计模式、排序算法、数据结构等,而不是具体的代码。

  1. 动态类型语言:运行时确定数据类型。
  2. 静态类型语言:编译时确定数据类型。
  3. 强类型语言:不允许隐式转换。
  4. 弱类型语言:允许隐式转换。

插件化

开源组织

基金会

开源个人

# 工具套件

# 语词法解析器

AST(Abstract Syntax Tree)-抽象语法树:抽象地将源代码根据语法生成对应的树状结构。

Lex(A Lexical Analyzer Generator)用于生成词法分析器,用于把输入分割成一个个有意义的词块(称为token)

Yacc(Yet Another Compiler-Compiler)用于生成语法解析器,用于确定上述分隔好的token之间的关联

Flex是由Vern Paxon实现的一个Lex,Bison则是GNU版本的YACC

# 其他语言

DSL(Domain Specification Language)领域语言,使用EBNF(Extended Backus–Naur Form)扩展巴斯科范式来描述语法

lowCode/noCode/低代码/零代码

# Scala

# TypeScript

# WebAssembly

# Lua

# Haskell

# 语言注释差异

语言 单行注释 多行注释 文档/特殊注释
C / C++ // /* */ /** */ (Doxygen)
Java // /* */ /** */ (Javadoc)
Python # ''' ''' / """ """ """ """ (docstring)
JavaScript // /* */ /** */ (JSDoc)
TypeScript // /* */ /** */ (TSDoc)
C# // /* */ /// (XML 文档)
PHP //# /* */ /** */ (PHPDoc)
Ruby # =begin ... =end # (YARD)
Go // /* */ // (godoc)
Rust // /* */ /// 文档注释,//! 模块文档
Swift // /* */ ////** */
Kotlin // /* */ /** */ (KDoc)
SQL -- /* */
Shell / Bash # : <<EOF ... EOF #!/bin/bash (Shebang)
Lua -- --[[ ]]
Perl # =pod ... =cut
R #
MATLAB % %{ %}
Haskell -- {- -}
Scala // /* */ /** */ (Scaladoc)
Groovy // /* */ /** */ (Groovydoc)
Dart // /* */ ////** */
Julia # #= =#
Elixir # @moduledoc, @doc
Erlang %
VB.NET ' ''' (XML 文档)
Delphi / Pascal //{} { }(* *)
Fortran !
COBOL *>
Assembly (x86) ;
Batch/CMD REM::
PowerShell # <# #>
Tcl #
VHDL --
Verilog // /* */
Sass / SCSS // /* */
YAML #
JSON
Markdown <!-- --> (HTML 注释)
LaTeX %