Difference between revisions of "Relevant Developer Tutorials"
Jump to navigation
Jump to search
(→C++) |
(Fix sourcetrail link) |
||
(24 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | + | <languages/> | |
+ | {{TOC right}} | ||
+ | <translate> | ||
− | Mudlet uses modern C++ | + | <!--T:2--> |
+ | Mudlet uses modern C++17 for the core functionality of the application. | ||
− | For programming newbies: | + | |
+ | == For programming newbies == <!--T:3--> | ||
+ | |||
+ | <!--T:4--> | ||
* [https://www3.ntu.edu.sg/home/ehchua/programming/index.html#Cpp C++] - covers everything C++ basics to advanced. | * [https://www3.ntu.edu.sg/home/ehchua/programming/index.html#Cpp C++] - covers everything C++ basics to advanced. | ||
+ | * [https://discord.gg/ZPErMGW C++ Discord] - great community for help with C++. | ||
+ | * [https://discord.gg/2HKMUAr8vx Qt Discord] - also a great community, this time for coding in Qt. | ||
+ | |||
+ | == For experienced programmers == <!--T:5--> | ||
− | + | <!--T:6--> | |
* [https://www3.ntu.edu.sg/home/ehchua/programming/cpp/cp4_PointerReference.html#zz-1. Pointers] - the core basics of C++. While you can by without needing to know the details, you'll find it really, really useful if you do. | * [https://www3.ntu.edu.sg/home/ehchua/programming/cpp/cp4_PointerReference.html#zz-1. Pointers] - the core basics of C++. While you can by without needing to know the details, you'll find it really, really useful if you do. | ||
* [https://mbevin.wordpress.com/2012/11/13/auto/ C++11] - know how to make your life easier with modern C++11. | * [https://mbevin.wordpress.com/2012/11/13/auto/ C++11] - know how to make your life easier with modern C++11. | ||
+ | * [https://stuartwheaton.com/blog/2020-06-14-c++11-guide C++11 Guide] - fantastic guide on everything C++. | ||
+ | * [https://tonsky.me/blog/emoji emoji breakdown] - everything to know about emojis, is useful to know when working with Mudlet's internal text editing classes. | ||
+ | * [https://learnxinyminutes.com/ Learn X in Y minutes] - helpful brief summary/examples for lots of code languages' syntax and concepts, including [https://learnxinyminutes.com/docs/c++/ C++] and [https://learnxinyminutes.com/docs/lua/ Lua] | ||
+ | |||
+ | == Helpful tools == <!--T:7--> | ||
+ | |||
+ | <!--T:8--> | ||
+ | * [https://github.com/CoatiSoftware/Sourcetrail/releases/tag/2021.4.19 Source Trail] - get quick overview of an unfamiliar codebase (like Mudlet, if you're just joining here) | ||
+ | * [https://www.draw.io/ draw.io] - Draw and share diagrams online | ||
+ | * http://www.rexex101.com/ - test and explain your regular expressions online | ||
+ | * http://www.rexegg.com/regex-quickstart.html - a good little cheat sheet for regex | ||
+ | |||
+ | |||
+ | == Support tools == <!--T:9--> | ||
+ | |||
+ | <!--T:10--> | ||
+ | * https://www.take-a-screenshot.org/ - for all OS, so users can show their problems with ease | ||
+ | * https://color-hex.org/ - Catalogue of colors in different styles, shades, gradients, etc. Very useful for UI design, etc. | ||
+ | |||
+ | |||
+ | == Good reading == <!--T:11--> | ||
− | + | <!--T:12--> | |
* [http://catchchallenger.first-world.info/wiki/Benchmark_for_conception#String catchchallenger wiki] - C++, QString benchmarks. | * [http://catchchallenger.first-world.info/wiki/Benchmark_for_conception#String catchchallenger wiki] - C++, QString benchmarks. | ||
* [https://meetingcpp.com/tl_files/mcpp/2015/talks/Marc-Mutz-MC++15-Effective-Qt.pdf Effective Qt, Meeting C++ 2015] - tips for modern Qt regarding range-based for, QStrings, and the heap. | * [https://meetingcpp.com/tl_files/mcpp/2015/talks/Marc-Mutz-MC++15-Effective-Qt.pdf Effective Qt, Meeting C++ 2015] - tips for modern Qt regarding range-based for, QStrings, and the heap. | ||
+ | * [https://medium.com/genymobile/how-c-lambda-expressions-can-improve-your-qt-code-8cd524f4ed9f How lambda's can improve your Qt code] | ||
+ | * https://github.com/AnthonyCalandra/modern-cpp-features/blob/master/README.md - modern C++ features | ||
+ | * https://marcmutz.wordpress.com/effective-qt/containers/ - Qt's vs standard C++ containers. | ||
+ | * http://theory.stanford.edu/~amitp/GameProgramming/ - A* tips and tricks. | ||
+ | * https://www.reddit.com/r/cpp/comments/7kurp6/recommended_c_tools_for_linux_profiler_static/ - useful C++ tools that can run on Linux. | ||
+ | * https://www.divio.com/blog/documentation - Create 4 kinds of documentation, each serves a different purpose | ||
+ | |||
+ | |||
+ | == Support communities == | ||
+ | |||
+ | * C++ | ||
+ | ** tbd | ||
+ | * Qt | ||
+ | ** [https://forum.qt.io Qt Developers official forum] | ||
+ | ** [https://www.qtcentre.org/ Qt Centre] | ||
+ | * Lua | ||
+ | ** tbd | ||
+ | |||
+ | |||
+ | == Random tips and tricks == <!--T:13--> | ||
− | + | <!--T:14--> | |
Determine what auto resolves to with: | Determine what auto resolves to with: | ||
− | template <typename T> struct watzattype; | + | <!--T:15--> |
+ | template <typename T> struct watzattype; | ||
void TriggerUnit::doCleanup() | void TriggerUnit::doCleanup() | ||
{ | { | ||
Line 24: | Line 76: | ||
watzattype<decltype(trigger)>{}; | watzattype<decltype(trigger)>{}; | ||
+ | <!--T:16--> | ||
Compiler will error and tell you the type, TTrigger*& in this example. | Compiler will error and tell you the type, TTrigger*& in this example. | ||
+ | |||
+ | <!--T:17--> | ||
+ | [[Category: Mudlet Developer Manual]] | ||
+ | </translate> |
Latest revision as of 11:01, 24 December 2022
Mudlet uses modern C++17 for the core functionality of the application.
For programming newbies
- C++ - covers everything C++ basics to advanced.
- C++ Discord - great community for help with C++.
- Qt Discord - also a great community, this time for coding in Qt.
For experienced programmers
- Pointers - the core basics of C++. While you can by without needing to know the details, you'll find it really, really useful if you do.
- C++11 - know how to make your life easier with modern C++11.
- C++11 Guide - fantastic guide on everything C++.
- emoji breakdown - everything to know about emojis, is useful to know when working with Mudlet's internal text editing classes.
- Learn X in Y minutes - helpful brief summary/examples for lots of code languages' syntax and concepts, including C++ and Lua
Helpful tools
- Source Trail - get quick overview of an unfamiliar codebase (like Mudlet, if you're just joining here)
- draw.io - Draw and share diagrams online
- http://www.rexex101.com/ - test and explain your regular expressions online
- http://www.rexegg.com/regex-quickstart.html - a good little cheat sheet for regex
Support tools
- https://www.take-a-screenshot.org/ - for all OS, so users can show their problems with ease
- https://color-hex.org/ - Catalogue of colors in different styles, shades, gradients, etc. Very useful for UI design, etc.
Good reading
- catchchallenger wiki - C++, QString benchmarks.
- Effective Qt, Meeting C++ 2015 - tips for modern Qt regarding range-based for, QStrings, and the heap.
- How lambda's can improve your Qt code
- https://github.com/AnthonyCalandra/modern-cpp-features/blob/master/README.md - modern C++ features
- https://marcmutz.wordpress.com/effective-qt/containers/ - Qt's vs standard C++ containers.
- http://theory.stanford.edu/~amitp/GameProgramming/ - A* tips and tricks.
- https://www.reddit.com/r/cpp/comments/7kurp6/recommended_c_tools_for_linux_profiler_static/ - useful C++ tools that can run on Linux.
- https://www.divio.com/blog/documentation - Create 4 kinds of documentation, each serves a different purpose
Support communities
- C++
- tbd
- Qt
- Lua
- tbd
Random tips and tricks
Determine what auto resolves to with:
template <typename T> struct watzattype; void TriggerUnit::doCleanup() { for(auto & trigger : mCleanupList) { watzattype<decltype(trigger)>{};
Compiler will error and tell you the type, TTrigger*& in this example.