From 00478b3a0d805e44433a1f3ad4b3b081995c434a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AF=AE?= Date: Sat, 18 Feb 2023 00:01:08 +0900 Subject: [PATCH] Don't use dependencies, only standard libraries --- src/blog/only-use-standard-libs/index.md | 96 ++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/blog/only-use-standard-libs/index.md diff --git a/src/blog/only-use-standard-libs/index.md b/src/blog/only-use-standard-libs/index.md new file mode 100644 index 0000000..7510044 --- /dev/null +++ b/src/blog/only-use-standard-libs/index.md @@ -0,0 +1,96 @@ +title: Don't use dependencies, only standard libraries +author: 寮 +date: 2023-02-14 +tags: technology,programming,webdev +---- +BITCH!! Gimme chocolate!\ +It's Valentine's Day! + +As you guys already know, I hate dependencies.\ +I write all functionality by myself, unless I absolutely need to use a dependency (for example ncurses for desktop programs, or SDL for video games, or MySQL for web development).\ +But what if I told you that all these dependencies, including the absolutely necessary ones, are all written using standard libraries?\ +And if not, then it has a chain of dependencies, and at the very end of it it's pure standard libraries. + +Especially Javascript and Python programs are ALWAYS massive dependency hells, even if you only initialize a JS project, so you only initialize a new Vue.js, Alpine.js, or whatever other engine you're using, it's already pulling in hundreds of Mebibytes of unwanted cruft, only to display a blank page of nothingness, it's absolutely absurd!\ +Though it's kind of understandable, since both languages are commonly used by people who don't know how to code, don't know how computers work, and only want to make a quick buck, while both languages are pretty much empty (only a few basic keywords and nothing else). + +But I'm seeing the same shit with PHP, which is more likely to be used by more advanced programmers/computer users, and by default provides an abundance of functionality.\ +PHP is so complete, in my entire 20+ years of working in it I never pulled a single external dependency ever!\ +The only time I did work with PHP dependencies was when I got handed a frameworked PHP project that's full of bugs, and even then I never added any new dependencies, and if I did finger with the dependencies, I only ever reduced the amount of dependencies.\ +But despite that, there's still things like Composer and Packagist, and a lot of dependencies available for download.\ +I just can't get the point... + +To me there's no such a thing as "traditional development" and "modern development".\ +To me there's only the right way of programming, and the wrong way of programming.\ +Everything soydevs consider "modern development" is pretty much the wrong way. + +EYE BREAK!!\ +![](http://ass.ryocafe.site/__nekomata_okayu_and_inugami_korone_hololive_drawn_by_kkato__sample-25536e588342f663055d06e4a0eaee6a.jpg) + +If you have to verify by yourself, just take any random framework as-is, inspect the dependencies it comes with by default, and follow the chain all the way down until you get to a project that has no dependencies at all.\ +You'll quickly see that standard libraries provide you everything you need in every single language.\ +In C and C++ that's the STD libraries, in Go that's FMT, in C# and Java that's System, PHP doesn't have a name for it because everything is already imported by default anyway.\ +C is known for not having strings, Go is known for not having arrays, Rust is known for not having nulls.\ +And you can still write implementations of these using their standard libraries.\ +For example, since PHP 8.0 there's the `str_starts_with()` function.\ +All this is, is this (for those who use PHP 7.4 or older): + +```php + +``` + +Let's rewrite the same thing in C: + +```c +#include +#include + +int str_starts_with (char* haystack, char *needle) { + return needle != "" && strncmp(haystack, needle, strlen(needle)) == 0 ? 1 : 0; +} + +int main () { + char* string = "Fuck you you fucking nigger"; + printf("\"%s\" starts with \"Fuck you\": %d\n", string, str_starts_with (string, "Fuck you")); + printf("\"%s\" starts with \"fucking\": %d\n", string, str_starts_with (string, "fucking")); + + return 0; +} +``` + +Output: +``` +"Fuck you you fucking nigger" starts with "Fuck you": 1 +"Fuck you you fucking nigger" starts with "fucking": 0 +``` + +And in Go: + +```go +package main + +import ( + "fmt" + "strings" +) + +func main () { + str := "Fuck you you fucking nigger" + fmt.Printf("\"%s\" starts with \"Fuck you\": %t\n", str, strings.HasPrefix(str, "Fuck you")) + fmt.Printf("\"%s\" starts with \"fucking\": %t\n", str, strings.HasPrefix(str, "fucking")) +} +``` + +Output: +``` +"Fuck you you fucking nigger" starts with "Fuck you": true +"Fuck you you fucking nigger" starts with "fucking": false +```