问题标签 [programming-languages]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
programming-languages - 流行语言的语言书籍/教程
不久前,我还是一名初级编码员,试图找到关于我想学习的语言的好书/教程。即便如此,有时我需要为我正在从事的新项目相对快速地学习一门语言。这篇文章的重点是记录这些语言的一些最佳教程和书籍。我将从我能找到的最好的开始列表,但希望你们可以提供更好的建议/新语言。这是我发现的:
由于现在这是 wiki 可编辑的,我将控制权交给社区。如果您有任何建议,请在此部分提出。我决定还添加一个部分,以便成为更好的程序员书籍和在线参考资料。再次,欢迎所有建议。
一般编程
在线教程
编程基础,作者:Karl Seguin - 来自 Codebetter,它基于 C#,但其想法在所有方面都是正确的,不敢相信实际上还没有人发布此内容。
How to Write Unmaintainable Code - 一本反手册,教你如何以最不可维护的方式编写代码。如果这些建议中的很多都不是那么真实,那就太有趣了。
Wiki Books 的编程部分- Jim Robert 建议在完成的不同阶段有大量关于多种语言的书籍/教程。
Just the Basics来感受一种语言。
Books
Code Complete - 这本书不言而喻,它在很多方面都非常出色。
The Pragmatic Programmer - 与编码大师一起工作的下一个最好的事情,教你他们所知道的一切。
掌握正则表达式- 正则表达式是每个程序员工具箱中必不可少的工具。这本书由 Patrick Lozzi 推荐,是了解他们能力的好方法。
Algorithms in C , C++ , and Java - 如果你觉得 Knuth 的书有点太深入的话,这是学习所有经典算法的好方法。
C
在线教程
这个教程看起来非常简洁和透彻,查看了材料并且似乎非常好。不过不确定它对新程序员有多友好。
书籍
K&R C - 肯定是经典之作。有人可能会争辩说所有程序员都应该阅读它。
C Primer Plus - 由 Imran 推荐为初级程序员的终极 C 书籍。
C: A Reference Manual - Patrick Lozzi 推荐的一个很好的参考。
C++
在线教程cplusplus.com
上的教程似乎是最完整的。我在这里找到了另一个教程,但它不包括像多态这样的主题,我认为这是必不可少的。如果您来自 C 语言,那么本教程可能最适合您。
另一个有用的教程C++ Annotation。在 Ubuntu 系列中,您可以通过从 Synaptic 安装软件包来获得多种格式(pdf、txt、Postscript 和 LaTex)的电子书c++-annotation
(安装的软件包可以在/usr/share/doc/c++-annotation/
.
书籍
C++ 编程语言- 对任何 C++ 程序员都至关重要。
C++ Primer Plus - 最初是作为错字添加的,但亚马逊的评论非常好,我将把它留在这里,直到有人说它是一个哑弹。
Effective C++ - 改进 C++ 程序的方法。
更有效的 C++ - 有效 C++ 的延续。
有效的 STL - 改进 STL 使用的方法。
Thinking in C++ - 好书,两卷。由布鲁斯·埃克尔和查克·埃里森撰写。
Programming: Principles and Practice Using C++ - Stroustrup 对 C++ 的介绍。
加速 C++- Andy Koenig 和 Barbara Moo - 对 C++ 的精彩介绍,它不会将 C++ 视为“附加了额外位的 C”,事实上,您可以直接潜入并尽早开始使用 STL。
向前
书籍
FORTH,文本和参考。Mahlon G. Kelly 和 Nicholas Spies。国际标准书号 0-13-326349-5 / 国际标准书号 0-13-326331-2。1986 年普伦蒂斯霍尔。Leo Brodie 的书很好,但这本书更好。例如,它深入涵盖了定义单词和解释器。
爪哇
在线教程
Sun 的 Java 教程- 一个看起来很全面的官方教程,但我不是 Java 专家。大家知道有没有更好的?
Books
Head First Java - 被 Patrick Lozzi 推荐为很棒的介绍性文本。
Effective Java - 被 pek 推荐为优秀的中间文本。
Core Java Volume 1和Core Java Volume 2 - FreeMemory 建议作为一些可用的最佳 Java 参考资料。
Java Concurrency in Practice - 被 MDC 推荐为 Java 并发编程的重要资源。
Python
在线教程
Python.org - 该语言的在线文档非常好。如果你知道更好的让我知道。
Dive Into Python - 由 Nickola 建议。好像是网上的python书。
Perl
在线教程
perldoc perl - 这是我个人开始使用该语言的方式,我认为您无法击败它。
Books
Learning Perl - 一种向自己介绍该语言的好方法。
Programming Perl - 被称为 Perl 圣经。任何认真的 perl 程序员的基本参考。
Perl Cookbook - 一本很好的书,可以解决许多常见问题。
现代 Perl 编程- 新发布,包含现代技术和工具的最新智慧,包括 Moose 和 DBIx::Class。
红宝石
在线教程
Adam Mika 推荐了Why's (Poignant) Guide to Ruby,但看了之后,不知道是否适合所有人。发现这个站点似乎提供了几个关于 Ruby on Rails 的教程。
Books
Programming Ruby - 建议作为所有 ruby 的重要参考。
视觉基础
在线教程
找到这个似乎致力于视觉基础教程的网站。不知道他们有多好。
PHP
在线教程
主要的 PHP 站点- 一个简单的教程,允许用户对每个页面进行评论,我非常喜欢。
PHPFreaks Tutorials - 不同难度长度的各种教程。
Quakenet/PHP 教程- PHP 教程将引导您从头开始。
JavaScript
在线教程在这里找到了一个适合非程序员
的不错的教程。在这里找到另一个更高级的。Nickolay 建议在这里重新介绍 javascript作为一个很好的读物。
Books
Head first JavaScript
JavaScript: The Good Parts(附有作者的Google Tech Talk 视频)
C#
Online Tutorials
C# Station Tutorial - 似乎是我挖出来的一个不错的教程,但我不是 C# 人。
C# 语言规范- 由 tamberg 建议。不是真正的教程,而是对 C#
书籍
C# 的所有元素的很好的参考- tamberg 建议作为一个简短的文本,以惊人的深度解释语言
ocaml
书籍
nlucaroni 提出以下建议:
OCaml for Scientists
Introduction to ocaml
Using Understanding and unraveling ocaml: practice to theory and comeversely
Developing Applications using Ocaml - O'Reilly
The Objective Caml System - Official Manua
哈斯克尔
在线教程
nlucaroni 建议如下:用 Haskell书籍
探索函数式编程真实世界的 Haskell总函数式编程
LISP/方案
书籍
wfarr 建议如下:
The Little Schemer - 介绍 Scheme 和一般
的函数式编程 经验丰富的 Schemer - Little Schemer 的后续。
Structure and Interpretation of Computer Programs - 关于 Lisp 的权威书籍(也可在线获得)。
Practical Common Lisp - 一个很好的 Lisp 介绍,有几个实际使用的例子。
关于 Lisp - Lisp 中的高级主题
如何设计程序-
人工智能编程的计算和编程范式简介:Common Lisp 中的案例研究- 一种高质量 Lisp 编程的方法
你们呢?我完全不喜欢那里的一些吗?我遗漏了你最喜欢的语言吗?我会采纳最好的意见并根据建议修改问题。
language-agnostic - 是什么让语言面向对象?
由于没有有意义的术语的辩论是没有意义的,我想我会指着房间里的大象问:究竟是什么让一种语言“面向对象”?我在这里寻找的不是教科书答案,而是基于您对在您的领域中运行良好的 OO 语言的经验,无论它可能是什么。
一个可能有助于首先回答的相关问题是:面向对象语言的原型是什么,为什么?
programming-languages - 为什么选择函数式语言?
我在这里看到很多关于函数式语言和东西的讨论。为什么要使用“传统”语言而不是“传统”语言?他们在哪些方面做得更好?他们最差的是什么?什么是理想的函数式编程应用程序?
c# - 哪些语言支持继承方法的返回类型的协变?
我最初问了这个问题,但在找到答案时,发现我最初的问题是 C# 中缺乏对继承方法的返回类型的协方差的支持。发现这一点后,我对哪些语言支持此功能感到好奇。
我会接受谁能说出最多名字的答案。
编辑:John Millikin 正确地指出许多动态语言都支持这一点。澄清:
我只是在寻找静态/强类型语言。
programming-languages - 在不同语言中命名属性、方法和类的首选约定是什么?
不同语言中的命名约定是否相似?如果不是,有什么区别?
oop - 为什么声称 C# 的人没有获得面向对象的编程?(相对于面向类)
昨晚引起了我的注意。
在最新的ALT.NET 播客中,Scott Bellware 讨论了与 Ruby 相比,c#、java 等语言如何。并不是真正的面向对象,而是选择“面向类”这个短语。他们用非常模糊的术语谈论这种区别,而没有深入细节或讨论利弊。
这里的真正区别是什么?它有多大关系?那么还有哪些其他语言是“面向对象的”?这听起来很有趣,但我不想学习 Ruby 只是为了知道我缺少什么。
更新:阅读下面的一些答案后,似乎人们普遍同意该参考是鸭式打字。我不确定我是否仍然理解的是,这最终会改变一切的说法。特别是如果你已经在做适当的 tdd 松耦合等等等等。有人可以向我展示一个我可以用 ruby 做的奇妙事情的例子,而我不能用 c# 做这件事,并举例说明了这种不同的 oop 方法吗?
c++ - 与 C++ 相比,哪些语言具有更高的抽象级别并且需要更少的手动内存管理?
我学习 C++ 已经有一段时间了,我觉得它非常强大。但是,问题是抽象级别不多,我必须自己做内存管理。我可以使用哪些语言使用更高级别的抽象。
sql - 在棕地应用程序中实施单元测试的首要任务是什么?
你会先重构你的 SQL 吗?你的架构?还是你的代码库?你改变语言吗?您是否将所有东西都扔掉并从头开始?[不重构]
python - 什么是开始编写编程语言的好资源,不是上下文无关的?
我正在寻找一种有趣的编程语言,但是我所看到的大部分资源都是用于编写无上下文语言的,但是我希望编写一种像 python 一样使用缩进的语言,据我所知,这意味着它可以不要与上下文无关。
compiler-construction - 如何推断强制?
我想知道如何在类型推断期间推断强制(又名隐式转换)。我正在使用 Bastiaan Heeren 在Top Quality Type Error Messages中描述的类型推断方案,但我认为在所有 Hindley-Milner-esque 方法中的总体思路可能都是相同的。
似乎强制可以被视为一种重载形式,但本文中描述的重载方法没有考虑(至少不是以我可以遵循的方式)基于上下文对返回类型的要求的重载,即胁迫的必要条件。我还担心这种方法可能难以优先考虑身份强制,也难以尊重强制的传递闭包。我可以看到将每个可强制表达式(例如e )添加到 coerce( e ),但是将其添加到 coerce(coerce(coerce(... coerce( e) ...))) 对于等于强制嵌套的最大嵌套的某些深度似乎很愚蠢,并且还将强制关系限制为具有有限传递闭包的东西,其深度与上下文无关,这似乎(不必要?)限制。