Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/songtianyi/landscape-of-programming

This repo aim to show you what to learn on the way to excellence.
https://github.com/songtianyi/landscape-of-programming

algorithms architecture data-structures databases development engineering frameworks middlewares networks programming programming-language quality-assurance solutions storages

Last synced: about 2 months ago
JSON representation

This repo aim to show you what to learn on the way to excellence.

Awesome Lists containing this project

README

        

# Landscape of programming

This repo aim to show you what to learn on the way to excellence. And the knowledge hierarchy is helpful for writing your resume. It's a baby yet, any improvements will be appreciated!

[ 中文](zh_CN.md) [English](README.md)

In college, the scheduled classes shaped your way of learning, But after graduated, nobody telling you what to learn. You learned a lot, but in the meantime, you realized you know nothing. Because you don't have a knowledge hierarchy in your mind. This repo will(but not yet) show you a full clear view of programming techniques. Schedule your study plan with this hierarchy. Get charged before you out of battery :)

### Knowledge hierarchy for programming

_Please PR for improving the hierarchy_

##### Computer architecture

##### Programming languages

[`c/c++`](http://www.google.com) `node` `golang` `java, groovy, scala` `shell` ` type systems` `paradigms` `tool chains` `haskell` `rust`etc.

##### Data structure and algorithms

queue, set, linked list, heap, stack, hash-table, trie, b tree, b+ tree, red-black tree, splay tree, R tree etc.

dfs, bfs, quick sort, heap sort, binary search, dynamic programming, dijkstra, floyd, hash(crc32, md5), math(number theory, linear algebra, 3D-math) etc.

##### Software engineering

runtime(os, virtualization, interpreters, container..), design patterns, models(concurrency, memory, lock, epoll, nio, kqueue..), mechanisms(gc, transactional..), theories(CAP, etc), RFCs, etc

##### Software frameworks

spring-boot, boost, express, vue, protobuf, ionic, gtk, openGL, qt, etc.

##### Database and storages

relational(mysql..), document(mongodb..), time-serials(timescale..), key-value(redis..), graph(neo4j..), wild-column(cassandra..), event(event-store..), object-oriented(perst, ObjectDB..), fs, hard-disk, etc.

##### Middlewares

message-queue(rabbitmq, rocketmq, kafka..), etc.

##### Networks

tcp/ip, https, http2.0, sdn, bluetooth, routers, switchs, vlan, vxlan, firewalls, etc.

##### Software architecture and solutions

c/s, b/s, p2p, distributed systems, decentralized systems, plugin, HA, micro services, serverless, faas, cloud infrastructure, etc.

##### Software development and quality assurance

methodologies, debugging, deployment, tools, testing, mainteance, performance, docs, CI/CD, security, monitoring, etc.

##### Uncategorized

### Domain specific knowledge Sheet

##### Example

If you want to be an expert in blockchain, organize the knowledge pieces like following sheet.

| hierarchy | domain specific techniques |
| :----------------------------------------- | :----------------------------------------------------------- |
| Programming languages | c/c++, golang, solidity |
| Data structure and algorithms | POW, POS, DPOS, PBFT, Merkle Tree, DAG, mining, Raft, Paxos |
| Software engineering | os, fs, FLP Impossibility, CAP theorem |
| Software frameworks | ethereum, bitcoin |
| Database and storages | IPFS, Block DB(BigchainDB, etc) |
| Middlewares | |
| Networks | p2p |
| Software architecture and solutions | state channels, payment channel, decentralized system |
| Software development and quality assurance | asymmetric encryption |
| Uncategorized | |

##### Domain specific or job specific knowledge sheet

* [blockchain expert](blockchain-expert-en.md)
* [sky-cloud.net senior](sky-cloud.net-senior-en.md)
* [python senior](python-senior-en.md)

*Please pr for more expert knowledge hierarchy sheet*

### Contribution guidelines

* There are many technique items in each level, each item should have appropriate intro/def resource link. ex. [`C`](https://en.wikipedia.org/wiki/C_programming_language) . Modify the link if you have better one.