Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/songtianyi/landscape-of-programming
- Owner: songtianyi
- License: bsd-3-clause
- Created: 2018-06-04T03:39:09.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-12-31T03:06:48.000Z (about 4 years ago)
- Last Synced: 2024-08-05T17:31:51.755Z (5 months ago)
- Topics: algorithms, architecture, data-structures, databases, development, engineering, frameworks, middlewares, networks, programming, programming-language, quality-assurance, solutions, storages
- Size: 16.6 KB
- Stars: 66
- Watchers: 6
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-hacking-lists - songtianyi/landscape-of-programming - This repo aim to show you what to learn on the way to excellence. (Others)
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.