问题标签 [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.

0 投票
53 回答
112458 浏览

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 1Core Java Volume 2 - FreeMemory 建议作为一些可用的最佳 Java 参考资料。
Java Concurrency in Practice - 被 MDC 推荐为 Java 并发编程的重要资源。

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 编程的方法

你们呢?我完全不喜欢那里的一些吗?我遗漏了你最喜欢的语言吗?我会采纳最好的意见并根据建议修改问题。

0 投票
16 回答
23394 浏览

language-agnostic - 是什么让语言面向对象?

由于没有有意义的术语的辩论是没有意义的,我想我会指着房间里的大象问:究竟是什么让一种语言“面向对象”?我在这里寻找的不是教科书答案,而是基于您对在您的领域中运行良好的 OO 语言的经验,无论它可能是什么。

一个可能有助于首先回答的相关问题是:面向对象语言的原型是什么,为什么?

0 投票
48 回答
187359 浏览

programming-languages - 为什么选择函数式语言?

我在这里看到很多关于函数式语言和东西的讨论。为什么要使用“传统”语言而不是“传统”语言?他们在哪些方面做得更好?他们最差的是什么?什么是理想的函数式编程应用程序?

0 投票
7 回答
605 浏览

c# - 哪些语言支持继承方法的返回类型的协变?

我最初问了这个问题,但在找到答案时,发现我最初的问题是 C# 中缺乏对继承方法的返回类型的协方差的支持。发现这一点后,我对哪些语言支持此功能感到好奇。

我会接受谁能说出最多名字的答案。

编辑:John Millikin 正确地指出许多动态语言都支持这一点。澄清:

我只是在寻找静态/强类型语言。

0 投票
6 回答
541 浏览

programming-languages - 在不同语言中命名属性、方法和类的首选约定是什么?

不同语言中的命名约定是否相似?如果不是,有什么区别?

0 投票
14 回答
3006 浏览

oop - 为什么声称 C# 的人没有获得面向对象的编程?(相对于面向类)

昨晚引起了我的注意。

在最新的ALT.NET 播客中,Scott Bellware 讨论了与 Ruby 相比,c#、java 等语言如何。并不是真正的面向对象,而是选择“面向类”这个短语。他们用非常模糊的术语谈论这种区别,而没有深入细节或讨论利弊。

这里的真正区别是什么?它有多大关系?那么还有哪些其他语言是“面向对象的”?这听起来很有趣,但我不想学习 Ruby 只是为了知道我缺少什么。

更新:阅读下面的一些答案后,似乎人们普遍同意该参考是鸭式打字。我不确定我是否仍然理解的是,这最终会改变一切的说法。特别是如果你已经在做适当的 tdd 松耦合等等等等。有人可以向我展示一个我可以用 ruby​​ 做的奇妙事情的例子,而我不能用 c# 做这件事,并举例说明了这种不同的 oop 方法吗?

0 投票
26 回答
5136 浏览

c++ - 与 C++ 相比,哪些语言具有更高的抽象级别并且需要更少的手动内存管理?

我学习 C++ 已经有一段时间了,我觉得它非常强大。但是,问题是抽象级别不多,我必须自己做内存管理。我可以使用哪些语言使用更高级别的抽象。

0 投票
2 回答
517 浏览

sql - 在棕地应用程序中实施单元测试的首要任务是什么?

你会先重构你的 SQL 吗?你的架构?还是你的代码库?你改变语言吗?您是否将所有东西都扔掉并从头开始?[不重构]

0 投票
12 回答
2000 浏览

python - 什么是开始编写编程语言的好资源,不是上下文无关的?

我正在寻找一种有趣的编程语言,但是我所看到的大部分资源都是用于编写无上下文语言的,但是我希望编写一种像 python 一样使用缩进的语言,据我所知,这意味着它可以不要与上下文无关。

0 投票
3 回答
385 浏览

compiler-construction - 如何推断强制?

我想知道如何在类型推断期间推断强制(又名隐式转换)。我正在使用 Bastiaan Heeren 在Top Quality Type Error Messages中描述的类型推断方案,但我认为在所有 Hindley-Milner-esque 方法中的总体思路可能都是相同的。

似乎强制可以被视为一种重载形式,但本文中描述的重载方法没有考虑(至少不是以我可以遵循的方式)基于上下文对返回类型的要求的重载,即胁迫的必要条件。我还担心这种方法可能难以优先考虑身份强制,也难以尊重强制的传递闭包。我可以看到将每个可强制表达式(例如e )添加到 coerce( e ),但是将其添加到 coerce(coerce(coerce(... coerce( e) ...))) 对于等于强制嵌套的最大嵌套的某些深度似乎很愚蠢,并且还将强制关系限制为具有有限传递闭包的东西,其深度与上下文无关,这似乎(不必要?)限制。