├── .mdlintignore ├── .gitignore ├── book ├── languages │ ├── java │ │ ├── README.md │ │ ├── disadvantages.md │ │ ├── advantages.md │ │ ├── conclusion.md │ │ ├── misc.md │ │ ├── intro.md │ │ └── history.md │ ├── jvm │ │ ├── README.md │ │ ├── java │ │ │ ├── README.md │ │ │ ├── disadvantages.md │ │ │ ├── advantages.md │ │ │ ├── conclusion.md │ │ │ ├── misc.md │ │ │ ├── intro.md │ │ │ └── history.md │ │ ├── clojure │ │ │ ├── README.md │ │ │ ├── disadvantages.md │ │ │ ├── conclusion.md │ │ │ ├── advantages.md │ │ │ ├── history.md │ │ │ ├── misc.md │ │ │ └── intro.md │ │ └── intro.md │ ├── lua │ │ ├── README.md │ │ ├── disadvantages.md │ │ ├── conclusion.md │ │ ├── advantages.md │ │ ├── misc.md │ │ ├── history.md │ │ └── intro.md │ ├── clojure │ │ ├── README.md │ │ ├── disadvantages.md │ │ ├── conclusion.md │ │ ├── advantages.md │ │ ├── history.md │ │ ├── misc.md │ │ └── intro.md │ ├── erlang │ │ ├── README.md │ │ ├── disadvantages.md │ │ ├── advantages.md │ │ ├── conclusion.md │ │ ├── misc.md │ │ ├── history.md │ │ └── intro.md │ ├── golang │ │ ├── README.md │ │ ├── disadvantages.md │ │ ├── conclusion.md │ │ ├── misc.md │ │ ├── history.md │ │ ├── advantages.md │ │ └── intro.md │ ├── haskell │ │ ├── README.md │ │ ├── advantages.md │ │ ├── disadvantages.md │ │ ├── conclusion.md │ │ ├── misc.md │ │ ├── intro.md │ │ └── history.md │ ├── c │ │ ├── README.md │ │ ├── conclusion.md │ │ ├── disadvantages.md │ │ ├── intro.md │ │ ├── history.md │ │ └── advantages.md │ ├── perl │ │ ├── README.md │ │ ├── conclusion.md │ │ ├── intro.md │ │ ├── advantages.md │ │ ├── disadvantages.md │ │ └── history.md │ ├── bfasm │ │ └── README.md │ ├── brainfuck │ │ ├── README.md │ │ ├── history.md │ │ ├── disadvantages.md │ │ ├── conclusion.md │ │ ├── advantages.md │ │ ├── misc.md │ │ └── intro.md │ ├── malbolge │ │ ├── README.md │ │ ├── disadvantages.md │ │ ├── conclusion.md │ │ ├── history.md │ │ ├── advantages.md │ │ └── intro.md │ ├── cpp │ │ ├── README.md │ │ ├── disadvantages.md │ │ ├── conclusion.md │ │ ├── intro.md │ │ ├── history.md │ │ └── advantages.md │ ├── js │ │ ├── README.md │ │ ├── conclusion.md │ │ ├── intro.md │ │ ├── disadvantages.md │ │ ├── advantages.md │ │ ├── misc.md │ │ └── history.md │ ├── abc │ │ ├── README.md │ │ ├── intro.md │ │ ├── what_it_solves.md │ │ ├── disadvantages.md │ │ ├── advantages.md │ │ ├── conclusion.md │ │ ├── misc.md │ │ └── history.md │ ├── csharp │ │ ├── conclusion.md │ │ ├── README.md │ │ ├── intro.md │ │ ├── disadvantages.md │ │ ├── history.md │ │ └── advantages.md │ ├── python │ │ ├── README.md │ │ ├── intro.md │ │ ├── conclusion.md │ │ ├── disadvantages.md │ │ ├── advantages.md │ │ ├── what_it_solves.md │ │ ├── history.md │ │ └── misc.md │ └── assembly │ │ ├── README.md │ │ ├── intro.md │ │ ├── conclusion.md │ │ ├── history.md │ │ ├── what_it_solves.md │ │ ├── advantages.md │ │ └── disadvantages.md ├── icons │ ├── png │ │ ├── C#.png │ │ ├── C.png │ │ ├── C#@2x.png │ │ ├── C++.png │ │ ├── C@2x.png │ │ ├── C++@2x.png │ │ ├── Kotlin.png │ │ ├── Python.png │ │ ├── Assembly.png │ │ ├── JavaScript.png │ │ ├── Kotlin@2x.png │ │ ├── Python@2x.png │ │ ├── Assembly@2x.png │ │ └── JavaScript@2x.png │ └── svg │ │ └── JavaScript.svg ├── welcome.md ├── intro.md ├── credits.md └── SUMMARY.md ├── book.json ├── .github └── FUNDING.yml ├── package.json ├── .travis.yml ├── RELICENSING ├── intro.md ├── .mdlintrc ├── README.md └── CONTRIBUTING.md /.mdlintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | keyfile 2 | node_modules 3 | _book/ -------------------------------------------------------------------------------- /book/languages/java/README.md: -------------------------------------------------------------------------------- 1 | # Hi 2 | 3 | > This chapter was made by Skayo. 4 | 5 | Welcome to the Java part! 6 | -------------------------------------------------------------------------------- /book/languages/jvm/README.md: -------------------------------------------------------------------------------- 1 | # Hi 2 | 3 | > This chapter was made by Skayo. 4 | 5 | Welcome to the JVM part! 6 | -------------------------------------------------------------------------------- /book/languages/lua/README.md: -------------------------------------------------------------------------------- 1 | # Hi 2 | 3 | > This chapter was made by Skayo. 4 | 5 | Welcome to the Lua part! 6 | -------------------------------------------------------------------------------- /book/icons/png/C#.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/C#.png -------------------------------------------------------------------------------- /book/icons/png/C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/C.png -------------------------------------------------------------------------------- /book/languages/clojure/README.md: -------------------------------------------------------------------------------- 1 | # Hi 2 | 3 | > This chapter was made by Skayo. 4 | 5 | Welcome to the Clojure part! 6 | -------------------------------------------------------------------------------- /book/languages/jvm/java/README.md: -------------------------------------------------------------------------------- 1 | # Hi 2 | 3 | > This chapter was made by Skayo. 4 | 5 | Welcome to the Java part! 6 | -------------------------------------------------------------------------------- /book/icons/png/C#@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/C#@2x.png -------------------------------------------------------------------------------- /book/icons/png/C++.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/C++.png -------------------------------------------------------------------------------- /book/icons/png/C@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/C@2x.png -------------------------------------------------------------------------------- /book/languages/jvm/clojure/README.md: -------------------------------------------------------------------------------- 1 | # Hi 2 | 3 | > This chapter was made by Skayo. 4 | 5 | Welcome to the Clojure part! 6 | -------------------------------------------------------------------------------- /book/icons/png/C++@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/C++@2x.png -------------------------------------------------------------------------------- /book/icons/png/Kotlin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/Kotlin.png -------------------------------------------------------------------------------- /book/icons/png/Python.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/Python.png -------------------------------------------------------------------------------- /book/icons/png/Assembly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/Assembly.png -------------------------------------------------------------------------------- /book/icons/png/JavaScript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/JavaScript.png -------------------------------------------------------------------------------- /book/icons/png/Kotlin@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/Kotlin@2x.png -------------------------------------------------------------------------------- /book/icons/png/Python@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/Python@2x.png -------------------------------------------------------------------------------- /book/icons/png/Assembly@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/Assembly@2x.png -------------------------------------------------------------------------------- /book/welcome.md: -------------------------------------------------------------------------------- 1 | # Community-Programming-Book 2 | 3 | Hi, welcome to this Gitbook to start reading click below on 'Next to Introduction'. 4 | -------------------------------------------------------------------------------- /book/icons/png/JavaScript@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devRant-Community/Community-Programming-Book/HEAD/book/icons/png/JavaScript@2x.png -------------------------------------------------------------------------------- /book.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": "./book", 3 | "gitbook": ">= 3.2.3", 4 | "language": "en", 5 | "structure": { 6 | "readme": "welcome.md" 7 | } 8 | } -------------------------------------------------------------------------------- /book/languages/erlang/README.md: -------------------------------------------------------------------------------- 1 | # Hello 2 | 3 | > This chapter was made by Skayo. 4 | 5 | Welcome in the Erlang part. 6 | Hope you'll enjoy reading it. -------------------------------------------------------------------------------- /book/languages/erlang/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | * Programmers find it difficult to use erlang due to its relatively 4 | difficult syntax. 5 | -------------------------------------------------------------------------------- /book/languages/golang/README.md: -------------------------------------------------------------------------------- 1 | # Hi there 2 | 3 | > This chapter was made by Skayo. 4 | 5 | Welcome to the Golang part! 6 | I hope you'll enjoy this chapter. 7 | -------------------------------------------------------------------------------- /book/languages/haskell/README.md: -------------------------------------------------------------------------------- 1 | # Hi there 2 | 3 | > This chapter was made by Skayo. 4 | 5 | Welcome to the Haskell part! 6 | I hope you'll enjoy this chapter. 7 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | ko_fi: devrantcpb 4 | custom: https://www.buymeacoffee.com/RBGQuTk3n 5 | custom: https://paypal.me/devrantcpb 6 | -------------------------------------------------------------------------------- /book/languages/java/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Bad stuff about Java 2 | 3 | ## What makes Java bad 4 | 5 | * It does require more memory compared to languages like C or C++ 6 | 7 | * It's pretty slow language 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "community-programming-book", 3 | "scripts": { 4 | "lint": "mdlint ." 5 | }, 6 | "devDependencies": { 7 | "mdlint": "Laboratoria/mdlint" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /book/languages/jvm/java/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Bad stuff about Java 2 | 3 | ## What makes Java bad 4 | 5 | * It does require more memory compared to languages like C or C++ 6 | 7 | * It's pretty slow language 8 | -------------------------------------------------------------------------------- /book/languages/c/README.md: -------------------------------------------------------------------------------- 1 | # Welcome 2 | 3 | > This chapter has been authored by Krzysztof Szewczyk "Παλαιολόγος". 4 | 5 | Welcome to the C chapter! I'd like to let you know a bit more about second most popular language. 6 | -------------------------------------------------------------------------------- /book/languages/perl/README.md: -------------------------------------------------------------------------------- 1 | # Welcome 2 | 3 | > This chapter has been authored by Krzysztof Szewczyk "Παλαιολόγος". 4 | 5 | Welcome to the Perl chapter! I'd like to let you know a bit more about this famous language. 6 | -------------------------------------------------------------------------------- /book/languages/bfasm/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Welcome 3 | 4 | Here comes the chapter on bfasm! 5 | 6 | > This language chapter was authored by Maciej Stanka. 7 | 8 | Some info about bfasm here. 9 | 10 | So let's get started! 11 | -------------------------------------------------------------------------------- /book/languages/brainfuck/README.md: -------------------------------------------------------------------------------- 1 | # Welcome 2 | 3 | > This chapter has been authored by Krzysztof Szewczyk "Παλαιολόγος". 4 | 5 | Welcome to the Brainfuck chapter! I'd like to let you know a bit more about 6 | this awesome language. 7 | -------------------------------------------------------------------------------- /book/languages/malbolge/README.md: -------------------------------------------------------------------------------- 1 | # Welcome 2 | 3 | > This chapter has been authored by Krzysztof Szewczyk "Παλαιολόγος". 4 | 5 | Welcome to the Malbolge chapter! I'd like to let you know a bit more about 6 | this amazingly difficult language. 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "lts/*" 4 | 5 | before_install: 6 | - npm i -g Laboratoria/mdlint 7 | 8 | script: 9 | - npm run lint 10 | 11 | notifications: 12 | webhooks: https://skayo.dev/cpb/reportChecksFailure.php 13 | -------------------------------------------------------------------------------- /book/languages/cpp/README.md: -------------------------------------------------------------------------------- 1 | # Hi There 2 | 3 | > This language chapter was authored by Chirag Khandelwal (Electrux) 4 | 5 | Welcome to the C++ chapter! Here, we are going to understand and learn C++ - its origins, concepts, features and all that good stuff. 6 | -------------------------------------------------------------------------------- /book/languages/js/README.md: -------------------------------------------------------------------------------- 1 | # Oh, hello there 2 | 3 | > This chapter has been authored by Skayo and Gadila Shashank Reddy. 4 | 5 | Welcome to the JavaScript chapter! We would like to let you know a bit more about 6 | JavaScript and programming in JavaScript. 7 | -------------------------------------------------------------------------------- /RELICENSING: -------------------------------------------------------------------------------- 1 | Relicensing is in progress. 2 | 3 | We are migrating to our own license. It's text will be inserted here: 4 | 5 | [...] 6 | 7 | Contributors, allowing relicensing: 8 | * [Name] - [Contribution], whenever you agree to relicensing, please add your entry down below. 9 | -------------------------------------------------------------------------------- /book/languages/abc/README.md: -------------------------------------------------------------------------------- 1 | # ABC 2 | 3 | > This chapter has been authored by Gadila Shashank Reddy. 4 | 5 | Now is the chapter on ABC. We will try to understand its roots and 6 | how was it able to inspire Python, one of the most popular programming languages in current times. 7 | -------------------------------------------------------------------------------- /book/languages/clojure/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages of Clojure 2 | 3 | ## What makes Clojure uncool 4 | 5 | * Not a memory efficient language 6 | 7 | * Lacks a reliable static typing layer 8 | 9 | * It can't be used for highly perfomant low level code 10 | 11 | * It warms up slowly 12 | -------------------------------------------------------------------------------- /book/languages/csharp/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | C# is a great modern language, with a large development community and Microsoft support. 4 | It's used in many enterprise applications on client and server sides. 5 | 6 | In the next chapters, we'll dive into C# and explore it from the ground up. -------------------------------------------------------------------------------- /book/languages/jvm/clojure/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages of Clojure 2 | 3 | ## What makes Clojure uncool 4 | 5 | * Not a memory efficient language 6 | 7 | * Lacks a reliable static typing layer 8 | 9 | * It can't be used for highly perfomant low level code 10 | 11 | * It warms up slowly 12 | -------------------------------------------------------------------------------- /book/languages/lua/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | Some bad stuff about Lua... 4 | 5 | * **No Unicode support** 6 | 7 | * **It's not super popular language...** 8 | 9 | * **With the Portability comes price of out of the box features** 10 | 11 | * **No bitops in the older versions** 12 | -------------------------------------------------------------------------------- /book/languages/csharp/README.md: -------------------------------------------------------------------------------- 1 | # Welcome 2 | 3 | > This chapter has been authored by Pavel Durov 4 | 5 | Welcome to the C# chapter! 6 | 7 | In this chapter, we are going to explore C# and the .NET Framework in general. 8 | We'll start with the basics and dive into the details as we advance through the chapter. -------------------------------------------------------------------------------- /book/languages/java/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages of Java 2 | 3 | ## Things that make Java cool are 4 | 5 | * It's platform independent 6 | 7 | * Lack of features gives more security 8 | 9 | * Many nice-to-have features, for example automatic garbage collection, exception handling and type checking 10 | -------------------------------------------------------------------------------- /book/languages/jvm/java/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages of Java 2 | 3 | ## Things that make Java cool are 4 | 5 | * It's platform independent 6 | 7 | * Lack of features gives more security 8 | 9 | * Many nice-to-have features, for example automatic garbage collection, exception handling and type checking 10 | -------------------------------------------------------------------------------- /book/languages/python/README.md: -------------------------------------------------------------------------------- 1 | # Python 2 | 3 | > This chapter has been authored by Gadila Shashank Reddy. 4 | 5 | Now is the chapter on python, one of the most 6 | popular languages with applications in a wide variety of fields. Read to find out more on what makes 7 | python so popular that it is referred to as the "fastest growing major programming language". 8 | -------------------------------------------------------------------------------- /book/languages/assembly/README.md: -------------------------------------------------------------------------------- 1 | # Here comes the chapter on Assembly Language 2 | 3 | > This language chapter was authored by Gadila Shashank Reddy. 4 | 5 | The assembly language is the lowest language that exists after direct machine instructions. 6 | During its time assembly presented a starting leap towards higher-level languages. 7 | 8 | So let's get started :) 9 | -------------------------------------------------------------------------------- /book/languages/clojure/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | Well, it's nice to know Clojure. 4 | Around 200 companies use Clojure, including Adobe, Amazon, Apple, Cisco and many more. 5 | And the incomes are not that bad. 6 | 7 | ## Sources 8 | 9 | * [**Wikipedia**](https://en.wikipedia.org/wiki/Clojure) 10 | 11 | * [**Official Clojure Page**](https://clojure.org/) 12 | -------------------------------------------------------------------------------- /book/languages/lua/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | ## Sources 4 | 5 | * [Everipedia](https://everipedia.org/wiki/lang_en/Extensible_programming/) 6 | 7 | * [Lua official site](https://www.lua.org/) 8 | 9 | * [WikiBooks](https://en.wikibooks.org/wiki/Lua_Programming/Features) 10 | 11 | * [Wikipedia](https://en.wikipedia.org/wiki/Lua_(programming_language)) 12 | -------------------------------------------------------------------------------- /book/languages/jvm/clojure/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | Well, it's nice to know Clojure. 4 | Around 200 companies use Clojure, including Adobe, Amazon, Apple, Cisco and many more. 5 | And the incomes are not that bad. 6 | 7 | ## Sources 8 | 9 | * [**Wikipedia**](https://en.wikipedia.org/wiki/Clojure) 10 | 11 | * [**Official Clojure Page**](https://clojure.org/) 12 | -------------------------------------------------------------------------------- /book/languages/golang/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | ## Some `bad` stuff about Golang 4 | 5 | * *No support for generics*, but Golang team is *still* thinking about adding it. 6 | 7 | * **Smaller amount of packages** compared to Node.js or Ruby. 8 | 9 | * *No support* for overloading a function. 10 | 11 | * Some may like, some may hate, Golang is an **imperative** type of language. 12 | -------------------------------------------------------------------------------- /book/languages/clojure/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages of Clojure 2 | 3 | ## What makes Clojure cool 4 | 5 | * all the benefits of functional programming 6 | 7 | * alllws dynamic, compact code with macros, multimethods and late binding 8 | 9 | * Java interoperability 10 | 11 | * portability and fast garbage collection 12 | 13 | * functional data structures, software transactional memory, all the concurrency goodies 14 | -------------------------------------------------------------------------------- /book/languages/jvm/clojure/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages of Clojure 2 | 3 | ## What makes Clojure cool 4 | 5 | * all the benefits of functional programming 6 | 7 | * alllws dynamic, compact code with macros, multimethods and late binding 8 | 9 | * Java interoperability 10 | 11 | * portability and fast garbage collection 12 | 13 | * functional data structures, software transactional memory, all the concurrency goodies 14 | -------------------------------------------------------------------------------- /book/languages/lua/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | Some of Lua's advantages are: 4 | 5 | * **Linear Learning Curve** 6 | 7 | * **Metatables** 8 | 9 | * **Portable, can be built on any platform with ANSI C compiler** 10 | 11 | * **Embedded and extensible language** 12 | 13 | * **Runs well when it comes to speed** 14 | 15 | * **Lexical scoping** 16 | 17 | * **Functional Programming compatible with first-class functions and closures** 18 | -------------------------------------------------------------------------------- /book/languages/abc/intro.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | ABC is a powerful, easy to learn and use, interactive and imperative high level 4 | programming language. This language was born after a lot of research on creating a programming 5 | language that was both powerful with respect to features and also easy to learn. 6 | 7 | It is a high level language and supports data structuring and structured programming. 8 | During its time, ABC was a powerful language for beginners and experts alike. 9 | -------------------------------------------------------------------------------- /book/languages/haskell/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages of using Haskell 2 | 3 | ## Haskell is cool, because 4 | 5 | * Pattern matching syntax, avoiding 'if' statements 6 | 7 | * Recursive types that may contain many other values of the same type 8 | 9 | * Inferred types 10 | 11 | * Lazy evaluation, they delay the evaluation of an expression until its value is needed 12 | 13 | * Monads, which provide us with a single way to describe many types of computation that seem very different at first -------------------------------------------------------------------------------- /book/languages/assembly/intro.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Assembly language or an assembler is a low-level programming language, which is the 4 | lowest abstraction of machine languages (binary code). 5 | 6 | There is a strong, but not complete correspondence between assembly and machine instructions. 7 | The Assembly Language is not completely portable in the sense that its syntax and semantics 8 | vary with computer architecture, but the core concepts, essence and 9 | functioning remain the same. 10 | -------------------------------------------------------------------------------- /book/intro.md: -------------------------------------------------------------------------------- 1 | # Community-Programming-Book 2 | 3 | The Devrant community gathered together to create a book on 4 | multiple programming languages. We want you to understand why 5 | the languages referenced here have come to exist and why they 6 | for example use either brackets or indenting or also what great 7 | were done with them. Basically telling their story. 8 | 9 | > Any fool can write code that a computer can understand. Good programmers write code that humans can understand. \ 10 | > -- Martin Fowler -------------------------------------------------------------------------------- /book/languages/abc/what_it_solves.md: -------------------------------------------------------------------------------- 1 | # What it solves 2 | 3 | ABC was not designed to solve a specific purpose or problem, instead it was intended for general 4 | purpose programming. It was created to be easy to learn and use yet include powerful features. 5 | Programming in this language is relatively more intuitive and easy. It was the first language to have 6 | implemented indented blocks of code which has also been adopted in python. A better explanation on 7 | its powerful features are mentioned in the next section. 8 | -------------------------------------------------------------------------------- /book/languages/c/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | C is excellent language for embedded development. It's mixture of lower level programming, which is possible in C (see BIOS 4 | implemented in C; Linux kernel was implemented in C too), but also higher level programming - there is theoretical possibility of 5 | OOP simulation in C, getting rid of the part where C is not shining. 6 | 7 | One thing is sure - **nothing, ever** will replace C. C will remain ruling IT world, **[forever](https://www.tiobe.com/tiobe-index/)**. 8 | -------------------------------------------------------------------------------- /book/languages/python/intro.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Python is an interpreted high level programming language for general-purpose programming. It has a 4 | design philosophy that emphasizes on *code simplicity and readability*. It provides constructs that 5 | enable clear programming on both small and large scales. This philosophy has enabled python to become 6 | a very popular language used in fields such as machine learning, big data, artificial intelligence, 7 | web development and in scientific research to name a few. 8 | -------------------------------------------------------------------------------- /book/languages/csharp/intro.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | C# is an elegant object-oriented language that enables developers to build a variety of powerful and secure applications. 4 | 5 | It can be used to create Windows apps, Web services, Mobile apps, VR, Games and much more. 6 | 7 | C# is a managed code, meaning that C# program requires and only executes under the management of a CLR (Common Language Runtime) virtual machine. 8 | 9 | C# runs on the .NET framework just like the way Java runs on a JVM (Java Virtual Machine) 10 | -------------------------------------------------------------------------------- /book/languages/clojure/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | ## The begginings 4 | 5 | **Rick Hickey** is the creator of Clojure. Before Clojure he developed a similar language, **dotLisp**, but it was based on the .NET platform and three earlier attempts to provide interoperability between JVM and Lisp (**jfli, FOIL and Lisplets**). 6 | 7 | He spent *around* 2.5 years working on the language before realeasing it to the public and much of that time without outside funding. At the end of that time, Hickey sent an email to some of his friends in Lisp community announcing the Clojure language. 8 | -------------------------------------------------------------------------------- /book/languages/abc/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | * Some issues with syntax like uppercase for keywords. 4 | 5 | * Variables are persistent and global. Memory management thus is an issue. 6 | 7 | * It has a very monolithic design that is low-level optimizations to the code is not possible. 8 | 9 | * I/O from files was not implemented. Thus, it could not be used for reading and writing from files. 10 | 11 | * Because of the way variables were implemented it was not possible to implement temporary or 12 | session specific variables without exclusively deleting them. 13 | -------------------------------------------------------------------------------- /book/languages/jvm/clojure/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | ## The begginings 4 | 5 | **Rick Hickey** is the creator of Clojure. Before Clojure he developed a similar language, **dotLisp**, but it was based on the .NET platform and three earlier attempts to provide interoperability between JVM and Lisp (**jfli, FOIL and Lisplets**). 6 | 7 | He spent *around* 2.5 years working on the language before realeasing it to the public and much of that time without outside funding. At the end of that time, Hickey sent an email to some of his friends in Lisp community announcing the Clojure language. 8 | -------------------------------------------------------------------------------- /book/languages/clojure/misc.md: -------------------------------------------------------------------------------- 1 | # Interesting facts about Clojure 2 | 3 | ## Clojure code compared to other languages 4 | 5 | > Example of Hello World app in some languages 6 | 7 | ### Clojure 8 | 9 | ```clojure 10 | (ns clojure.examples.hello 11 | (:gen-class)) 12 | (defn hello-world [] 13 | (println "Hello World")) 14 | (hello-world) 15 | ``` 16 | 17 | ### Java 18 | 19 | ```java 20 | class HelloWorld { 21 | public static void main(String[] args) { 22 | System.out.println("Hello, World!"); 23 | } 24 | } 25 | ``` 26 | 27 | ### Ruby 28 | 29 | ```Ruby 30 | puts "Hello world!" 31 | ``` 32 | -------------------------------------------------------------------------------- /book/languages/jvm/clojure/misc.md: -------------------------------------------------------------------------------- 1 | # Interesting facts about Clojure 2 | 3 | ## Clojure code compared to other languages 4 | 5 | > Example of Hello World app in some languages 6 | 7 | ### Clojure 8 | 9 | ```clojure 10 | (ns clojure.examples.hello 11 | (:gen-class)) 12 | (defn hello-world [] 13 | (println "Hello World")) 14 | (hello-world) 15 | ``` 16 | 17 | ### Java 18 | 19 | ```java 20 | class HelloWorld { 21 | public static void main(String[] args) { 22 | System.out.println("Hello, World!"); 23 | } 24 | } 25 | ``` 26 | 27 | ### Ruby 28 | 29 | ```Ruby 30 | puts "Hello world!" 31 | ``` 32 | -------------------------------------------------------------------------------- /book/languages/perl/conclusion.md: -------------------------------------------------------------------------------- 1 | 2 | # Conclusion 3 | 4 | **Perl** is amazing text processing language and there is no other tool that can beat Perl in this discipline. 5 | 6 | Perl is very definite. As a simple example, let's check out the classic "Hello World" program. Here it is in C: 7 | 8 | ```c 9 | int main(void) { 10 | printf("Hello World!\n"); 11 | } 12 | ``` 13 | 14 | And here it is in Perl: 15 | 16 | ```pl 17 | print 'Hello World!'; 18 | ``` 19 | 20 | Get in, get out, while getting the job done. Whenever you need help with Perl, you can always 21 | check welcoming community of comp.lang.perl. 22 | -------------------------------------------------------------------------------- /book/languages/jvm/intro.md: -------------------------------------------------------------------------------- 1 | # Inception 2 | 3 | **JVM**, Java Virtual Machine, is, as the name suggests, a virtual machine that enables your computer to run Java code and code in other languages that does compile to Java bytecode. 4 | 5 | ## Execution of JVM 6 | 7 | Java Code (.java) → JAVAC Compiler → Byte Code (.class) → JVM ⇌ Windows/Linux/Mac 8 | 9 | ## Features 10 | 11 | * JVM is cross-platform 12 | 13 | * JVM is designed to provide security to host computer in terms of their data 14 | 15 | ## JVM Languages 16 | 17 | The most popular JVM languages are: 18 | 19 | * [Java](./java/intro.md) 20 | 21 | * [Clojure](./clojure/intro.md) 22 | -------------------------------------------------------------------------------- /intro.md: -------------------------------------------------------------------------------- 1 | # [Language] 2 | 3 | ## Introduction 4 | 5 | ## History 6 | 7 | - Year of creation 8 | - Person(s) who created it. Organization? 9 | - Purpose of creation 10 | 11 | ## 'What problems does it solve ? 12 | 13 | - What it does well. 14 | - Relate back to why it was created (purpose). 15 | - Basically a reason why you would use this language 16 | - Include example code to demonstrate 17 | 18 | ## Where you should use it 19 | 20 | - Recommended use 21 | 22 | ## Shortcomings of the language 23 | 24 | - Not recommended for 25 | 26 | ## Opinions on language 27 | 28 | ## Technical information of language 29 | 30 | ## Where to continue to read on -------------------------------------------------------------------------------- /book/languages/erlang/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | Some of the Erlang advantages are: 4 | 5 | * **Concurrency** 6 | 7 | * **Built in dispersion** 8 | 9 | You can create processes with any node on any node. 10 | 11 | * **Error handling** 12 | 13 | When the process breaks down, it leaves and sends a message to the process a control who can take the appropriate action - e.g. restart or end broken process and start the next one. 14 | 15 | * **Dynamic and strong typing discipline** 16 | 17 | * **Support for multiprocessor systems** 18 | 19 | * **Hot code upgrade** 20 | 21 | You don't have to stop system to update code. 22 | -------------------------------------------------------------------------------- /book/languages/abc/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | * Easy to learn and use and is intuitive. 4 | 5 | * Structured programming and data structuring are supported. 6 | 7 | * It has only 5 data types which are sufficient for most purposes. Others have a larger number of data types. 8 | 9 | * The code length is typically much smaller compared to other languages without compromising 10 | on readability or user understanding. 11 | 12 | * Great for general purpose programming and prototyping. 13 | 14 | * There are no limitations on size of data except due to physical factors. 15 | 16 | * This language has introduced the concept of indented code blocks. 17 | -------------------------------------------------------------------------------- /book/languages/java/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | Java is a useful language. 4 | Nice to know it, because many companies still use it and will use it for the long time. 5 | Maybe it's slower and requires more memory than other languages, but it's the secure and platform independent language. 6 | 7 | ## Sources 8 | 9 | * [**Wikipedia**](https://en.wikipedia.org/wiki/Java_%28programming_language%29) 10 | 11 | * [**Official Java Page**](https://www.java.com/en/) 12 | 13 | * [**Mindsmapped**](https://www.mindsmapped.com/java-advantages-and-disadvantages/) 14 | 15 | ## Regarding authors 16 | 17 | This chapter was made by [Skayo](https://github.com/Skayo). 18 | -------------------------------------------------------------------------------- /book/languages/jvm/java/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | Java is a useful language. 4 | Nice to know it, because many companies still use it and will use it for the long time. 5 | Maybe it's slower and requires more memory than other languages, but it's the secure and platform independent language. 6 | 7 | ## Sources 8 | 9 | * [**Wikipedia**](https://en.wikipedia.org/wiki/Java_%28programming_language%29) 10 | 11 | * [**Official Java Page**](https://www.java.com/en/) 12 | 13 | * [**Mindsmapped**](https://www.mindsmapped.com/java-advantages-and-disadvantages/) 14 | 15 | ## Regarding authors 16 | 17 | This chapter was made by [Skayo](https://github.com/Skayo). 18 | -------------------------------------------------------------------------------- /book/languages/c/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | C has no support for closures, no guaranteed support of tail calls 4 | 5 | There is no way to portably inspect the call stack. Hence, you cannot code something like GNU backtrace or `longjmp`/`setjmp` in 6 | portable C. Also, coding precise garbage collectors is very painful. 7 | 8 | There is no ABI, every vendor made up their own. Higher level constructs have to be manually created or third-party libraries and 9 | other solutions used. 10 | 11 | There are no namespaces, so it's easy to pollute global namespace and wreck something up. 12 | 13 | Finally, C doesn't support exceptions and object oriented programming. 14 | -------------------------------------------------------------------------------- /book/languages/erlang/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | Erlang has a crazy syntax, and that's the reason why some don't like it. 4 | I like it, because I like its creators, Ericsson company. 5 | I think Erlang should have more fans, maybe not the fans of the syntax, but at least fans of this language. 6 | It has amazing features and need more attention than it has now. 7 | 8 | ## Sources 9 | 10 | * [Wikipedia](https://en.wikipedia.org/wiki/Erlang_(programming_language)) 11 | 12 | * [Erlang official website](https://www.erlang.org/) 13 | 14 | * [Erlang Solutions](https://www.erlang-solutions.com/) 15 | 16 | ## Regarding authors 17 | 18 | This chapter was made by [Skayo](https://github.com/Skayo). 19 | -------------------------------------------------------------------------------- /book/languages/python/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | It is now understandable how python became an immensely popular language and still remains relevant 4 | even today 20+ years after creation. Very few such languages enjoy this status. 5 | 6 | ## Sources 7 | 8 | * [Python (Wikipedia)](https://en.wikipedia.org/wiki/Python_%28programming_language%29) 9 | 10 | * [History of python(Wikipedia)](https://en.wikipedia.org/wiki/History_of_Python) 11 | 12 | * [Zen of python](https://www.python.org/dev/peps/pep-0020/) 13 | 14 | * [Quora](https://www.quora.com/Why-is-Python-so-popular-despite-being-so-slow) 15 | 16 | * [Disadvantages of python(Quora)](https://www.quora.com/What-are-the-disadvantages-of-Python) 17 | -------------------------------------------------------------------------------- /book/languages/abc/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | ABC is an excellent attempt at making programming understandable and user-friendly. It has 4 | introduced some terrific features which have inspired several other languages the most notable 5 | one being Python. Despite few design flaws it still is successful in programming more accessible and powerful. 6 | 7 | ## Sources and further reading 8 | 9 | * [Making of python-An interview](https://www.artima.com/intv/pythonP.html) 10 | 11 | * [The official page of ABC](https://homepages.cwi.nl/~steven/abc/) 12 | 13 | * Pemberton, S. (1987, January 01). An Alternative Simple Language and Environment for PCs. 14 | Retrieved from [here.](https://ieeexplore.ieee.org/document/1695678/) 15 | -------------------------------------------------------------------------------- /book/languages/malbolge/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | Malbolge is esoteric language. It was created as a joke. There are a few so-called Brainfuck hackers around, but being honest, 4 | You can't earn a living programming in Malbolge these times. 5 | 6 | Malbolge is way too impractical to be using language in real-world cases (even more than Brainfuck!). Developers would cost way 7 | too much and work really inefficiently. Albeit low abstraction level, Malbolge is memory and CPU time inefficient, 8 | so it's not very viable to write anything in bare Malbolge and you'd be better off by using some other language. 9 | 10 | Finally, the language is really bounded - I/O is limited to console input and output, greatly reducing usability. 11 | -------------------------------------------------------------------------------- /book/languages/haskell/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages of using Haskell 2 | 3 | ## Bad stuff about Haskell, but who cares, because it's cool 4 | 5 | * For some, that stuff like <:> >>= <=< @>-,-'--() in every line can be annoying 6 | 7 | * Some people are going mad when they see all the possible ways to write out the same thing 8 | 9 | * Tooling is limited, awkward and slow 10 | 11 | * Library quality and coverage is inconsistent, you can't easily do UI development and machine learning with Haskell, lack of libraries 12 | 13 | * If you don't have a beefy PC, don't even try to compile Haskell code, you're gonna probably be faster a fossil fuel than your crappy PC will compile your code, just loading modules into GHC can take almost half a minute -------------------------------------------------------------------------------- /.mdlintrc: -------------------------------------------------------------------------------- 1 | { 2 | "default": true, 3 | "MD026": { 4 | "punctuation": ",;:" 5 | }, 6 | "MD013": { 7 | "line_length": 300 8 | }, 9 | "MD003": { 10 | "style": "atx" 11 | }, 12 | "MD012": { 13 | "maximum": 2 14 | }, 15 | "MD029": { 16 | "style": "ordered" 17 | }, 18 | "MD035": { 19 | "style": "---" 20 | }, 21 | "MD044": { 22 | "names": [ 23 | "JavaScript", 24 | "PHP", 25 | "HTML", 26 | "CSS", 27 | "CPP", 28 | "MoonScript", 29 | "ActionScript", 30 | "AppleScript", 31 | "CoffeeScript", 32 | "ECMAScript", 33 | "GDScript", 34 | "PostScript", 35 | ".NET", 36 | "TypeScript" 37 | ], 38 | "code_blocks": false 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /book/languages/clojure/intro.md: -------------------------------------------------------------------------------- 1 | # Inception 2 | 3 | **Clojure** is dynamic, modern and functional dialect of Lisp on the Java platform. 4 | Clojure has a Lisp macro system. Just like the other Lisps, code is treated as data. 5 | 6 | Clojure supports immutable data structures and immutability. It does encourage programmers to be explicit about managing identity and its states. 7 | It's intended to facilitate developing more robust, especially concurrent programs that are fast and simple. 8 | 9 | Commercial support for Clojure is provided by Cognitect. 10 | 11 | Clojure was developed because the creator wanted kinda modern Lisp for functional programming, designed for concurrency and symbiotic with the Java platform. 12 | 13 | > File extensions for Clojure code are .clj .cljs .cljc and .edn 14 | -------------------------------------------------------------------------------- /book/languages/jvm/clojure/intro.md: -------------------------------------------------------------------------------- 1 | # Inception 2 | 3 | **Clojure** is dynamic, modern and functional dialect of Lisp on the Java platform. 4 | Clojure has a Lisp macro system. Just like the other Lisps, code is treated as data. 5 | 6 | Clojure supports immutable data structures and immutability. It does encourage programmers to be explicit about managing identity and its states. 7 | It's intended to facilitate developing more robust, especially concurrent programs that are fast and simple. 8 | 9 | Commercial support for Clojure is provided by Cognitect. 10 | 11 | Clojure was developed because the creator wanted kinda modern Lisp for functional programming, designed for concurrency and symbiotic with the Java platform. 12 | 13 | > File extensions for Clojure code are .clj .cljs .cljc and .edn 14 | -------------------------------------------------------------------------------- /book/languages/brainfuck/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | Brainfuck was first implemented and described by Urban Müller in 1993, attempting to design a language for which he could write 4 | the smallest possible compiler. The language was inspired by False. Müller decided to name his language brainfuck 5 | (with the initial letter in lower case, although it is now often capitalized). He uploaded the first Brainfuck compiler to Aminet 6 | in 1993. The program came with a readme file, which briefly described the language, and challenged the reader 7 | > Who can program anything useful with it? :) 8 | 9 | Müller also included an interpreter and some quite elaborate examples 10 | 11 | It is not known was Müller aware of or influenced by Böhm's language P'' (1964), of which brainfuck can be considered a minor 12 | variation. 13 | -------------------------------------------------------------------------------- /book/languages/csharp/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | Compiled code is usually seen as an advantage, but it also has its own drawbacks. If you change any part of your code, you must recompile the whole application, this makes the deployment process a bit tedious. 4 | 5 | Even though C# is a compiled language, it's not as fast as native code compiled languages. The two main reasons for this are: C# is compiled to IL (intermediate language) instead of machine code and due to the overhead added by the GC (garbage collector) 6 | 7 | Finally, even though C# is Cross-Platform compatible, it is still used mainly within .NET ecosystem and you would most likely see C# on Windows based OS. Nowadays it's gaining popularity (especially since .NET Core release) and is also being seen on other platforms as well such as on Linux and Mac. 8 | -------------------------------------------------------------------------------- /book/languages/golang/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | Some say that now is just a hype for Golang. 4 | Some say that Golang is hipster programming language. 5 | But I'll say something more. 6 | 7 | +I think the Golang is usefully language, specially for backend applications. 8 | +It's really fast, and for some, syntax similar to C would be an advantageous point. 9 | 10 | ## Sources 11 | 12 | * [**Wikipedia**](https://en.wikipedia.org/wiki/Go_(programming_language)) 13 | 14 | * [**Quora**](https://www.quora.com/What-are-the-advantages-and-disadvantages-of-Golang) 15 | 16 | * [**Awesome Go**](https://github.com/avelino/awesome-go#database) 17 | 18 | ## Regarding authors 19 | 20 | This chapter was made by [Skayo](https://github.com/Skayo) with grammar corrections made by [Gadila Shashank Reddy](https://github.com/gadilashashank). 21 | -------------------------------------------------------------------------------- /book/languages/assembly/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | Assembly language is a big leap from machine code towards higher level languages, but like any other programming language assembly also has its own set of advantages and disadvantages. 4 | 5 | You might be wondering why only C was used as a comparison. The reason is that C is one of the few high level languages that offers similar speed and performance as assembly or other low level languages and is also highly portable. 6 | 7 | ## Sources and reference 8 | 9 | - [Quora](https://www.quora.com/Why-is-Assembly-Language-used) 10 | 11 | - [Wikipedia](https://en.wikipedia.org/wiki/Assembly_language) 12 | 13 | - [Apollo-11 Guidance computer source code](https://github.com/chrislgarry/Apollo-11) 14 | 15 | - [RISC-V opcodes](https://github.com/riscv/riscv-opcodes/blob/master/opcodes) 16 | -------------------------------------------------------------------------------- /book/languages/assembly/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | ## Creation 4 | 5 | The first Assembly Language was developed by Kathleen Booth in 1947 for the ARC2 at Birkbeck, University of London following work with John von Neumann and Herman Goldstine at the Institute for Advanced Study. 6 | After this several other variations of Assembly Language have been developed and higher abstractions of the language have been created. 7 | 8 | ## Purpose 9 | 10 | Back in the day it was extremely tedious, error prone and time consuming for programmers to "code" in binary. Even the smallest of the tasks required huge amount of thinking and calculations. Building huge programs back then was a mammoth task. So the assembly languages have been created to get rid of. 11 | The very tedious part of coding in binary was relieved by assembly and it helped concentrate more on the problems. 12 | -------------------------------------------------------------------------------- /book/languages/golang/misc.md: -------------------------------------------------------------------------------- 1 | # Some interesting things 2 | 3 | * **Twitch.tv**, an IRC based chat was migrated from Python to Golang 4 | 5 | * **SoundCloud** says they use Golang for ``dozens of systems`` 6 | 7 | * **Netflix** use it for their server architecture 8 | 9 | * **Docker** uses Golang for a set of tools that deploys Linux containers 10 | 11 | * **Uber** has their geo data and location components built on Golang 12 | 13 | ## Example of code written in Go compared to other languages 14 | 15 | ### Golang 16 | 17 | ```Golang 18 | package main 19 | 20 | import "fmt" 21 | 22 | func main() { 23 | fmt.Println("Hello, World") 24 | } 25 | ``` 26 | 27 | ### Python 28 | 29 | ```Python 30 | print "Hello world!" 31 | ``` 32 | 33 | ### Ruby 34 | 35 | ```Ruby 36 | puts "Hello world!" 37 | ``` 38 | 39 | Just a simple example of `Hello World` type of code. 40 | -------------------------------------------------------------------------------- /book/languages/malbolge/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | Malbolge was meant to be a joke language, but fiddling with it to find real world use case is **not** waste of time 4 | (unlike brainfuck), due to cryptographical possibilities! 5 | 6 | Thinking about Malbolge in real terms is a bit risky, it's always quicker and easier to program other languages. Malbolge 7 | doesn't really differ in problem it's solving with other esoterIc languages, it was already mentioned in Brainfuck chapter, 8 | 9 | Like with most esoteric languages, to play around with Malbolge you need basically no experience - basic knowledge of maths and 10 | decent imagination are going to be sufficient. 11 | 12 | Summing around disadvantages and advantages - Malbolge is impractical as heck and it's dangerous to consider Malbolge real 13 | language. But there's nothing bad in playing with it, trying to find real world use cases! 14 | -------------------------------------------------------------------------------- /book/languages/golang/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | ## Far, far away in a company called **Google**... was created the Golang programming language 4 | 5 | It was announced in **November 2009**, 6 | but its 1.0 version was released in **March 2012**. 7 | 8 | It's originally designed by **Robert Griesemer**, **Rob Pike** and **Ken Thompson**. 9 | They were **Google** engineers and Go was an experiment. 10 | 11 | They wanted to make programming language: 12 | 13 | * that **doesn't require** IDE but with support for them, 14 | 15 | * that **supports** networking and multitasking, 16 | 17 | * that **is productive and readable**, without excessive boilerplate (like Ruby or Python has), 18 | 19 | * that **is statically typed** and **scalable** to large systems (ex. Java or C++). 20 | 21 | ## Golang now 22 | 23 | Now Golang is used in some of **Google** production systems, but it's well-recognized language on whole Earth. -------------------------------------------------------------------------------- /book/languages/python/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | Given such a lengthy description on how good is python as a programming language it is easy to be 4 | mistaken that python does not have any shortcomings. Some are listed: 5 | 6 | * Since python is an interpreted language and it being built on C/C++ execution speed is slow. But 7 | the benefits/advantages dramatically outweigh this issue. 8 | 9 | * Due to the above point python scripts are slower than other scripting languages. 10 | 11 | * Database access layers are underdeveloped in python so server side applications involving extensive 12 | database use usually are not written in python. 13 | 14 | * Rare run time errors due to the dynamic typing of variables. 15 | 16 | * Errors are detected only when the buggy code is executed. In a production environment this could 17 | be a problem. 18 | 19 | * Migration from python 2 to python 3 is a real pain. 20 | -------------------------------------------------------------------------------- /book/languages/brainfuck/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | Let's face it. Brainfuck is esoteric language. It was created as a joke, and conforming to author's will is recommended. 4 | There are many so-called Brainfuck hackers around, but being honest, You can't earn a living programming in Brainfuck. 5 | 6 | Brainfuck is too impractical to be using language in real-world cases. Developers would cost way too much and work really 7 | inefficiently. Albeit low abstraction level, Brainfuck is memory and CPU time inefficient (a bit like JavaScript on web), 8 | so it's not very viable to write anything in bare Brainfuck and you'd be better off by using some kind of Brainfuck assembler, 9 | or HLL to brainfuck compiler, but none of the listed can beat pure C implementation instead of Brainfuck one. 10 | 11 | Finally, the language is a bit constrained - I/O is limited to console input and output, greatly reducing use cases. 12 | -------------------------------------------------------------------------------- /book/languages/js/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | Many refer JS as a necessary evil. It can help in making the websites more interactive and interesting 4 | while introducing potential problems due to negligible or no validation of its working on the server 5 | end. Although several standards and protocols have been created for the safe execution of JS like 6 | *Sandbox Environment*, *Strict Mode*, *Same origin request policy*, etc it still remains as a potential 7 | gateway to exploit negligent or non careful users. 8 | 9 | ## Sources 10 | 11 | * [Wikipedia](https://en.wikipedia.org/wiki/JavaScript) 12 | 13 | ## Regarding the authors 14 | 15 | This chapter was originally written by Skayo and additions were made to it 16 | by Gadila Shashank Reddy. For the original content written by Konrad, see 17 | [here.](https://github.com/Skayo/Community-Programming-Book/tree/f8c9cf8fc2d7cad783f85393e3e5103f8bc76b35/book/languages/js) 18 | -------------------------------------------------------------------------------- /book/languages/perl/intro.md: -------------------------------------------------------------------------------- 1 | 2 | # Introduction 3 | 4 | **Perl** is an interpreted language optimized for processing arbitrary text files, extracting information, and printing reports. 5 | It is also a good language for *system management tasks.* The language is intended to be practical, easy to use, efficient, and 6 | complete, rather than beautiful-tiny, elegant, and minimal. Perl was written by Larry Wall, with help of other contributors. 7 | 8 | **Perl** is bundled with various Linux distros and other UNIX-like systems. You can install it on Windows (R). 9 | 10 | Perl is interpreted. This can be either an advantage or disadvantage, depending on your needs. For example, Perl has a short 11 | development cycle compared to compiled languages, but it will never reach their efficiency. 12 | 13 | Perl is written to be practical. This means that it's complete, easy to use and relatively efficient. 14 | 15 | Let's dive into Perl' history! 16 | -------------------------------------------------------------------------------- /book/languages/haskell/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | It's really useful to know Haskell. 4 | That language seems really underrated by the community of other languages. 5 | It's nice to know more languages and their features because no one knows when we'll need specified technology. 6 | If you do love math, you're gonna love Haskell 7 | 8 | ## Sources 9 | 10 | * [**Wikipedia**](https://en.wikipedia.org/wiki/Haskell_(programming_language)) 11 | 12 | * [**Official Haskell Page**](https://www.haskell.org) 13 | 14 | * [**Future Learn**](https://www.futurelearn.com/courses/functional-programming-haskell/0/steps/27239) 15 | 16 | * [**Haskell Wiki**](https://wiki.haskell.org) 17 | 18 | * [**Why Haskell is cool**](https://gist.github.com/hrldcpr/2430176) 19 | 20 | * [**Your Language Sucks**](https://wiki.theory.org/index.php/YourLanguageSucks) 21 | 22 | ## Regarding authors 23 | 24 | This chapter was made by [Skayo](https://github.com/Skayo). 25 | -------------------------------------------------------------------------------- /book/languages/perl/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | **Perl** derives most of its syntax from well-known languages and tools common in UNIX-like operating systems. 4 | 5 | Becoming a good programmer with Perl, with previous knowledge of C, Shell script, Sed, Awk and other UNIX tools 6 | is relatively easy. Perl is **really** easy to learn! 7 | 8 | Perl with CPAN has a module to do pretty much anything you'd ever want to do and even more for things you 9 | probably don't want to do. 10 | 11 | Perl is a very entraining language to work (like C or Assembly) because of the freedom it provides. 12 | 13 | Perl is stable and predictable - it just requires basic UNIX knowledge and decent Perl intuition. 14 | 15 | Finally, Perl has developed text processing capabilities to the extreme - You want to strip newlines from input? Check it out: 16 | 17 | ```pl 18 | $_ = do { local $/; <> }; 19 | s/[\n\r\t ]+//g; 20 | print; 21 | ``` 22 | 23 | As you can see, it's pretty simple and compact! 24 | -------------------------------------------------------------------------------- /book/languages/csharp/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | C# was Developed by Anders Hejlsberg at Microsoft as part of .NET framework initiative in the late 2000's. 4 | 5 | The name comes from musical notation where a sharp symbol(#) sets the note higher in pitch by one semitone. The story of naming this language is similar to that of C++, where the ++ being the increment operator, was meant to say that C++ is an improvement over C. 6 | 7 | Some say that the sharp symbol also resembles four ”+” symbols (in a 2x2 grid), implying that the language is an increment of C++. 8 | 9 | In its early 1.0 version, C# looked a lot like its predecessor Java (released in 1991). 10 | But it has grown quickly since then. With extensive support from Microsoft promoting C# as its primary .NET framework language, it gained a large audience and became one of the most popular programming languages in the world. 11 | 12 | At the time of writing this chapter, C# version stands at 7.0 and is continuously evolving. 13 | -------------------------------------------------------------------------------- /book/languages/lua/misc.md: -------------------------------------------------------------------------------- 1 | # Some interesting facts 2 | 3 | * **Awesome WM** is mainly written in Lua and uses it as its configuration file format 4 | 5 | * **Cheat Engine**, memory editor/debugger uses Lua to be embedded in its "cheat tables" 6 | 7 | * **Conky**, a Linux system monitor, uses Lua for advanced graphics 8 | 9 | * **CRYENGINE**, game engine, uses Lua for user scripts 10 | 11 | * **Garry's Mod** uses Lua. 12 | 13 | ## Example of "Hello World" code written in Lua compared to other programming languages 14 | 15 | ### **Lua** 16 | 17 | ```Lua 18 | print("Hello World!") 19 | ``` 20 | 21 | ### **JavaScript** 22 | 23 | ```JavaScript 24 | "use strict" 25 | console.log("Hello world!"); 26 | ``` 27 | 28 | ### Haskell 29 | 30 | ```haskell 31 | module Main where 32 | 33 | main :: IO () 34 | main = putStrLn "Hello, World!" 35 | ``` 36 | 37 | ### **Python 3** 38 | 39 | ```Python 40 | print("Hello, world!") 41 | ``` 42 | 43 | ### **Ruby** 44 | 45 | ```Ruby 46 | puts "Hello world!" 47 | ``` 48 | -------------------------------------------------------------------------------- /book/languages/python/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | Python doesn't have a target audience. It can be used for multiple purposes and there are several 4 | libraries and frameworks built to simplify specific applications. Some fields where python can be best 5 | used are: 6 | 7 | *Examples of libraries/frameworks built for the particular application are given in brackets.* 8 | 9 | * Web development (Django, Flask) 10 | 11 | * Data analysis (Numpy) 12 | 13 | * Machine learning (TensorFlow) 14 | 15 | * Computer Vision (OpenCV) 16 | 17 | * Game development (Pygame) 18 | 19 | * Web Scraping (Beautiful Soup) 20 | 21 | * GUI development (PyQt) 22 | 23 | * Rapid prototyping 24 | 25 | and the list goes on and on... 26 | 27 | Python can also be used in places where precise numerical calculations are required because precision 28 | in calculations in python is limited only by physical resources and not the language. This feature 29 | makes python one of the best language to be used in scientific works. 30 | -------------------------------------------------------------------------------- /book/languages/malbolge/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | Malbolge was invented by Ben Olmstead back in 1998. First Malbolge program was written in 2000, but it wasn't written by human - it 4 | was generated by a beam search algorithm implemented in Lisp. 5 | 6 | Later, Lou Scheffer posted a few of his works regarding Malbolge and provided a `cat`-like to copy its input to its output. He also 7 | mirrored the original interpreter and specification after the original site went down, and offered a general strategy of writing 8 | programs in Malbolge as well as some thoughts on its Turing-completeness. 9 | 10 | Olmstead believed Malbolge to be a linear bounded automaton. There is a discussion about whether one can implement sensible loops 11 | in Malbolge, it took many years before the first non-terminating program was introduced. 12 | 13 | Hisashi Iizawa proposed first "99 bottles of beer" application in 2005. He also proposed a guide for programming in Malbolge 14 | regarding it's usefulness software protection. 15 | -------------------------------------------------------------------------------- /book/languages/java/misc.md: -------------------------------------------------------------------------------- 1 | # Interesting facts about Java 2 | 3 | * Most of the Android apps are written in Java 4 | 5 | * Many banks and financial services also use Java 6 | 7 | * More than 95% of Enterprise Desktops run Java 8 | 9 | * 3 billion phones run Java 10 | 11 | * We can easily tell that every company on this world somehow is using at least a tiny piece of Java. 12 | 13 | ## Java code compared to other languages 14 | 15 | > Example of Hello World app in some languages 16 | 17 | ### Java 18 | 19 | ```java 20 | class HelloWorld { 21 | public static void main(String[] args) { 22 | System.out.println("Hello, World!"); 23 | } 24 | } 25 | ``` 26 | 27 | ### C++ 28 | 29 | ```cpp 30 | #include 31 | int main() 32 | { 33 | std::cout << "Hello, World!"; 34 | return 0; 35 | } 36 | ``` 37 | 38 | ### C 39 | 40 | ```c 41 | #include 42 | int main() 43 | { 44 | // printf() displays the string inside quotation 45 | printf("Hello, World!"); 46 | return 0; 47 | } 48 | ``` -------------------------------------------------------------------------------- /book/languages/jvm/java/misc.md: -------------------------------------------------------------------------------- 1 | # Interesting facts about Java 2 | 3 | * Most of the Android apps are written in Java 4 | 5 | * Many banks and financial services also use Java 6 | 7 | * More than 95% of Enterprise Desktops run Java 8 | 9 | * 3 billion phones run Java 10 | 11 | * We can easily tell that every company on this world somehow is using at least a tiny piece of Java. 12 | 13 | ## Java code compared to other languages 14 | 15 | > Example of Hello World app in some languages 16 | 17 | ### Java 18 | 19 | ```java 20 | class HelloWorld { 21 | public static void main(String[] args) { 22 | System.out.println("Hello, World!"); 23 | } 24 | } 25 | ``` 26 | 27 | ### C++ 28 | 29 | ```cpp 30 | #include 31 | int main() 32 | { 33 | std::cout << "Hello, World!"; 34 | return 0; 35 | } 36 | ``` 37 | 38 | ### C 39 | 40 | ```c 41 | #include 42 | int main() 43 | { 44 | // printf() displays the string inside quotation 45 | printf("Hello, World!"); 46 | return 0; 47 | } 48 | ``` -------------------------------------------------------------------------------- /book/languages/abc/misc.md: -------------------------------------------------------------------------------- 1 | # An example 2 | 3 | This section is meant to illustrate a sample code in ABC and compare it with 4 | equivalent code in Python and C. 5 | 6 | ## Function to convert given temperature from Fahrenheit to Celsius 7 | 8 | In ABC language. 9 | 10 | ```ABC 11 | HOW TO PRINT CELSIUS FROM a: 12 | PUT (a-32)*5/9 IN c 13 | WRITE a, "Fahrenheit =", 2 round c, "Celsius" / 14 | ``` 15 | 16 | The same code in Python3. 17 | 18 | ```Python 19 | def to_celsius(a): 20 | c = (a-32)*5/9 21 | print(a + "Fahrenheit = %.2f",c + "Celsius" ) 22 | ``` 23 | 24 | And in C 25 | 26 | ```C 27 | void to_celsius(float a) 28 | { 29 | c = (a-32)*5/9; 30 | printf("%f Fahrenheit is %.2f Celsius",a,c); 31 | return; 32 | } 33 | ``` 34 | 35 | The purpose of this example is to illustrate two things: The similarity between ABC and 36 | Python and also a glimpse of how ABC is slightly easier to code in compared to C. The second point 37 | might not be too obvious because the example is too short to notice the differences. 38 | -------------------------------------------------------------------------------- /book/languages/golang/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | ## Here are some advantages of using it 4 | 5 | * **Go compiles directly into machine code**. The compilation is fast, **cross-platform compatible** and it creates only 6 | one executable file without dependencies. 7 | 8 | * It is **safe**, as it uses strong and static typing. Also, garbage would be collected automatically and 9 | you can make really reliable software using Go. 10 | 11 | * It supports some kinds of **object-oriented programming (OOP)** and interfaces. 12 | 13 | * You can attach functions to any type. That's real flexibility. 14 | 15 | * Also, Golang supports functional programming features like **anonymous functions**, **closueres** and **first-class functions**. 16 | 17 | * Common utilities like **HTTP fetching**, **JSON parsing** and **encryption** are included by default in Go in the form of standard libraries. 18 | 19 | * Go has great built-in command-line tools (ex. **auto-formatting your code**, **test coverage reporting**, **refactoring tools**). 20 | -------------------------------------------------------------------------------- /book/languages/assembly/what_it_solves.md: -------------------------------------------------------------------------------- 1 | # What it solves 2 | 3 | Consider this instruction, where we have to add the two numbers 1 and 2. 4 | 5 | ## Assembly 6 | 7 | ```assembly 8 | mov edx, 1 9 | mov eax, 2 10 | add eax, edx 11 | ``` 12 | 13 | ## Hexadecimal 14 | 15 | ```hex 16 | ba01000000b80200000001d0 17 | ``` 18 | 19 | ## More readable hexadecimal 20 | 21 | ```binary 22 | 0: ba 01 00 00 00 mov edx,0x1 23 | 5: b8 02 00 00 00 mov eax,0x2 24 | a: 01 d0 add eax,edx 25 | ``` 26 | 27 | ## Binary code with a mistake. Happy debugging 28 | 29 | ```binary 30 | 000000000001001010000000000100110000000000100011000000000001001100000000010100101000001101100011 31 | ``` 32 | 33 | The purpose of an assembly language can easily be seen with the help of the above example. Assembly language with the help of its syntax makes it easier to code and not worry about trivial tasks such as opcodes, address calculations, etc. Mistakes if any can easily identified in assembly 34 | rather than in binary. Imagine finding such mistakes in a pool of just a numbers! 35 | -------------------------------------------------------------------------------- /book/languages/js/intro.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | ## Inception 4 | 5 | JavaScript (JS) is a high-level, interpreted programming language, used as a scripting language in 6 | web pages to generate dynamic content. Along with HTML and CSS, JavaScript is a part of the core 7 | technologies powering the World Wide Web and the Internet we know today. 8 | 9 | Though it was intended to be used as a client-side scripting language to generate dynamic web pages, 10 | JS has different variants that can handle applications such as the *front-end* of a website/web 11 | application (Vue.js, React.js, etc) and server-side scripting a.k.a the *back-end* of a website/web 12 | application (Node.js, etc). 13 | 14 | Some of its variants are also used in creating desktop and mobile native apps (Proton, Electron, etc) 15 | 16 | > The file extension of JavaScript is .js 17 | 18 | ```md 19 | The ".js" extension in the names of some frameworks like 20 | React.js is supposed to mean that they are related to 21 | JavaScript and not that they are individual files 22 | written in JavaScript. 23 | ``` -------------------------------------------------------------------------------- /book/languages/perl/disadvantages.md: -------------------------------------------------------------------------------- 1 | 2 | # Disadvantages 3 | 4 | The language has a bad reputation because of the "write only" way code can be produced in it, but, to be honest, you can write 5 | obfuscated code in all languages, some make it more difficult (Assembly, Java), some make it less difficult (JavaScript, Perl). 6 | 7 | Perl is easy to write, hard to write well. You will need a lot of experience to write good Perl code. 8 | 9 | Perl isn't geared for User Interfaces. To this day I can't figure a simple way to create UI. 10 | 11 | If you did years of Linux, bash, C, sed, awk, etc., for you Perl may seem intuitive. But if you came from Windows, and you don't 12 | have enough UNIX experience, a lot of the "intuitive" stuff probably looks totally insane. If you were forced to maintain such 13 | "write-only" code, you'd be probably angry. 14 | 15 | Finally, using prefixes like $, @ and % on identifiers isn't a good way to express your type system. Sigils are coming from 16 | BASIC-like languages. Ideas that BASIC initiated in general aren't very good practices today. 17 | -------------------------------------------------------------------------------- /book/languages/brainfuck/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | Brainfuck was meant to be a joke language, and it would be reasonable to leave it's as is. 4 | 5 | Thinking about Brainfuck in real terms is a bit risky, it's always quicker and easier to program other languages. On the other hand, Brainfuck brings back joy to 6 | programming allowing you to play around with the smallest units of a computer program while leaving language fully theoretical, 7 | not binding it to any definite machine (unlike Assembly, allowing you to feel not only joy while programming, but frustration too). 8 | To program Brainfuck, you'd need just a pencil and a reasonable amount of paper. Of course, you could do the same with other languages, 9 | but it's way less practical. 10 | 11 | To play around with Brainfuck you need basically no experience - basic knowledge of maths and decent imagination are going to be 12 | sufficient. 13 | 14 | Summing around disadvantages and advantages - Brainfuck is impractical and it shouldn't be considered real language. But there's 15 | nothing bad in playing with it! 16 | -------------------------------------------------------------------------------- /book/languages/js/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | Since JavaScript is basically a client-side scripting language, it can potentially introduce security 4 | issues by means of malicious implementations of the language. These issues can easily arise if the 5 | user is not careful enough and unknowingly causes the execution of malicious code. 6 | Some of these are mentioned. 7 | 8 | *These security issues are in no way a disadvantage of the language itself.* 9 | 10 | * Cross-site scripting (XSS) 11 | 12 | * Cross-site request forgery 13 | 14 | * JavaScript hijacking 15 | 16 | * Browser and plugin coding errors 17 | 18 | * Sandbox implementation errors 19 | 20 | * Malicious/Vulnerable libraries and frameworks 21 | 22 | Some other disadvantages of JavaScript which are not security issues but can be generated by the 23 | user. 24 | 25 | *Again these are in no way a disadvantage of the language itself.* 26 | 27 | * Potential loss of web page functionality due to user disabling JS script execution. This cannot be validated by the server because JS is client-side only. 28 | -------------------------------------------------------------------------------- /book/languages/haskell/misc.md: -------------------------------------------------------------------------------- 1 | # Interesting things about Haskell 2 | 3 | * [**Galois**](https://galois.com/) is an active Haskell user. 4 | 5 | * **Facebook** uses Haskell in several projects, including [Fighting spam with Haskell](https://code.fb.com/security/fighting-spam-with-haskell/) 6 | 7 | * **Ericsson** uses Haskell for the implementation of [Feldspar](http://hackage.haskell.org/package/feldspar-compiler), an EDSL for digital signal processing algorithms. 8 | 9 | * **Kaspersky** uses Haskell in it's antivirus software 10 | 11 | ## Haskell code compared to other languages 12 | 13 | > Example of Hello World code in several languages. 14 | 15 | ### Haskell 16 | 17 | ```haskell 18 | module Main where 19 | 20 | main :: IO () 21 | main = putStrLn "Hello, World!" 22 | ``` 23 | 24 | ### Golang 25 | 26 | ```golang 27 | package main 28 | 29 | import "fmt" 30 | 31 | func main() { 32 | fmt.Println("Hello, World") 33 | } 34 | ``` 35 | 36 | ### Python 37 | 38 | ```Python 39 | print "Hello world!" 40 | ``` 41 | 42 | ### Ruby 43 | 44 | ```Ruby 45 | puts "Hello world!" 46 | ``` -------------------------------------------------------------------------------- /book/languages/malbolge/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | Generally speaking, currently, Malbolge is a joke language. Therefore, it's not very efficient, nor easy to write. 4 | 5 | First of all, like all esoteric languages, it's a really good exercise for your brain! If Malbolge was Go of programming, Brainfuck 6 | would be chess, and Assembly would be checkers. 7 | 8 | Malbolge is really simple! It won't take long to learn it. 9 | 10 | There were attempts to use Malbolge in a few real world cases, including encryption! Just think what if some critical encryption 11 | algo would be implemented in Malbolge, and it would be **very** fast because of it's simplicity - it would take long, long time 12 | to discover how it's implemented. 13 | 14 | Finally, Malbolge is not language that machines can eaisly generate, therefore it's really secure language. Imagine writing 15 | Malbolge program displaying some kind header (copyright, program name, etc.). No one probably wouldn't even attempt to touch 16 | the code! 17 | 18 | There are a few Malbolge hackmes, that weren't solved **to this day**! 19 | -------------------------------------------------------------------------------- /book/languages/python/what_it_solves.md: -------------------------------------------------------------------------------- 1 | # What it solves 2 | 3 | Python is a very simple to learn language and attempts to make development process easier with some 4 | of its powerful features. One of them is modularity. This has helped in the making of extremely useful libraries which 5 | can do a job in the matter of a ready-made function call in python instead of wasting time in developing 6 | the utilities first and then using them in case of other languages. 7 | 8 | Several such libraries are created that can be included or "imported" as per need (modularity FTW) 9 | and there are python libraries for virtually anything. This is one major advantage of using python 10 | for developing anything. 11 | 12 | > Search for what you want to do and there's bound to be a library for the same. 13 | 14 | Python is created to be very flexible in the sense that its core is extremely bare-boned and all its 15 | utilities are included externally in the form of modules or packages and can easily accommodate 16 | changes unlike few other languages that have features included in their core and have limited scope 17 | for major changes without compatibility issues. 18 | -------------------------------------------------------------------------------- /book/languages/c/intro.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | **C** is a general-purpose, imperative programming language, supporting structured programming, lexical variable scope and 4 | recursion, with static, weakly enforced type system. C provides constructs that map to machine code, so it has found use in 5 | applications that had been coded in assembly language before, including operating systems, as well as various software for 6 | computers. 7 | 8 | C is an imperative procedural language. It was designed to be compiled using simple compiler, to provide low level stuff sufficent 9 | to replace a few tasks of assembly, and provide higher level language constructs that map efficiently to machine instructions, 10 | that require minimal run-time support, to increase usability of language. 11 | 12 | Despite its low-level capabilities, the language has wide cross-platform programming capabilities. A C89 program 13 | that is written with portability in mind can be compiled for a very wide variety of platforms and operating systems with 14 | few or no changes to its source code. The language has become available on a very wide range of platforms, from embedded 15 | systems to supercomputers. 16 | -------------------------------------------------------------------------------- /book/languages/java/intro.md: -------------------------------------------------------------------------------- 1 | # Inception 2 | 3 | **Java**, class-based, object-oriented, general-purpose language designed to have as few implementation dependencies as possible. 4 | 5 | It was originally created by **James Gosling** at **Sun Microsystems** and released in 1995 as a core for their Java platform. 6 | Java compilers, virtual machines and class libraries were originally published under Sun's proprietary licenses and in May of 2007 most of them were relicesed under the GNU General Public License. 7 | 8 | Back in the day, Sun defined four editions of Java, targeting different enviroments. That platforms are: 9 | 10 | * Java Platform, **Standard Edition** - normal workstation enviroment 11 | 12 | * Java Platform, **Enterprise Edition** - large internet enviroments 13 | 14 | * Java Platform, **Micro Edition** - enviroments with limited resources 15 | 16 | * **JavaCard** - smart cards 17 | 18 | ## Features 19 | 20 | * *Write once, run anywhere* 21 | 22 | * Portable and platform independent 23 | 24 | * Security 25 | 26 | * Architecture Neutral 27 | 28 | * Multithreaded 29 | 30 | * Dynamic 31 | 32 | * Robust 33 | 34 | * Object oriented 35 | 36 | >File extension for Java code is .java, .class and .jar 37 | -------------------------------------------------------------------------------- /book/languages/jvm/java/intro.md: -------------------------------------------------------------------------------- 1 | # Inception 2 | 3 | **Java**, class-based, object-oriented, general-purpose language designed to have as few implementation dependencies as possible. 4 | 5 | It was originally created by **James Gosling** at **Sun Microsystems** and released in 1995 as a core for their Java platform. 6 | Java compilers, virtual machines and class libraries were originally published under Sun's proprietary licenses and in May of 2007 most of them were relicesed under the GNU General Public License. 7 | 8 | Back in the day, Sun defined four editions of Java, targeting different enviroments. That platforms are: 9 | 10 | * Java Platform, **Standard Edition** - normal workstation enviroment 11 | 12 | * Java Platform, **Enterprise Edition** - large internet enviroments 13 | 14 | * Java Platform, **Micro Edition** - enviroments with limited resources 15 | 16 | * **JavaCard** - smart cards 17 | 18 | ## Features 19 | 20 | * *Write once, run anywhere* 21 | 22 | * Portable and platform independent 23 | 24 | * Security 25 | 26 | * Architecture Neutral 27 | 28 | * Multithreaded 29 | 30 | * Dynamic 31 | 32 | * Robust 33 | 34 | * Object oriented 35 | 36 | >File extension for Java code is .java, .class and .jar 37 | -------------------------------------------------------------------------------- /book/languages/abc/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | ## Creation 4 | 5 | ABC was created by by Leo Geurts, Lambert Meertens and Steven Pemberton at 6 | the Centrum Wiskunde & Informatica (CWI) in the Netherlands. It was developed iteratively with ABC 7 | being the fourth iteration. The first two iterations were developed by Geurts and Meertens at the 8 | CWI between 1975-76 and 1977-79 respectively. The third iteration was developed between 1979-81 with 9 | the help of Robert Dewar from the New York University and had "B" as a working title. 10 | 11 | After using B for 5 years, Geurts, Meertens and Pemberton came up with a new iteration based on the 12 | pros and cons of B and other programming languages of the time. They named this language *ABC* and 13 | as of 1986, it was ready for a formal release and was undergoing final revisions. Probably ABC was 14 | released to the public in 1987. 15 | 16 | ## Purpose 17 | 18 | ABC was intended for teaching and prototyping purposes rather than systems programming. 19 | It was created to replace some older languages such as BASIC, Pascal and AWK. As it turns out ABC 20 | is easier to learn than BASIC but more powerful than Pascal. It's initial aims were to be: 21 | 22 | * Simple 23 | 24 | * Interactive 25 | 26 | * Structured 27 | -------------------------------------------------------------------------------- /book/languages/lua/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | **Lua** was created in 1993 by the members of the **Computer Graphics Technology Group (Tecgraf)**. 4 | Roberto Ierusalimschy, Luiz Henrique de Figueiredo and Waldemar Celes made Lua at the Pontifical Catholic University of Rio de Janeiro in Brazil. 5 | 6 | Back in the day *(1977-1992)*, Brazil had a strong trade barriers policy for both computer hardware and software. Clients just couldn't afford to buy software from abroad. That's the reason which led Tecgraf to implement basic tools from scratch. 7 | 8 | Before Lua, there were two languages, **SOL (Simple Object Language)** and **DEL (Data-entry language)**. They have been developed by Tecgraf to add some flexibility to the other projects. But those two were just bad and Tecgraf wanted to have full programming power in them. 9 | 10 | **Lua 1.0** was designed in a different way than other programming languages back then. 11 | Syntax was borrowed from **Modula** (if, while etc.), **C++** (local variable declaration only when it's needed), **CLU** (multiple assignments/returns from function calls), **AWK** and **SNOBOL** (associative arrays). 12 | Lua's creators also say that **LISP** and **Scheme** had a major influence on developing the table as the primary data structure of Lua. 13 | -------------------------------------------------------------------------------- /book/languages/haskell/intro.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | ## Inception 4 | 5 | **Haskell** is **standardized, general-purpose compiled purely functional programming language**. 6 | Haskell is written in several languages but **it's basically a mixture of C and Assembly**. 7 | This language was created, by the whole team, that included: 8 | 9 | * Lennart Augustsson 10 | * Dave Barton 11 | * Brian Boutel 12 | * Warren Burton 13 | * Joseph Fasel 14 | * Kevin Hammond 15 | * Ralf Hinze 16 | * Paul Hudak 17 | * John Hughes 18 | * Thomas Johnsson 19 | * Mark Jones 20 | * Simon Peyton Jones 21 | * John Launchbury 22 | * Erik Meijer 23 | * John Peterson 24 | * Alastair Reid 25 | * Colin Runciman 26 | * Philip Wadler 27 | 28 | ## Features, engineering stuff here 29 | 30 | **Haskell** has a lot of features, the most known, are here: 31 | 32 | * lazy evaluation 33 | 34 | * monads 35 | 36 | * type polymorphism 37 | 38 | * type classes 39 | 40 | * pattern matching 41 | 42 | * lambda expressions 43 | 44 | * cache in functions 45 | 46 | **Haskell** specification is published and open for everyone. **Glasgow Haskell Compiler (GHC)** is its main implementation, which is both, native-code compiler and interpreter, that runs on most of the platforms. 47 | 48 | > File extensions for Haskell code are .hs and .lhs 49 | -------------------------------------------------------------------------------- /book/languages/golang/intro.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | ## Inception 4 | 5 | **Golang** (GO) is another high-level programming language. 6 | It's usually used to make **backend stuff**. 7 | `Backend stuff`, I mean, for example rest API for your website, CMS for your website or chatbot. 8 | But, as it always is, the community made a lot of frameworks based on Golang, 9 | for example, A framework to use Golang as a frontend language (ex. **Buffalo**). 10 | 11 | Also, you can create Desktop UI in Golang. 12 | Amount of frameworks for Golang is not such a big deal as it was for JavaScript, 13 | but it's nice to have something more than just pure language. 14 | 15 | ## More engineering stuff here 16 | 17 | Golang is a statically typed compiled language in the tradition of C, but with some more features. 18 | Overall, **Go's syntax is similar to C's syntax**. 19 | 20 | That features as I said are for example: 21 | 22 | * **garbage collection** 23 | 24 | * **structural typing** 25 | 26 | * **concurrent programming** 27 | 28 | Tools for Golang, compiler and source code of Golang are free and open-source. 29 | 30 | If you want to see the full list of Golang libraries, packages, and stuff, you can see it [here](https://github.com/avelino/awesome-go#database). 31 | 32 | > The file extension for Golang is **.go** 33 | -------------------------------------------------------------------------------- /book/languages/brainfuck/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | Generally speaking, currently, Brainfuck is seen as joke language or proof-of-concept language. Therefore, it's not very efficient, nor easy to write. 4 | 5 | First of all, it's a really good exercise for your brain! Brainfuck, as the name suggests, is very hard to write and read, but not understand! You don't have to waste a lot of time just to understand this fascinating language, you can view it as Sudoku of programming. 6 | 7 | Also, Brainfuck is a great learning tool. You can create code generators, optimizing interpreters, learn JIT & AOT compilation basics, compiler construction (by, for example, creating a compiler from Brainfuck to C or some kind of assembly language to Brainfuck). 8 | 9 | Brainfuck is really simple too! It consists of eight instructions so it's really easy to learn. 10 | 11 | Let's imagine Brainfuck computer - it would consume a really small amount of power (x86 has wide instruction set, ARM has it tighter, while Brainfuck destroys other real architectures having only eight!) and excel in simple tasks. 12 | 13 | Finally, Brainfuck can help to **understand** the basics - how do you multiply two numbers? How do you create a conditional statement? In other languages, it might seem simple, but Brainfuck challenges the programmer creating this unique spirit. 14 | -------------------------------------------------------------------------------- /book/languages/brainfuck/misc.md: -------------------------------------------------------------------------------- 1 | 2 | # Miscellaneous 3 | 4 | Brainfuck is an awesome language with a wide range of community-made tools. 5 | 6 | My work regarding Brainfuck: 7 | 8 | * [Izmit3](https://github.com/KrzysztofSzewczyk/Izmit3) ([v1 & v2](https://uw426.mikr.us)) - C to Brainfuck compiler made by me in Perl, maybe as a challenge, maybe for fun. 9 | 10 | * [Brainfuck experiments](https://github.com/KrzysztofSzewczyk/Esoteric) - Repository containing a few Brainfuck experiments. 11 | 12 | * [Two](https://github.com/KrzysztofSzewczyk/Angelos) [Brianfuck Assemblers](https://github.com/KrzysztofSzewczyk/asm2bfv2) - As the name suggests, I have made a few Brainfuck assemblers. 13 | 14 | There is also: 15 | 16 | * [Brainfuck compiler in Brainfuck by Matslina](https://github.com/matslina/awib). 17 | 18 | * [A few interpreters](https://github.com/rdebath/Brainfuck/tree/master/extras) and [Brainfuck to everything converters](https://github.com/rdebath/Brainfuck/tree/master/bf2any) made by Rdebath 19 | * The fastest Brainfuck interpreter known to me, [Tritium](https://github.com/rdebath/Brainfuck/tree/master/tritium), made by Rdebath. 20 | 21 | * [Brainfuck experiments](http://www.hevanet.com/cristofd/brainfuck/) by Daniel B. Cristofani 22 | 23 | * ["Industrial-grade" Brainfuck compiler](https://github.com/Wilfred/bfc) by Wilfred 24 | 25 | -------------------------------------------------------------------------------- /book/languages/python/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | ## Creation 4 | 5 | Python started out as a "hobby programming project" in December 1989 by Guido van Rossum at 6 | Centrum Wiskunde & Informatica (CWI) in the Netherlands. Internal releases of python appeared at CWI 7 | in 1990. Python was released to the public for the first time on February 20, 1991. 8 | 9 | ## Purpose 10 | 11 | On how python began written by van Rossum in 1996: 12 | 13 | > ...In December 1989, I was looking for a "hobby" programming project that would keep me occupied 14 | during the week around Christmas. My office ... would be closed, but I had a home computer, and not 15 | much else on my hands. I decided to write an interpreter for the new scripting language I had been 16 | thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a 17 | working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python's Flying Circus). \ 18 | — Guido van Rossum 19 | 20 | Python was supposed to be a successor to the ABC language capable of handling exceptions and interfacing 21 | with the Amoeba operating system. But with its strong emphasis on being "programmer friendly" it 22 | quickly evolved as a popular choice of language among programmers for development and fast prototyping. The reasons are mentioned in the following sections. 23 | -------------------------------------------------------------------------------- /book/languages/js/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | JavaScript was initially created to fulfill the following requirements : 4 | 5 | * Must be able to assemble components like plug-ins and images in web pages. 6 | 7 | * Must be a lightweight scripting language. 8 | 9 | * Must run in the browser environment itself and the code included in the markup of the website. 10 | 11 | * Must complement Java. 12 | 13 | * Easy to learn and use by web developers and amateur programmers. 14 | 15 | However over subsequent versions, JavaScript was able to do *more* than assemble components on web 16 | pages. Later versions of JavaScript included capabilities such as event driven programming which 17 | basically meant that the user was able to *interact* with the web page. This made way for 18 | *[Web 2.0](https://en.wikipedia.org/wiki/Web_2.0)* where websites were able to interact with the 19 | user and able to generate content based on user driven events or actions unlike the *Web 1.0* where 20 | static content was served and the user was only able to read it. 21 | 22 | Even further improvements meant that JS was able to handle server-side scripts and computing and 23 | also used in developing native and stand-alone applications instead of being only restricted to the 24 | browser environment. Also JacvaScript has a relatively high speed of execution though not as fast 25 | as C or Rust. 26 | -------------------------------------------------------------------------------- /book/languages/perl/history.md: -------------------------------------------------------------------------------- 1 | 2 | # History 3 | 4 | **Larry Wall** developed Perl in *1986*. He was a systems programmer on a project that was developing multilevel, secure wide area 5 | networks. Larry was in charge of installation. Larry's primary job was system support "guru". During this stint, he developed 6 | several useful UNIX tools such as rn, patch, and warp. **Perl** was developed in response to a management requirement for a 7 | configuration management and control system. Larry's manager asked him to produce reports. Larry's first thought was to use awk to 8 | produce the reports. Awk couldn't handle opening and closing multiple files based on information in the files. Larry didn't want to 9 | code a special purpose tool just for this job, so a new language was born. 10 | 11 | You'll find a reference to the former five-letter 12 | version in the entry for the acronym Practical Extraction and Report Language. The manual page was **only 15 pages long**. But Perl was 13 | faster than sed and awk and began to be used on other aspects of the project. Larry moved on to support research and development 14 | and took Perl with him. Perl was becoming a good tool for system administration. Larry borrowed Henry Spencer's regular expression 15 | package and modified it for Perl. Then Larry added most of the goodies he and other people wanted and released it on the Internet. 16 | -------------------------------------------------------------------------------- /book/languages/assembly/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | Currently assembly is used very rarely, because nowadays we use higher-level languages which are "translated" through an assembler to assembly and then assembly makes machine code out of it. 4 | Since machine code and assembly are tied together, assembly can be used in applications where speed and performance is of importance, to optimize directly the machine code. 5 | 6 | > The Computers on-board of the spacecraft of the Apollo missions used assembly, if the entire code would be printed out it would occupy about 5 feet in height. 7 | 8 | The assembly language can be used in these types of application: 9 | 10 | * To build software which requires serious machine level optimizations or to beat compilers in code optimization. \ 11 | For e.g.: System software in an OS. 12 | 13 | * In embedded programming where space is limited to an extent that higher level languages 14 | (like C) can use more space than required or actually present. 15 | 16 | * To access hardware features which are either platform specific or too uncommon and not 17 | available for optimization in higher languages such as C. 18 | 19 | * Written for custom hardware that doesn't have a mechanism to convert high level code 20 | into binary. The Apollo 11 lunar mission is an example of this as it used code 21 | written in assembly in an era where high level languages did not exist. 22 | -------------------------------------------------------------------------------- /book/languages/cpp/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | Since C++ is a rather low level language (by today's standards), it requires a large amount of code to be written for performing tasks. Simply put, the codebase of C++ can get quite large, if not 4 | extremely massive, if the application in question is large. This, in turn means that, to build an application which, perhaps, can be written in tens of lines of code in high level languages like 5 | Python and Ruby, can take hundreds of lines of code in C++. 6 | 7 | Therefore, a language like C++ is simply not usable for creating scripts which perform tasks that don't require heavy performance. Here, the compiled nature of C++ is also not useful because it is 8 | quite cumbersome to keep compiling a small piece of code whenever a change is made. 9 | 10 | For example, if we create a script to copy and/or move files around on our computer based on specific constraints, it can be rather easy to perform on a language like Python and Ruby, or even 11 | *Bash*. But to build the same script on C++ would be counter-productive to say the least. 12 | 13 | This holds especially true because scripts usually tend to be cross platform and we expect them to simply run on whichever system we need. But for C++, we will have to compile the code first which 14 | would require us to have the compiler toolchain on the system itself. 15 | 16 | Hence, using C++ in such cases is not useful. -------------------------------------------------------------------------------- /book/credits.md: -------------------------------------------------------------------------------- 1 | # Credits 2 | 3 | We have to thank these great people on helping to write this book. Everyone here listed as either wrote something, helped with the structure or made beautiful artwork. 4 | 5 | - ODXT 6 | 7 | - [devRant](https://devrant.com/users/ODXT) 8 | - [GitHub](https://github.com/ODXT) 9 | 10 | - Michelle 11 | 12 | - [devRant](https://devrant.com/users/Michelle) 13 | 14 | - Alice Peters 15 | 16 | - [devRant](https://devrant.com/users/Alice) 17 | - [GitHub](https://github.com/Parou) 18 | 19 | - Skayo 20 | 21 | - [devRant](https://devrant.com/users/Skayo) 22 | - [GitHub](https://github.com/Skayo) 23 | - [Twitter](https://twitter.com/Skayo_) 24 | 25 | - Filipe Manuel De Sousa Ramalho 26 | 27 | - [devRant](https://devrant.com/users/FilipeRamalho) 28 | - [GitHub](https://github.com/FilipeRamalho) 29 | 30 | - Chirag Khandelwal 31 | 32 | - [devRant](https://devrant.com/users/Electrux) 33 | - [GitHub](https://github.com/Electrux) 34 | 35 | - Gadila Shashank Reddy 36 | 37 | - [devRant](https://devrant.com/users/silverstar) 38 | - [GitHub](https://github.com/gadilashashank) 39 | 40 | - Lucas Parzianello 41 | 42 | - [devRant](https://devrant.com/users/lucaspar) 43 | - [GitHub](https://github.com/lucaspar) 44 | 45 | - Krzysztof Szewczyk (Παλαιολόγος) 46 | 47 | - [devRant](https://devrant.com/users/KrzysztofSzewczyk) 48 | - [GitHub](https://github.com/KrzysztofSzewczyk) 49 | -------------------------------------------------------------------------------- /book/languages/cpp/conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | C++ is a great language, used in most enterprise level of industries and open source communities alike, to build high performance and low resource applications. The language is very flexible and 4 | allows one to perform virtually any task one may want to. From building a web browser (Chromium), to building massive libraries (TensorFlow), C++ does a very good job as a tool to build them. 5 | 6 | It is a very in-depth language and provides constructs and mechanisms for many concepts. One cannot learn the language by reading a book and it is a must to actually write programs and understand 7 | errors as they arrive to be able to understand the language and become proficient in it. And, *always* have the mindset of learning new things about the language. There is always a very high chance 8 | that C++ can surprise one with some nooks and crannies or features that it contains, so, it will take a long long time for someone to imbibe C++ into oneself. However, the journey is definitely 9 | rewarding, and fun. 10 | 11 | Finally, in no way, is C++, a *best* language to use for everything. No language is, but one should understand when to use which language so that development is easier and work gets done 12 | efficiently. 13 | 14 | Therefore, it is wise to work with other languages as well to improve understanding of programming in general and to be able to use the right tool at the right time. -------------------------------------------------------------------------------- /book/languages/c/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | Back in the day C was closely tied to the UNIX operating system, originally implemented in assembly language on a PDP-7 by Dennis 4 | Ritchie and Ken Thompson, incorporating several ideas from colleagues. Eventually, they decided to port the operating system to a 5 | PDP-11. The original PDP-11 version of Unix was developed in assembly language. Thompson needed a programming language for UNIX 6 | utilities. At first, he tried to make a Fortran compiler, but soon gave up the idea and made a new language B language, Thompson's 7 | simplified version of BCPL. However, small amount of utilities were made using B, because of it's unsatisfying efficency. Also, B 8 | could not take advantage of some of the PDP-11's features such as byte addressability. 9 | 10 | In 1972, Ritchie started to improve B, which resulted in creating a new language - C. C compiler and some utilities made were later 11 | included in Unix. At Version 4 Unix (1973), the kernel was extensively re-implemented in C. By this time, the C language had 12 | acquired some powerful features. 13 | 14 | Unix was one of the first operating system kernels implemented in a language other than assembly. In around 1977, Ritchie and 15 | Stephen C. Johnson made further changes to the language to facilitate portability of the Unix operating system. Johnson's Portable 16 | C Compiler served as the basis for several implementations of C on new platforms. 17 | -------------------------------------------------------------------------------- /book/languages/csharp/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | C# was designed to be simple and easy to use, its syntax is very natural and non-verbose. As a high-level language, it abstracts away most of the complex details, giving the user an ability to focus on its pure programming tasks instead of worrying about the little bits. 4 | 5 | While abstracting away the details, C# doesn't limit your abilities and gives you the option to work on a lower level using features like *Interoperability* which enables you to take advantage of unmanaged code such as C/C++ directly from your code. 6 | 7 | C# is a managed programming language which means the programmer need not worry about memory management. It is dealt by the GC (Garbage collector) of the .NET Framework. 8 | 9 | Another advantage of managed code is that it becomes platform-independent, meaning that it can be run on any platform with .Net Framework installed, but it's not limited to it. 10 | Thanks to Mono project, there are other technologies that support C# as its primary language. Tools like Unity and Xamarin allow you to write C# code and run it on any platform of your choice. 11 | 12 | It's a type-safe compiled language, meaning that your code is verified by the compiler before its execution, making your code more resilient to runtime errors by catching them ahead of time. 13 | 14 | C# belongs to the C-family of programming languages and anyone comfortable in using other languages belonging to the same family like C, C++ or Java will feel comfortable in using it. 15 | -------------------------------------------------------------------------------- /book/languages/js/misc.md: -------------------------------------------------------------------------------- 1 | # Some interesting facts 2 | 3 | * Some say that the name JavaScript was chosen intentionally as part of a marketing strategy to promote 4 | user adoption. This similarity in naming was meant to take advantage of the already established Java 5 | programming language in creating an impression that JavaScript is an extension of Java. 6 | 7 | * Currently JavaScript is a trademark of *Oracle Corporation* in the United States. If you haven't 8 | guessed this company is better known for its virtual machine technologies. 9 | 10 | * The internal codename of the Mosaic Netscape or the Netscape Navigator browser was **Mozilla**. 11 | 12 | * The Mozilla Foundation was founded in 1998 by the members of Netscape Communications. 13 | 14 | * JS is licensed by Oracle to Netscape Communications then and currently to the Mozilla Foundation. 15 | 16 | ## An Example 17 | 18 | This section will compare Hello World program in JavaScript with other languages. 19 | 20 | ### JavaScript 21 | 22 | ```JavaScript 23 | "use strict" // This declares strict mode and using it is a good security practice. 24 | console.log("Hello world!"); // semicolon is not mandatory but recommended 25 | ``` 26 | 27 | ### Kotlin 28 | 29 | ```Kotlin 30 | fun main(args: Array) { 31 | println("Hello world!") 32 | } 33 | ``` 34 | 35 | ### Python 36 | 37 | ```Python 38 | print "Hello world!" 39 | ``` 40 | 41 | ### Ruby 42 | 43 | ```Ruby 44 | puts "Hello world!" 45 | ``` 46 | 47 | Though the example was a simple one, we all start from writing Hello World, don't we? :) 48 | -------------------------------------------------------------------------------- /book/languages/lua/intro.md: -------------------------------------------------------------------------------- 1 | # Inception 2 | 3 | **Lua** is multi-paradigm programing language that's very lightweight and was designed for embedded use in applications. It's cross-platform because Lua has a simple C API to embed it into applications and its interpreter of compiled bytecode is written in ANSI C. 4 | 5 | It was designed for extending software applications to meet the demands for customization at the time. 6 | Domain-specific and more complicated features **weren't** included, but it provided basic of most procedural programming languages and it was built with mechanisms for extending the language. 7 | 8 | It supports procedural programming, oop and functional programming, as well as data-driven programming and data description. 9 | 10 | ## Features 11 | 12 | * **Portable and super lightweight** 13 | 14 | Lua package is really small. You can run Lua code on every platform, Windows, macOS, and Linux. 15 | 16 | * **Dynamic datatypes** 17 | 18 | The dynamic data type accepts data from and sends data to the following data types, where the scalar data type is a Boolean value or a floating-point number. 19 | 20 | * **Extensible** 21 | 22 | Extensible programming language consists of a base language with elementary computing facilities and also the meta-language, with a capability of modifying base language. 23 | 24 | * **Efficient** 25 | 26 | If language works faster, it's more efficient. 27 | 28 | * **Suitable for using it as an embedded language** 29 | 30 | It means that Lua is written in C, it's the extension to the C language with additional header files. 31 | -------------------------------------------------------------------------------- /book/languages/cpp/intro.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | C++ is a very comprehensive, vast, and powerful language is perhaps the most concise definition (and over simplification) of C++. Although considered a high level language, with the advent of languages 4 | like *Python*, and *Ruby*, it is now considered low level along the lines of C, and rightfully so. The language contains many constructs (most prominently - pointers) which it borrows from C, a low 5 | level programming language, and is highly used in areas like *Compiler Design*, *Video Game Development*, and *IoT*. 6 | It is a fully compiled language, meaning, it compiles the code to native binary which can be directly executed on the system. However, since it is compiled to native code, the binary compiled on 7 | one architecture and/or kernel **cannot** be used on different architecture/kernel without recompilation. Hence, if one compiles a C++ program on Linux, the same binary cannot be used on, say, 8 | Mac OS. 9 | 10 | The reason for its prominance in fields like IoT is that it has quite low memory footprint, that is, it used a very low amount of system memory to work, depending on the program or software written. 11 | This is, again, due to the fact that the language compiles code to native binary and the generated binary does not rely on a virtual machine for code execution on the system. 12 | 13 | Now, with all the power and amazing features of C++, one must still understand where the language is most suitable and where not, because, in the wrong situation, C++ can wreak havoc on one's system 14 | or simply be too cumbersome to use. Let's take a glimpse into this. -------------------------------------------------------------------------------- /book/languages/cpp/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | C++ originated in 1979, by *Bjarne Stroutrup*, he 4 | started working on "C with classes", the predecessor of C++. The goal and motivation was to create a fast and powerful language, building its roots upon the performance, efficiency, and portability 5 | of the widely used programming language - **C**. His original idea was to extend the C compiler with additional features such as *classes*, *strong typing*, *inlining*, and *default arguments*. 6 | 7 | In 1983, the language was renamed to *C++*, with the ++ being the increment operator in C. This is when some more features were added to the language like *virtual functions*, *function name & 8 | operator overloading*, *references*, *memory allocation using new/free*, and *two forward slash comments - //* to name a few. This was also time when the first standalone compiler for C++ was 9 | created named *CFront*. 10 | 11 | The book **The C++ Programming Language** was released in 1985 which became the language reference since there was no official standard at that time. 12 | 13 | Since then, the language has been continuously evolving, most notably in C++11 standard, and has captured interests of many programmers throughout the world. Many educational institutes provide 14 | fundamental courses on C and C++ with C++ as the epicenter for the concepts of *Object Oriented Programming*. 15 | 16 | Currently, the latest standard of C++ which has been released is C++17, however most compilers have not implemented the standard as of *May 24, 2018*. C++14 has been implemented in the various 17 | popular compilers like - *GNU Compiler Collection (gcc)*, and *clang*. -------------------------------------------------------------------------------- /book/languages/malbolge/intro.md: -------------------------------------------------------------------------------- 1 | 2 | # Introduction 3 | 4 | Malbolge is one of the most popular esoteric programming languages, named after the eighth circle of hell in Dante's Inferno, the 5 | Malebolge. 6 | 7 | Malbolge was specifically designed to hurt. It's almost impossible to use, because of crazy operation, self encrypting code and 8 | base-three arithmetic. It's way more difficult than other esoteric languages (such as Brainfuck), but takes this difficultness to 9 | the extreme. Despite this design, it is possible to write useful Malbolge programs. Malbolge is **not** Turing complete, there was 10 | attempt to create Turing complete variant of Malbolge, named Malbogle Unshackled. 11 | 12 | Classic "Hello, world!" program looks bizzare in Malbolge: 13 | 14 | ```malbolge 15 | (=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc 16 | ``` 17 | 18 | Technically speaking, Malbolge is machine code for so called Malbolge Virtual Machine. It has three registers - `a`, `c`, and `d`. 19 | When a program starts, the value of all three registers is zero. It doesn't support stack and indefinite memory access out of the 20 | box either. The virtual machine has 59,049 memory locations that can each hold a ten-trit ternary number, making memory access 21 | limited consequently removing possibility of Turing completness. There were attempts to prove Malbolge Unshackled Turing 22 | completness. [Brainfuck interpreter in Malbolge Unshackled](https://github.com/KrzysztofSzewczyk/Brainfuck.MB) was written to do 23 | so. It can be proven using simulation way (which was described in Brainfuck chapter). 24 | 25 | Malbolge is an amazingly difficult language. One needs still to understand where it would be more suitable, and where it doesn't 26 | particularly excel at. 27 | -------------------------------------------------------------------------------- /book/languages/erlang/misc.md: -------------------------------------------------------------------------------- 1 | # Some interesting facts 2 | 3 | * WhatsApp messaging system is build on Erlang, it supports over 800 million users and 30 billion messages per day 4 | 5 | * bet365 uses Erlang in their Online Gambling & Betting industry. 6 | 7 | * Erlang transports 40% of all telecom data 8 | 9 | * Erlang can be used in everywhere on the backend 10 | 11 | * 3 of the leading banks are built on Erlang 12 | 13 | * 2 of the leading blockchains are built on Erlang 14 | 15 | ## Example of **Hello World** code written in Erlang compared to other languages 16 | 17 | ### **Erlang** 18 | 19 | ```Erlang 20 | -module(hello). 21 | -export([hello_world/0]). 22 | hello_world() -> io:fwrite("hello, world\n"). 23 | ``` 24 | 25 | After this is done, you'll need more work. 26 | Save it as hello.erl and compile it from the erlang shell. 27 | Don't forget the full-stop ("period" in American English) at the end of each command, as shown: 28 | 29 | Erlang (BEAM) emulator version 4.9.1 [source] 30 | Eshell V4.9.1 (abort with ^G) 31 | c(hello). 32 | {ok,hello} 33 | 34 | (on Unix systems you start the erlang shell by typing "erl" at the command line. 35 | On Windows, open a command prompt window and type "werl", or find the Erlang icon in the programs menu). 36 | To run the program from the Erlang shell: 37 | 38 | hello:hello_world(). 39 | hello, world 40 | ok 41 | 42 | ### **JavaScript** 43 | 44 | ```JavaScript 45 | "use strict" // This declares strict mode and using it is a good security practice. 46 | console.log("Hello world!"); // semicolon is not mandatory but recommended 47 | ``` 48 | 49 | ### **Kotlin** 50 | 51 | ```Kotlin 52 | fun main(args: Array) { 53 | println("Hello world!") 54 | } 55 | ``` 56 | 57 | ### **Python** 58 | 59 | ```Python 60 | print "Hello world!" 61 | ``` 62 | 63 | ### **Ruby** 64 | 65 | ```Ruby 66 | puts "Hello world!" 67 | ``` 68 | -------------------------------------------------------------------------------- /book/languages/cpp/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | C++ is a high performance language, and when used correctly, can give performance seconded only by the likes of C and Assembly. Therefore, any application which requires high performance, like 4 | even finance and stock based applications, highly benefit by utilizing C++ language to build the codebase with. 5 | 6 | Being one of the most popular languages, it has a very large community backing which is quite helpful, especially, when one encounters some trouble or issue. Since there is great community support, 7 | it also has a slew of various libraries which can be used to enhance the application or make it easier to develop. Be it graphics, audio, network, input, and even AI and Machine Learning, C++ 8 | contains libraries for all of them. One should also understand that C++ supports code which is written in C. Hence, any library or piece of code which is written in C, works with C++ directly 9 | without any modification. 10 | (Note: C++ supports C, but the internal architecture of both languages are quite different so do **not** consider C to be a part of C++ and the code design choices between C and C++ can also 11 | differ significantly) 12 | 13 | The language is highly sought after for game development as well. Video games require heavy performance to accomplish the exuberant amount of calculations and processing. C++ fits this scenario 14 | perfectly. Hence, most games use C++ as the language of choice for development. There are many engines available for game development as well, most significantly, the *Unreal Engine*. 15 | 16 | One may have heard of Google's *Tensor Flow* - the highly acclaimed and lauded Artificial Intelligence library. Although it is used from Python, the library itself is built primarily using C++. 17 | That alone states how powerful this language can be in many areas. 18 | 19 | But, there are cases when using C++ is simply not worth it. Let's take a look into that. -------------------------------------------------------------------------------- /book/languages/assembly/disadvantages.md: -------------------------------------------------------------------------------- 1 | # Disadvantages 2 | 3 | Consider the same example as in the previous section to add two numbers, lets say 1 and 2, but this time it is written in C. 4 | 5 | ```C 6 | #include 7 | 8 | int main(void) { 9 | int x = 1; 10 | int y = 2; 11 | int z = x + y; 12 | return 0; 13 | } 14 | ``` 15 | 16 | As the reader might have observed coding in C turns out to be much more easy than assembly, because it's less verbose and each line of code is more intuitive compared to either assembly or binary. 17 | 18 | But there is a trade-off between the performance offered by assembly language and C. 19 | 20 | * Coding in assembly sometimes is not intuitive and requires a lot of time to understand the code compared to higher level languages such as C, which is less verbose and is more descriptive. 21 | 22 | * The entire code in assembly language could turn out to be monstrous in some stage cannot, because of which it can't be handled or maintained easily. 23 | 24 | * Manually writing in assembly language for large programs such as an OS for instance can be frustrating (but doesn't have to). 25 | 26 | ## Birth of the higher-level languages 27 | 28 | Even though assembly language offers high performance it cannot be effectively used to build user applications, because a higher abstraction is really helpful to do so. 29 | Also, it is not “programmer friendly” in the sense that it still remains a low level language and can be difficult to grasp or understand for casual programmers. 30 | Hence, a need for abstracting assembly language itself arises which is both understandable and “programmer friendly”. 31 | 32 | From this need new assembly languages were born with a higher abstraction, which were more “programmer friendly” than the initial low level assembly languages, but they still remained assembly languages. 33 | 34 | Afterwards even higher level languages were introduced which acted like an abstraction of assembly language itself. One of the most notable languages among these is C. 35 | -------------------------------------------------------------------------------- /book/languages/python/misc.md: -------------------------------------------------------------------------------- 1 | # More about python 2 | 3 | ## Zen of python 4 | 5 | The Zen of python is a short poem that is embedded in the interpreter summarizing the design philosophy. 6 | Type "import this" and press enter in a python interpretor 7 | 8 | ```md 9 | The Zen of Python, by Tim Peters 10 | 11 | Beautiful is better than ugly. 12 | Explicit is better than implicit. 13 | Simple is better than complex. 14 | Complex is better than complicated. 15 | Flat is better than nested. 16 | Sparse is better than dense. 17 | Readability counts. 18 | Special cases aren't special enough to break the 19 | rules. 20 | Although practicality beats purity. 21 | Errors should never pass silently. 22 | Unless explicitly silenced. 23 | In the face of ambiguity, refuse the temptation to guess. 24 | There should be one-- and preferably only one --obvious way to do it. 25 | Although that way may not be obvious at first unless you're Dutch. 26 | Now is better than never. 27 | Although never is often better than *right* now. 28 | If the implementation is hard to explain, it's a bad idea. 29 | If the implementation is easy to explain, it may be a good idea. 30 | Namespaces are one honking great idea -- let's do more of those! " 31 | ``` 32 | 33 | ## How it simplifies development process 34 | 35 | Two examples both in python to scrape information about a particular page in wikipedia 36 | 37 | Both examples are in python 3 38 | 39 | ```python 40 | import requests 41 | from bs4 import Beautiful Soup 42 | url = "https://en.wikipedia.org/wiki/History_of_Python" 43 | response = requests.get(url) 44 | soup = BeautifulSoup(response, "lxml") 45 | for i in soup.find_all("p"): 46 | print i.text() 47 | ``` 48 | 49 | ```python 50 | import wikipedia 51 | print(wikipedia.summary("History of python")) 52 | ``` 53 | 54 | Now it should be clear how python with its features and awesome libraries simplifies development 55 | process. Note that internally both the implementations perform the exact same set of actions but one is much more simpler than the other. 56 | -------------------------------------------------------------------------------- /book/languages/haskell/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | ## Back in '80s 4 | 5 | In 1985, Research Software Ltd. made a language called **Miranda**, that's where the beginning is... 6 | In the following years, more and purer functional languages where coming out, but most widely-used one was Miranda, unfortunately, it was proprietary. 7 | 8 | ## Portland, Oregon, September 1987 9 | 10 | Conference on **Functional Programming and Computer Architecture** took place here. The Discussion was about the unfortunate situation in the functional programming community: there 11 | had come into being more than a dozen non-strict, purely 12 | functional programming languages, all similar inexpressive 13 | power and semantic underpinnings. There was a strong consensus at this meeting that more widespread use of this class 14 | of functional languages was being hampered by the lack of 15 | a common language. 16 | Then, people decided that a committee shall be formed to design such a language, providing a new experience in functional programming. 17 | After a few years of work, the committee published the first Haskell Language Report in 1990. That was the major milestone. **The same year, Haskell 1.0 was released.** The work resulted in a series of language definitions, 1.0, 1.1, 1.2, 1.3 and 1.4. 18 | After other several years of works on Haskell, in late 1997, the series culminated in Haskell 98. 19 | In February of 1999, the Haskell 98 language standard was published as '*The Haskell 98 Report*' and it was refreshed in January 2003 as '*Haskell 98 Language and Libraries: The Revised Report*'. The language continued to evolve rapidly with the **Glasgow Haskell Compiler (GHC)**. 20 | **In 2006**, the successor to the Haskell 98 was started to be defined, informally named *Haskell Prime*. 21 | This was intended to be an ongoing incremental process to revise the language definition, producing a new revision up to once per year. The first revision was announced in November 2009, published in July 2010, named Haskell 2010, the latest stable update, but Haskell 2020 is announced. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Community-Programming-Book 2 | 3 | 4 | Creative Commons License
This work is licensed under a 5 | Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. 6 | 7 | [![View on GitBook](https://img.shields.io/badge/View%20on-GitBook-blue.svg?style=flat-square)](https://cpb.gitbook.io/book/) 8 | [![Build Status](https://img.shields.io/travis/devRant-Community/Community-Programming-Book.svg?style=flat-square&logo=travis)](https://travis-ci.org/devRant-Community/Community-Programming-Book) 9 | [![Dev Dependencies](https://img.shields.io/david/dev/devRant-Community/Community-Programming-Book.svg?style=flat-square)](https://github.com/devRant-Community/Community-Programming-Book/blob/master/package.json) 10 | 11 | [![Github issues](https://img.shields.io/github/issues/devRant-Community/Community-Programming-Book.svg?longCache=true&style=flat-square&logo=github)](https://github.com/devRant-Community/Community-Programming-Book/issues) 12 | [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square&logo=github)](https://github.com/devRant-Community/Community-Programming-Book/blob/master/CONTRIBUTING.md) 13 | [![Discord](https://img.shields.io/discord/446073753064177675.svg?label=Discord&colorB=7289da&style=flat-square)](https://discord.gg/4AThF88) 14 | 15 | The Devrant community has gathered together to create a book on 16 | multiple programming languages. We want you to understand why 17 | the languages referenced here have come to exist and why they 18 | for example use either brackets or indenting or also what great things 19 | were done with them. Basically we are telling their story. 20 | 21 | > Any fool can write code that a computer can understand. Good programmers write code that humans can understand. \ 22 | > -- Martin Fowler 23 | -------------------------------------------------------------------------------- /book/languages/brainfuck/intro.md: -------------------------------------------------------------------------------- 1 | 2 | # Introduction 3 | 4 | Brainfuck is the most famous esoteric programming language ever made. It's an esoteric language, so it was not meant to be used 5 | in solving real-world problems (but, no one forbids You to!). The language can't be classified clearly. Partly it's a very high-level language - Brainfuck doesn't bind itself to any architecture making it very portable language. On the other hand, it's very 6 | low-level language - it supports only addition and subtraction, basic control structure (`while`-like loop), basic I/O (terminal 7 | only, shrinking capabilities to the absolute minimum), and indefinitely long tape where any byte can be stored arbitrarily. Brainfuck 8 | is Turing complete, meaning that it is in the same computational class as universal Turing machines. This, plus its amount of 9 | instructions, makes it a most popular example of a Turing tarpit. This can be proven in many ways, with various restrictions on 10 | the brainfuck program or interpreter. 11 | 12 | Daniel Cristofani wrote universal Turing machine emulator in Brainfuck which is so small we can quote it here: 13 | 14 | ```bf 15 | +++>++>>>+[>>,[>+++++<[[->]<<]<[>]>]>-[<<+++++>>-[<<---->>-[->]<]]<[<-<[<]+<+[>]<<+>->>>]<]<[< 16 | ]>[-[>++++++<-]>[<+>-]+<<<+++>+>[-[<<+>->-[<<[-]>>-[<<++>+>-[<<-->->>+++<-[<<+>+>>--<-[<<->->- 17 | [<<++++>+>>+<-[>-<-[<<->->-[<<->>-[<<+++>>>-<-[<<---->>>++<-[<<++>>>+<-[>[-]<-[<<->>>+++<-[<<- 18 | >>>--<-[<<++++>+>>+<-[<<[-]>->>++<-[<<+++++>+>>--<-[<->>++<[<<->>-]]]]]]]]]]]]]]]]]]]]]]<[->>[ 19 | <<+>>-]<<<[>>>+<<<-]<[>>>+<<<-]]>>]>[-[---[-<]]>]>[+++[<+++++>--]>]+<++[[>+++++<-]<]>>[-.>] 20 | ``` 21 | 22 | Simulation is one way to prove Turing completeness: 23 | 24 | > If an interpreter for A can be implemented in B, then B can solve at least as many problems as A can. 25 | 26 | There are some difficulties with this way of proving Turing completeness (ℒ), but for Brainfuck, it's entirely sufficient. By theory, 27 | it's ℒ-complete too, so the proof is fully valid. 28 | 29 | Brainfuck is an amazing language. One must still understand where it would be suitable, and where it doesn't particularly excel 30 | at. 31 | -------------------------------------------------------------------------------- /book/languages/erlang/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | ## Meaning of 'Erlang' 4 | 5 | The name *Erlang* was given in honor of the first scientist in the field of telecommunications: **Agner Krarup Erlang (1878-1929)** 6 | 7 | Sometimes the name of language is also interpreted as **Er**icsson + *Lang*uage = **Er***lang*. 8 | 9 | ## In Ericsson lab 10 | 11 | **Between 1982 and 1986**, in Ericsson labs were conducting research on the suitability of some existing programming languages in terms of creating apps for **telecommunications** needs, 12 | which required **long-lasting** and **trouble-free operation with a large number of threads**. 13 | The features of each language were analyzed, identyfiying potential problems that they could have caused. 14 | Despite the gradual narrowing of the set of considered languages, it was established that **none** of them meet the company's requirements, therefore it was decided to design a **completely new language from scratch**. 15 | 16 | ## Long story in short 17 | 18 | The author of the language is **Joe Armstrong**. 19 | He modeled Erlang on the **Prolog language** and wrote first Erlang interpreter in it. 20 | In **1990**, Erlang was shown publicly at the **ISS '90 conference**, which resulted in increased number of users. 21 | But the first implementation of the language was so inefficent that in the **late 1980s** itself, work began on a faster version. 22 | **It's final release took place in 1991**. 23 | **A Year later**, the first book about Erlang was published and in **1993**, Ericsson launched an independent department 24 | assigned with the development and distribution of the system and tools for it. 25 | 26 | In **1998**, Ericsson launched **AXD301** switch with software that contained a milion lines of code in Erlang, which achieved a reliability index of **99.9999999%** (that's the real number!), which meant that in a year of usage, the system could 27 | have **at most 0.0315 seconds of downtime due to a failure**. 28 | Shortly thereafter, Ericsson banned its affiliates from using Erlang in new products due to its proprietary nature. 29 | **This caused a conflict between Ericsson and Armstrong, who left the company with the team.** 30 | **At the end of the same year**, the Erlang implementation code was **opened sourced and made available as free software**. 31 | The ban was withdrawn later and **Armstrong** returned to work with Ericsson in **2004**. 32 | -------------------------------------------------------------------------------- /book/languages/java/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | ## The begginings 4 | 5 | **James Gosling, Mike Sheridan and Patrick Naughton** created Java in June of 1991. 6 | They've designed Java for interactive television, but it was too advanced for cable television industry back in the day. 7 | It wasn't even named Java. Initially they've called it **Oak**, after the tree that stood outside Gosling's office. 8 | Then it was renamed to **Green** and then finally renamed to **Java** from Java coffee. 9 | 10 | It's syntax was designed by Gosling with C/C++ style to give system and application programmers more familiar feeling. 11 | 12 | First public implementation was released by Sun Microsystems in 1996 as Java 1.0. 13 | It promised *Write Once, Run Anywhere*. 14 | Soon, major web browserws implemented the ability of running Java applets with the web pages and that's how Java became popular so fast. 15 | 16 | Back in the day, Java applets were a huge deal. They were small applications that compiled to Java bytecode. It was launched from a webpage and then it was executed with JVM in a process separated from the browser. 17 | 18 | Java 2, released initially as J2SE 1.2 in Deecember 1998-1999, Java language had multiple configurations built for different types of enviroments. 19 | It included APIs and technologies for enterprise apps typically run in server enviroments, while it featured APIs optimized for mobile apps. 20 | In 2006, because of marketing purposes, Sun Microsystems renamed new J2 versions as Java EE (Enterprise Edition), Java ME (Micro Edition) and Java SE (Standard Edition). 21 | 22 | ## Making Java open-source 23 | 24 | Process started in the fall of 2006. Most of the JVM was released as free and open-source under the GNU General Public License. On May 8, 2007, process was finished, 25 | Sun made all of its JVM core code under free software and open-source software distribution terms, except for small pieces of code to which Sun didn't hold the copyright. 26 | 27 | ## After acquisition 28 | 29 | After acquisition of Sun Microsystems by Oracle Corp. in 2009-2010, Oracle described itself as steward of Java technology with a relentless commitment to fostering a community of transparency and participation. 30 | This didn't prevent Oracle from filing a lawsuit against Google shortly after that for using Java inside Android SDK. On April 2, 2010, Gosling resigned from Oracle. 31 | 32 | Now, Java software runs on everything from laptops to game consoles, data centers to supercomputers. 33 | -------------------------------------------------------------------------------- /book/languages/jvm/java/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | ## The begginings 4 | 5 | **James Gosling, Mike Sheridan and Patrick Naughton** created Java in June of 1991. 6 | They've designed Java for interactive television, but it was too advanced for cable television industry back in the day. 7 | It wasn't even named Java. Initially they've called it **Oak**, after the tree that stood outside Gosling's office. 8 | Then it was renamed to **Green** and then finally renamed to **Java** from Java coffee. 9 | 10 | It's syntax was designed by Gosling with C/C++ style to give system and application programmers more familiar feeling. 11 | 12 | First public implementation was released by Sun Microsystems in 1996 as Java 1.0. 13 | It promised *Write Once, Run Anywhere*. 14 | Soon, major web browserws implemented the ability of running Java applets with the web pages and that's how Java became popular so fast. 15 | 16 | Back in the day, Java applets were a huge deal. They were small applications that compiled to Java bytecode. It was launched from a webpage and then it was executed with JVM in a process separated from the browser. 17 | 18 | Java 2, released initially as J2SE 1.2 in Deecember 1998-1999, Java language had multiple configurations built for different types of enviroments. 19 | It included APIs and technologies for enterprise apps typically run in server enviroments, while it featured APIs optimized for mobile apps. 20 | In 2006, because of marketing purposes, Sun Microsystems renamed new J2 versions as Java EE (Enterprise Edition), Java ME (Micro Edition) and Java SE (Standard Edition). 21 | 22 | ## Making Java open-source 23 | 24 | Process started in the fall of 2006. Most of the JVM was released as free and open-source under the GNU General Public License. On May 8, 2007, process was finished, 25 | Sun made all of its JVM core code under free software and open-source software distribution terms, except for small pieces of code to which Sun didn't hold the copyright. 26 | 27 | ## After acquisition 28 | 29 | After acquisition of Sun Microsystems by Oracle Corp. in 2009-2010, Oracle described itself as steward of Java technology with a relentless commitment to fostering a community of transparency and participation. 30 | This didn't prevent Oracle from filing a lawsuit against Google shortly after that for using Java inside Android SDK. On April 2, 2010, Gosling resigned from Oracle. 31 | 32 | Now, Java software runs on everything from laptops to game consoles, data centers to supercomputers. 33 | -------------------------------------------------------------------------------- /book/languages/js/history.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | The next section gives a historical perspective of JS and provides context about the various 4 | entities involved in the creation of JavaScript. 5 | 6 | Though the next section can be potentially long, it is suggested to go through it for better 7 | understanding however it can be skipped without any loss of information. 8 | 9 | ## Background story 10 | 11 | Back in the 1990's when the World Wide Web was new and the Internet was in its infancy, different 12 | companies were in a race to create the *best and the most popular* browser in order to browse the 13 | Internet. 14 | 15 | In 1993, the [NCSA](https://en.wikipedia.org/wiki/National_Center_for_Supercomputing_Applications) 16 | came up with the first ever graphical web browser named *NCSA Mosaic*. It helped a lot in expansion 17 | and popularizing the World Wide Web. 18 | 19 | In 1994, a company called *Mosaic Communications* was formed which employed many authors of the NCSA 20 | Mosaic to create a browser with the aim of dominating the web-browser market. Their product was known 21 | as *Mosaic Netscape*. The company was later renamed as *Netscape Communications* and the browser was 22 | renamed as *Netscape Navigator* to avoid trademark problems with NCSA. 23 | 24 | The founder of Netscape Communications, Marc Andreessen, felt the need of a language that was easy 25 | to use by web developers and designers to generate dynamic content on web pages. JavaScript was born 26 | from this need. 27 | 28 | ## Creation 29 | 30 | In 1995, **Brendan Eich** was recruited by *Netscape Communications* with the goal of embedding the 31 | *Scheme programming language* into its *Netsacpe Navigator*, then the most popular web browser. The 32 | goal of this job was to create a lightweight and easy to use programming (read scripting) language 33 | that can run in the browser environment and is able to generate dynamic content in web pages. 34 | 35 | At that time Netscape Communications was already collaborating with *Sun Microsystems* to include 36 | the latter's Java in order to compete with *Microsoft* for user adoption of its technologies and 37 | platforms. So Netscape Communications decided that the new scripting language to be created must 38 | complement Java and have similar syntax but not adopt other scripting languages of the time like 39 | Perl, Python, TCL or Scheme. Within 10 days, in May 1995, Brendan came up with a working prototype. 40 | 41 | Though developed under the name **Mocha**, this scripting language was first officially known as 42 | **LiveScript** when it began shipping in September 1995 and later renamed to **JavaScript** in 43 | December 1995. 44 | 45 | So this is how JavaScript came into existence. 46 | -------------------------------------------------------------------------------- /book/languages/erlang/intro.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | ## Inception 4 | 5 | **Erlang** first appeared in the Ericsson laboratory and it is successfully used in projects requiring **high scalability and resistance to failures**. 6 | 7 | It is a **functional**, **dynamic language** with strict typing in which the main focus was on concurrency and **processing capabilities distributed**. 8 | 9 | Erlang **was a proprietary programming language** used by **Ericsson**, but since **1998** when the source code was open sourced 10 | and is gaining popularity day by day. 11 | 12 | It is successfully used in **commercial products** (for example: **WhatsApp**) around the world that go many times beyond its **telecommunications roots**. 13 | 14 | > The file extension for Erlang are **.erl** and **.hrl** 15 | 16 | ## Erlang features 17 | 18 | * **Concurrency** 19 | 20 | Processes are the **basic elements** in the structure of applications written in Erlang. 21 | The implementation of concurrent processes is **independent** of the system and does not use mechanisms specific to the given environment like threads, for example. 22 | Creating and managing Erlang processes is very simple, while in other languages ​​concurrency provides many problems and is the source of a small number of different types of errors. 23 | Erlang processes are **much lighter** than system ones (about 300 bytes per one process), thanks to which the processes of creating and destroying processes are *relatively* cheap computationally and memory. 24 | In a single Erlang system **possible** is to create up to one million processes without significant performance degradation. 25 | **In Computer Language Shootout in the competition for sending messages between thousands of threads (thread-ring) solution written in Erlang ranks first in terms of performance and code volume**. 26 | Communication between processes in Erlang (due to the fact that the processes do not divide shared memory) takes place by sending asynchronous messages. 27 | A queue is associated with each process **FIFO**, used to receive messages. 28 | The receiving process determines whether process the message or not. 29 | Every process has its own mailbox, in the form of a queue in which they are stored messages sent by other processes until they are read. 30 | Receiving messages is done by the **pattern matching mechanism**. 31 | After reading the message, the Erlang process returns to **execution**. 32 | To create messages can be used **any data structure** (integers, floating point, characters, atoms) and even functions. 33 | 34 | * **Dispersion** 35 | 36 | The dispersed mechanism is **built into** the language. You can create processes with any node on any node. 37 | The process *can* be created on remote node, and communication with it is transparent (communication with the remote process is carried out in **exactly the same way as with local process**). 38 | 39 | * **Error handling** 40 | 41 | Error handling generally takes place through the **supervision of some processes over others**. 42 | When the process breaks down, it leaves and sends a message to the process a control who can take the appropriate action - e.g. restart or end broken process and start the next one. 43 | This approach to programming increases reliability and makes the code less complicated. 44 | In addition, the process, the control and supervised process do not have to be on the same physical machine, thanks to which it is relatively easy to program systems high availability, in which particular functions are performed by efficient nodes at a given moment. 45 | 46 | * **Hot code replacement (Hot code upgrade)** 47 | 48 | *Many* systems **can not be stopped for software exchange purposes**. 49 | **In Erlang you can exchange the code in the running system** (in the system co-exist for a moment both codes), and thus install bug fixesand upgrades without stopping the system. 50 | 51 | * **Support for multiprocessor systems** 52 | 53 | From the **R11** version, Erlang's environment *can* automatically exploit the potential hidden in multi-core processors and systems multiprocessor. 54 | Previously, to use such a system belonged run several copies of the virtual machine, which unfortunately increased memory consumption, and increased the cost of sending messages unnecessarily between processes on one computer. 55 | -------------------------------------------------------------------------------- /book/languages/c/advantages.md: -------------------------------------------------------------------------------- 1 | # Advantages 2 | 3 | There are a lot of programmers that think C is not language worth learning. Let's review this. C was originally developed for 4 | the UNIX operating system by Dennis Ritchie. It's quite simple, is not tied to any particular hardware or operating system. **If 5 | some platform has C compiler, it's worth attention**. C is really general purpose language, so this way **it's so common**. This 6 | makes **it easier to write programs that will run without any changes on practically all machines that have POSIX compiliant 7 | API's**. The C language is a middle-level language as it combines the elements of high-level languages (structures, unions, 8 | enums, functions, conditionals) with the functionalism of assembly language. **It's possible to simulate OOP in C and write an 9 | operating system. C allows the manipulation of nearly everything** giving the programmer more control over exactly how the 10 | program will behave and more direct access to the mechanics of the underlying hardware, **while keeping application fully 11 | portable**. C is often quoted as cross-platform assembly. **C is still one of the most popular programming languages out there 12 | [at the time of writing it was 2nd language overall](https://www.tiobe.com/tiobe-index/). Overall, C was first most common 13 | language from 1988 to 2013! It's Popularity is still growing. In the year of writing, C had the highest rise in ratings in a 14 | year.** C is everywhere. Your keyboard is very propably powered by C, same as your fridge or even modem. **Microsoft Windows was 15 | developed in C and has nearly 90% market share. Same as Linux, MacOS, iOS, Android and Windows Phone.** The world’s most popular 16 | databases, including **Oracle Database, MySQL, MS SQL Server, and PostgreSQL are developed in C**. 3D movies are created with 17 | applications that are generally written in C and C++. The alarm clock that wakes you up is likely programmed in C. Then you use 18 | your microwave or coffee maker to make your breakfast. They are also embedded systems and therefore are probably programmed in 19 | C. You turn on your TV or radio while you eat your breakfast. Those are also embedded systems, powered by C. When you open your 20 | garage door with the remote control you are also using an embedded system that is most likely programmed in C. You park your 21 | car, go to the shop and use vending machine to get a soda. What language did they use to program this vending machine? Probably 22 | C. Then you buy something at the store. The cash register is also programmed in C. And when you pay with your credit card? The 23 | credit card reader is, again, likely programmed in C. **There are many programming languages, today, that allow developers to be 24 | more productive than with C for different kinds of projects. There are higher level languages that provide much larger built-in 25 | libraries that simplify working with JSON, XML, UI, web pages, client requests, database connections, media manipulation, and so 26 | on. But despite that, there are plenty of reasons to believe that C programming will remain active for a long time.** In 27 | programming languages one size does not fit all. Here are some reasons that C is unbeatable, and almost mandatory, for certain 28 | applications. **Arbitrary memory address access and pointer arithmetic is an important feature that makes C a perfect fit for 29 | system programming (operating systems and embedded systems).** **A common language feature that system programming cannot rely 30 | on it's garbage collection, or even just dynamic allocation for some embedded systems. Embedded applications are very limited in 31 | time and memory resources. They are often used for real-time systems, where a non-deterministic call to the garbage collector 32 | cannot be afforded. And if dynamic allocation cannot be used because of the lack of memory, it is very important to have other 33 | mechanisms of memory management, like placing data in custom addresses, as C pointers allow.** Languages that depend heavily on 34 | dynamic allocation and garbage collection wouldn’t fit for resource-limited systems. **C has a very small runtime. And the 35 | memory footprint for its code is smaller than for most other languages.** When compared to C++, for example, a C-generated 36 | binary that goes to an embedded device is about half the size of a binary generated by similar C++ code. One of the main causes 37 | for that is exceptions support. Exceptions are a great tool added by C++ over C, and, if not triggered and smartly implemented, 38 | they have practically no execution time overhead (but at the cost of increasing the code size). **C is a lingua franca for 39 | developers. Many implementations of new algorithms in books or on the internet are first (or only) made available in C by their 40 | authors.** This gives the maximum possible portability for the implementation. I’ve seen programmers struggling on the internet 41 | to rewrite a C algorithm to other programming languages because he or she didn’t know very basic concepts of C. 42 | 43 | ## The Illuminati doesn't run the world. C programmers do! 44 | -------------------------------------------------------------------------------- /book/SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Index 2 | 3 | * [Welcome](welcome.md) 4 | 5 | * [Preface](intro.md) 6 | 7 | ## Languages 8 | 9 | * [Assembly Language](languages/assembly/README.md) 10 | 11 | * [Introduction](languages/assembly/intro.md) 12 | 13 | * [History](languages/assembly/history.md) 14 | 15 | * [What it solves](languages/assembly/what_it_solves.md) 16 | 17 | * [Advantages](languages/assembly/advantages.md) 18 | 19 | * [Disadvantages](languages/assembly/disadvantages.md) 20 | 21 | * [Conclusion](languages/assembly/conclusion.md) 22 | 23 | * [C++](languages/cpp/README.md) 24 | 25 | * [Introduction](languages/cpp/intro.md) 26 | 27 | * [History](languages/cpp/history.md) 28 | 29 | * [Advantages](languages/cpp/advantages.md) 30 | 31 | * [Disadvantages](languages/cpp/disadvantages.md) 32 | 33 | * [Conclusion](languages/cpp/conclusion.md) 34 | 35 | 36 | * [ABC](languages/abc/README.md) 37 | 38 | * [Introduction](languages/abc/intro.md) 39 | 40 | * [History](languages/abc/history.md) 41 | 42 | * [What it solves](languages/abc/what_it_solves.md) 43 | 44 | * [Advantages](languages/abc/advantages.md) 45 | 46 | * [Disadvantages](languages/abc/disadvantages.md) 47 | 48 | * [An Example](languages/abc/misc.md) 49 | 50 | * [Conclusion](languages/abc/conclusion.md) 51 | 52 | * [Python](languages/python/README.md) 53 | 54 | * [Introduction](languages/python/intro.md) 55 | 56 | * [History](languages/python/history.md) 57 | 58 | * [What it solves](languages/python/what_it_solves.md) 59 | 60 | * [Advantages](languages/python/advantages.md) 61 | 62 | * [Disadvantages](languages/python/disadvantages.md) 63 | 64 | * [Few more points](languages/python/misc.md) 65 | 66 | * [Conclusion](languages/python/conclusion.md) 67 | 68 | * [Erlang](languages/erlang/README.md) 69 | 70 | * [Introduction](languages/erlang/intro.md) 71 | 72 | * [History](languages/erlang/history.md) 73 | 74 | * [Advantages](languages/erlang/advantages.md) 75 | 76 | * [Disadvantages](languages/erlang/disadvantages.md) 77 | 78 | * [Some interesting facts](languages/erlang/misc.md) 79 | 80 | * [Conclusion](languages/erlang/conclusion.md) 81 | 82 | * [JavaScript](languages/js/README.md) 83 | 84 | * [Introduction](languages/js/intro.md) 85 | 86 | * [History](languages/js/history.md) 87 | 88 | * [Purpose & Advantages](languages/js/advantages.md) 89 | 90 | * [Disadvantages](languages/js/disadvantages.md) 91 | 92 | * [Some interesting facts](languages/js/misc.md) 93 | 94 | * [Conclusion](languages/js/conclusion.md) 95 | 96 | * [C#](languages/csharp/README.md) 97 | 98 | * [Introduction](languages/csharp/intro.md) 99 | 100 | * [History](languages/csharp/history.md) 101 | 102 | * [Advantages](languages/csharp/advantages.md) 103 | 104 | * [Disadvantages](languages/csharp/disadvantages.md) 105 | 106 | * [Conclusion](languages/csharp/conclusion.md) 107 | 108 | * [Go](languages/golang/README.md) 109 | 110 | * [Introduction](languages/golang/intro.md) 111 | 112 | * [History](languages/golang/history.md) 113 | 114 | * [Advantages](languages/golang/advantages.md) 115 | 116 | * [Disadvantages](languages/golang/disadvantages.md) 117 | 118 | * [Some interesting facts](languages/golang/misc.md) 119 | 120 | * [Conclusion](languages/golang/conclusion.md) 121 | 122 | * [Haskell](languages/haskell/README.md) 123 | 124 | * [Introduction](languages/haskell/intro.md) 125 | 126 | * [History](languages/haskell/history.md) 127 | 128 | * [Advantages](languages/haskell/advantages.md) 129 | 130 | * [Disadvantages](languages/haskell/disadvantages.md) 131 | 132 | * [Some interesting facts](languages/haskell/misc.md) 133 | 134 | * [Conclusion](languages/haskell/conclusion.md) 135 | 136 | * [Brainfuck](languages/brainfuck/README.md) 137 | 138 | * [Introduction](languages/brainfuck/intro.md) 139 | 140 | * [History](languages/brainfuck/history.md) 141 | 142 | * [Advantages](languages/brainfuck/advantages.md) 143 | 144 | * [Disadvantages](languages/brainfuck/disadvantages.md) 145 | 146 | * [Conclusion](languages/brainfuck/conclusion.md) 147 | 148 | * [Some interesting facts](languages/brainfuck/misc.md) 149 | 150 | * [Malbolge](languages/malbolge/README.md) 151 | 152 | * [Introduction](languages/malbolge/intro.md) 153 | 154 | * [History](languages/malbolge/history.md) 155 | 156 | * [Advantages](languages/malbolge/advantages.md) 157 | 158 | * [Disadvantages](languages/malbolge/disadvantages.md) 159 | 160 | * [Conclusion](languages/malbolge/conclusion.md) 161 | 162 | * [Perl](languages/perl/README.md) 163 | 164 | * [Introduction](languages/perl/intro.md) 165 | 166 | * [History](languages/perl/history.md) 167 | 168 | * [Advantages](languages/perl/advantages.md) 169 | 170 | * [Disadvantages](languages/perl/disadvantages.md) 171 | 172 | * [Conclusion](languages/perl/conclusion.md) 173 | 174 | * [C](languages/c/README.md) 175 | 176 | * [Introduction](languages/c/intro.md) 177 | 178 | * [History](languages/c/history.md) 179 | 180 | * [Advantages](languages/c/advantages.md) 181 | 182 | * [Disadvantages](languages/c/disadvantages.md) 183 | 184 | * [Conclusion](languages/c/conclusion.md) 185 | 186 | * [Lua](languages/lua/README.md) 187 | 188 | * [Introduction](languages/lua/intro.md) 189 | 190 | * [History](languages/lua/history.md) 191 | 192 | * [Advantages](languages/lua/advantages.md) 193 | 194 | * [Disadvantages](languages/lua/disadvantages.md) 195 | 196 | * [Some interesting facts](languages/lua/misc.md) 197 | 198 | * [Conclusion](languages/lua/conclusion.md) 199 | 200 | * [JVM](languages/JVM/README.md) 201 | 202 | * [Introduction](languages/jvm/intro.md) 203 | 204 | * [Java](languages/jvm/java/README.md) 205 | 206 | * [Introduction](languages/jvm/java/intro.md) 207 | 208 | * [History](languages/jvm/java/history.md) 209 | 210 | * [Advantages](languages/jvm/java/advantages.md) 211 | 212 | * [Disadvantages](languages/jvm/java/disadvantages.md) 213 | 214 | * [Some interesting facts](languages/jvm/java/misc.md) 215 | 216 | * [Conclusion](languages/jvm/java/conclusion.md) 217 | 218 | * [Clojure](languages/jvm/clojure/README.md) 219 | 220 | * [Introduction](languages/jvm/clojure/intro.md) 221 | 222 | * [History](languages/jvm/clojure/history.md) 223 | 224 | * [Advantages](languages/jvm/clojure/advantages.md) 225 | 226 | * [Disadvantages](languages/jvm/clojure/disadvantages.md) 227 | 228 | * [Some interesting facts](languages/jvm/clojure/misc.md) 229 | 230 | * [Conclusion](languages/jvm/clojure/conclusion.md) 231 | 232 | ## End 233 | 234 | * [Credits](credits.md) 235 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute 2 | 3 | ## Prerequisites 4 | 5 | First of all fork [this repository](https://github.com/devRant-Community/Community-Programming-Book/) 6 | and join this [discord server](https://discord.gg/TDut3Fq). 7 | 8 | Throughout this guide, changes to files are to be made in your personal fork 9 | and submitted for merging in the main repository through a pull-request (PR). 10 | 11 | Taking the above mentioned points as granted the contributing guide begins now. 12 | 13 | ## Language already complete 14 | 15 | Change/correct the files present in the directory /book/languages/[language] 16 | where [language] is a placeholder for the language you want to change. 17 | 18 | Please refer to the "After writing the chapter" section below and make 19 | appropriate changes to the Summary.md file. 20 | 21 | ## Language not present 22 | 23 | Create an issue on the main repository(mentioned in pre-requisites) with title 24 | "Add Chapter on {Name of language}", assign this issue to yourself and add the 25 | label "Enhancement". This helps in identifying that you are writing that 26 | particular chapter. 27 | 28 | Create a new sub-directory in /book/languages with the name of the language. 29 | 30 | ``` md 31 | /book/languages/kotlin 32 | ``` 33 | 34 | In the sub-directory of the language add the files README.md and intro.md (Compulsory) 35 | 36 | ``` md 37 | /book/languages/kotlin/ 38 | README.md 39 | intro.md 40 | ``` 41 | 42 | README.md is a transition from one chapter to the next. An example is given. 43 | 44 | ``` md 45 | # Welcome 46 | > This chapter has been authored by 47 | 48 | Well, next we will talk a bit about Kotlin, the new JVM language by Jetbrains. 49 | Kotlin is less verbose than the original JVM language Java and is now one of 50 | the main development languages of the Android Platfom. Let's get into it. 51 | ``` 52 | 53 | The intro.md should give a brief look at the language. Talk about the story of 54 | language or tell from where it came. Look at the file intro.md present in the 55 | root of the repository for inspiration. 56 | 57 | The contents of the chapter are to be added as separate .md files for 58 | each sub-chapter. An example sub-directory with sub-chapters is given. 59 | 60 | ``` md 61 | /book/languages/kotlin/ 62 | README.md 63 | intro.md 64 | .md 65 | ``` 66 | 67 | It is advised to divide the chapters into sub-chapters for better organization and 68 | readability. If the author decides not to do so then the entire 69 | contents of the chapter should be written in the intro.md file itself. 70 | 71 | ### After writing the chapter 72 | 73 | After writing the chapter, an entry should be made in the Summary.md file similar 74 | to the one given in the example below. 75 | 76 | ```md 77 | * [](languages/assembly/README.md) 78 | 79 | * [Introduction](languages/assembly/intro.md) 80 | 81 | * [](languages/assembly/.md) 82 | ``` 83 | 84 | Note that Summary.md contains the order in which various chapters and the 85 | sub-chapters appear in the final product, hence the entries should be made 86 | appropriately. Also, note that various languages in the Summary.md file appear 87 | in the order of creation/release. 88 | 89 | For example the Summary.md file with two languages, Assembly and Python. 90 | 91 | ```md 92 | * [Assembly](languages/assembly/README.md) 93 | * [sub-chapter](languages/assembly/{name of file}.md) 94 | (leave a blank line) 95 | * [Python](languages/python/README.md) 96 | * [sub-chapter 0](languages/python/{name of file}.md) 97 | (leave a blank line) 98 | * [sub-chapter 1](languages/python/{name of file}.md) 99 | 100 | ``` 101 | 102 | Feel free to ask for help regarding this aspect or anything in general. 103 | 104 | You may also add your details in the credits.md in a similar way as other existing entries. 105 | 106 | ## Pull request and CI 107 | 108 | After finishing your work, submit a pull request (PR) for merging your changes 109 | into the base branch. Add the editing team as reviewers. If the pull request 110 | adds a new chapter, then add the label "new-chapter". 111 | 112 | Also, close any previously opened issue(s) which are fulfilled by the 113 | pull request. 114 | 115 | Every pull request undergoes an automatic build process which automatically 116 | generates the updated book. A set of rules on the format of the content is 117 | defined all of which should be followed for the build to be successful. 118 | 119 | These rules are given below. 120 | 121 | * Lines should **NOT** have trailing whitespace. 122 | 123 | * *List elements*, *fenced code blocks* and *headers* should be surrounded with **blank lines**. 124 | 125 | ```md 126 | Some sentence. 127 | 128 | * List element 1 or ## Header 1 129 | 130 | * List element 2 or ## Header 2 131 | 132 | Continuation. 133 | ``` 134 | 135 | * Each line should contain a maximum of **300** characters. 136 | 137 | * Emphasis should **NOT** be used as a header. 138 | 139 | * Use ``---`` for horizontal rules 140 | 141 | * Two top-level headers should **NOT** be present. 142 | 143 | ```md 144 | This is wrong format 145 | 146 | # Heading 1 147 | 148 | # Heading 2 149 | ``` 150 | 151 | * Always use ATX style headers 152 | 153 | ```md 154 | Correct: 155 | # ATX style H1 156 | 157 | 158 | Wrong: 159 | ## Closed ATX style H2 ## 160 | 161 | Setext style H1 162 | =============== 163 | ``` 164 | 165 | * Leave a space after hash on atx style header and after the "\*" symbol in list elements. 166 | 167 | ```md 168 | Correct: 169 | # Heading 170 | * List element 171 | 172 | Wrong: 173 | #Heading 174 | *List element 175 | ``` 176 | 177 | For everything else the standard rules, described [here](https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md), apply. 178 | 179 | If there are any mistakes in format, the build will fail and the mistakes are 180 | prompted by @SkayoBot to be corrected. An example prompt is given. 181 | 182 | "------------------Prompt Begins------------ 183 | 184 | Checks failed - mdlint output: 185 | 186 | ```md 187 | devRant-Community/Community-Programming-Book/book/languages/abc/conclusion.md 188 | 9:3 no-space-in-links [MD039] Spaces inside link text "...aking of python-An interview ]" 189 | devRant-Community/Community-Programming-Book/book/languages/abc/disadvantages.md 190 | 9:100 no-trailing-spaces [MD009] Trailing spaces [Expected: 0; Actual: 3] 191 | devRant-Community/Community-Programming-Book/book/languages/abc/misc.md 192 | 6 no-emphasis-as-header [MD036] Emphasis used instead of a header "Function to convert given temp..." 193 | 37:85 no-trailing-spaces [MD009] Trailing spaces [Expected: 0; Actual: 2] 194 | devRant-Community/Community-Programming-Book/book/languages/assembly/advantages.md 195 | ``` 196 | 197 | Please fix these errors before merging! 198 | 199 | "-----------Prompt Ends------------- 200 | 201 | After the CI is successful please wait for the editing team to make changes 202 | (if any) and finally approve your work for merging. You are free to discuss 203 | with the concerned editor(s) about any edits made. 204 | 205 | Though this guide is extensive it need not be exhaustive. If you have any 206 | doubts or questions feel free to ask. 207 | 208 | Happy Contributing ! :) 209 | -------------------------------------------------------------------------------- /book/icons/svg/JavaScript.svg: -------------------------------------------------------------------------------- 1 | --------------------------------------------------------------------------------