👾 Geek Engineers
503 subscribers
47 photos
41 files
300 links
👾 Extremist software engineering guidance for Geeks.

Website:
https://geekengineers.netlify.app

Github:
https://github.com/geekengineers
https://github.com/tahadostifam

Community:
@geek_engineers_community
Download Telegram
اینا تلاش های من در برابر burn out شدن و افسردگی ناشی از دولوپ طولانی مدته. گرچه خیلی روم کار ساز نیست ولی فعلا همین از دستم بر میاد :)

https://www.youtube.com/watch?v=i7kh8pNRWOo

دولوپر گیم آمریکایی و سازنده زبان Jai شخص Jonathan Blow که حداقل ۳۰ سال سابقه برنامه نویسی و سیستم پروگرمینگ ش هست راجب کنترل افسردگی و عدم انگیزه برای ادامه دادن توضیح میده.
👾41
پارتنر Chris Lattner خانوم Tanya هم مثل کریس یه دولوپر کامپایلر هست. و در حال حاضر مدیر اجرایی LLVM میباشد. فارغ التحصیل دانشگاه Portland آمریکا.

https://github.com/tlattner

پ.ن: اصلا هم حسادت نکردم...🤦
🫡7🤣1
سرگذشت مرحوم Terry A. Davis و سیستم عامل و زبان برنامه نویسی که ساخته بود :)

https://templeos.org
https://holyc-lang.com

https://www.youtube.com/watch?v=LtlyeDAJR7A

https://www.youtube.com/watch?v=YMUhbIAA9-8

اولا. تری حدود ۱۲۱ هزار خط کد رو تنهایی توی حدود ۱۰ سال نوشته برای درست کردن سیستم عامل معبد.

دوما. اینکار رو با استفاده از زبانی که خودش ساخته بود ینی HolyC انجام داده بود. یک زبان برنامه نویسی سیستمی با شباهت زیاد به C.

سوما. سیستم عامل معبد یکی از پیچیده ترین پروگرام های نوشته شده توسط یک single developer هست. در همین حین ویندوز ۷ با هزاران مشارکت کننده و ساپورت مالی ساخته شد...

چهارم. دیگه حرفی ندارم |: فقط میتونم بگم باععععع💀🫡
🫡9🔥1
یه ایده خفن که پیشنهاد میکنم امتحانش کنید.
نوشتن یه لایبرری IO با اسمبلی (x86)

https://www.youtube.com/watch?v=LigH48lyJ0M

پ.ن: کلی چیز میشه یاد گرفت ازین پروژه :>
🫡10
ویدیو یک واکنش از ThePrimeagen به انتقادات جاناتان بلو نسبت به نرم‌افزار متن‌باز است. بلو درباره فرهنگ، خلاقیت و مدل مشارکت در پروژه‌های متن‌باز صحبت می‌کند.

https://youtu.be/kn59Yn55Pos?si=WiBYdIl_JpQvJXDF

موضوعات مهم مطرح شده:

۱. رکود و کمبود خلاقیت
جاناتان بلو می‌گوید نرم‌افزار متن‌باز بیش از ۲۰ سال است که درجا می‌زند و کار خلاقانه واقعی خیلی کم در آن دیده می‌شود و بیشتر پروژه‌ها فقط کپی هستند. ThePrimeagen تا حدی موافق است اما اشاره می‌کند که نوآوری هم وجود دارد، مخصوصاً در زمینه‌هایی مثل فریم‌ورک‌های جاوااسکریپت.

۲. مدل Pull Request و سلسله‌مراتب پروژه‌ها
بلو از مدل Pull Request انتقاد می‌کند و می‌گوید این مدل باعث ایجاد یک هرم قدرت می‌شود که در آن تعداد کمی (حافظان پروژه) قدرت اصلی را دارند و این با دموکراتیک بودن متن‌باز در تضاد است. ThePrimeagen موافق است که این فرایند می‌تواند بی‌پاداش و سلسله‌مراتبی باشد و مشارکت‌کنندگان معمولاً قدرت و شناخت کافی ندارند.

۳. مدل‌های جایگزین مشارکت
بلو پیشنهاد می‌دهد که مشارکت فقط به گروهی مورد اعتماد محدود شود، مثل روشی که بعضی شرکت‌های بزرگ (مثل گوگل) دارند. ThePrimeagen می‌گوید این کار می‌تواند کیفیت را بالا ببرد و اصطکاک را کم کند، اما الزاماً بهتر یا بدتر نیست، فقط متفاوت است.

۴. دینامیک اجتماعی و انتقاد
بحث درباره چالش‌های اجتماعی متن‌باز است، مثل موانع فرهنگی و زبانی و اینکه انتقاد از کد می‌تواند شخصی تلقی شود. هر دو موافق‌اند که قضاوت فنی قوی مهم است اما نحوه بیان بازخورد برای سلامت جامعه اهمیت دارد.

۵. نقش شخصیت‌های سخت‌گیر
بلو معتقد است بسیاری از مشارکت‌کنندگان عالی، کار کردن با آن‌ها سخت است چون به کارشان اهمیت زیادی می‌دهند و استانداردهای بالایی دارند. ThePrimeagen هم موافق است و می‌گوید این شدت علاقه می‌تواند باعث رفتار تند شود، اما همین باعث پیشرفت پروژه‌ها می‌شود.

۶. حمایت از متن‌باز
همچنین ThePrimeagen تأکید می‌کند که باید از پروژه‌های متن‌بازی که به آن‌ها وابسته هستید، مالی حمایت کنید چون نگهداری آن‌ها زحمت زیادی دارد و معمولاً بدون دستمزد انجام می‌شود.
👍5🔥1
جایگزین اوپن سورس Heroku اومده :)

وان کلیک دیپلویمنت و رول بک ساپورت میکنه. اینتگریشن خوبی هم با گیت هاب داره.

https://canine.sh

باید بگم واقعا فوق العاده ست!

فقط همین یه جمله رو هم از Jonathan تکرار بکنم که، نرم افزار اوپن سورس در اغلب موارد صرفا از نو سازی نرم افزار های تجاری هست :) خلاقیت و نوآوری کمتر چیزی ست که به چشم میخورد...
5
یک کامپایلر خیلی خیلی کوچولو برای C که codegen assembly داره. برای یادگیری و ساختن یک C-like programming language خیلی مفیده خوندن سورس کدش و حتی فورک گرفتنش

https://github.com/rui314/chibicc
🔥4
کاش میشد بگم میتونم دو خط کد با Brainfuck بنویسم |:
ولی در حال حاضر تو خوندنش گیر کردم.

https://en.wikipedia.org/wiki/Brainfuck
🥴3🔥2
👾 Geek Engineers
کاش میشد بگم میتونم دو خط کد با Brainfuck بنویسم |: ولی در حال حاضر تو خوندنش گیر کردم. https://en.wikipedia.org/wiki/Brainfuck
بگذارید یک توضیحات ابتدایی بدم خدمتتون |:

این Brainfuck یک زبان esoteric هست. حالا این ینی چی؟ اینا یه سری زبان های برنامه نویسی هستن که برای تست کردن محدودیت های language design و تجربه و نشون دادن هنر ساخته شدن. (به زبان خودمون مرض داشتن در حقیقت :\)

حالا خود Brainfuck چجوری کار میکنه؟ BF یه نوار داره. بهش Cells میگن. تعداد این سلول ها محدودیت نداره. و شما یه pointer داری. که مسلما به سلول ها پوینت میکنه. و داخل هر سلول شما میتونی مقدار عددی ذخیره کنی. پس کاراکتر و استرینگ و ساده ترین فیچر هایی که اسمبلی داره رو هم نداریم اینجا :) اصل کارش اینه که کلا ۸ تا instruction دارین.

Command    Meaning
> Move pointer right
< Move pointer left
+ Increment current cell
- Decrement current cell
[ Begin loop (if current cell ≠ 0)
] End loop (jump back if cell ≠ 0)
. Output current cell as ASCII character
, Input one character into cell

نکته: حواستون باشه که اگرگ current cell مقدارش 0 بشه از لوپی که با براکت ساخته شده بود خارج میشه!

حالا به این مثال توجه کنید. اون اولش یه لوپ زده که میگه اگر متن بنویسید مث کامنت میمونه. فقط کامند هایی که ولید هست به حساب میان. بعدش ۸ تا + نوشته. ینی Cell#0 مقدارش مساوی میشه با ۸. بعدش یه لوپ میشه. و توی iteration ش هر دفعه بر میگرده به Cell#0 و مقدار رو یه واحد کم میکنه (تا لوپ نهایی فقط ۸ بار اجرا بشه).

بعد بقیه ش به همین منواله. منتها یه nested loop هم میبینید :) اینو برا این خاطر زده که بتونه پروگرام ش رو کوتاه تر بنویسه! اون لوپ اولی میاد در واقع ضربدر ۸ ش میکنه. و تو لوپ داخلی هم باز به همین منوال به صورت دوره ای میاد اعدادی رو به سلول ها اضافه میکنه. تا چی بشه؟!

تا بیاد برسه به بخش نهایی:

قبلش
The result of this is:
Cell no : 0 1 2 3 4 5 6
Contents: 0 0 72 104 88 32 8

>>. Cell #2 has value 72 which is 'H'
>---. Subtract 3 from Cell #3 to get 101 which is 'e'
+++++++..+++. Likewise for 'llo' from Cell #3
ادامه ش


که میگه Cell#2 در حال حاضر مقدارش 72 هست. همینجاس که میگی 72 نمنه؟ خب 72 رو توی ASCII Table پیداش بکنید بر اساس Decimal ش میبینید که همون کاراکتر 'H' هست. حالا همین
>>.

ینی چی؟ اگر یادتون باشه از لوپی که قبل از این کدا بود به برگشته بودیم به Cell#0 و الان این میگه برو Cell#2 و مقدارش رو put کن (نمایش بده).
بقیش هم عینا همینه. فقط یه گاها برای چندتا از سلول ها لازم شده که چندتا مقدار رو دستی کم و زیاد بکنه که برسه به کاراکتر مورد نظرش! ولی سیستم کار کردنش همین بود که گفتم :)

اینی هم که اینجا میبینید ساده شده همین کده. فرقی ندارن. و اینم بگم که این ساده ترین شکل و بهینه ترین شکل نمایش Hello World با Brainfuck نیست و راه های دیگری هم هست.

امیدوارم لذت برده باشید :) لایک و کامنت فراموش نشه!
6🔥2
این هم یک esolang دیگر که خیلی جالبه /:
اینستراکشن های معتبرش space, tab و linefeed هست.

نمونه کدش:

https://github.com/Romejanic/Whitespace/blob/master/helloworld.ws

ویکی پدیا:

https://en.wikipedia.org/wiki/Whitespace_(programming_language)
💊5
اینجا یک سری کامپوننت آماده TailwindCSS خیلی خوب گذاشتن که هیچ دیپندنسی خارجی ای نداره. کافیه کپی پیست کنید و کار میکنه.

https://preline.co
7
یه کرش کورس کوچیک برای درس طراحی کامپیوتر (طبق کتاب Morris Mano)

https://faradars.org/courses/fvsft112e-basic-computer-design-in-computer-architecture?registered=1
Forwarded from /r/unixporn
[GNOME] macOS Tahoe v0.3.0
276 votes (97%) in 2 hours • 47 comments

https://redd.it/1lkaxv4
🆒5
دوتا پروگرام با Go و Cyrus نوشتم. و از هردوشون بنچمارک گرفتم. در آینده جزییات بیشتری از بنچمارک ها و سورس کد پروگرام ارائه خواهم داد. و همین نتیجه فعلی برای من رضایت بخشه :) چرا که هیچ تلاشی هم از طرف من صورت نگرفته برای آپتیمایزشن چه توی لول AST و چه LLVM-IR. بنابر این جای امیدواری هست که یه کوچولو هم ازین سریعتر بشه و خواهد شد.

نکته: برای بیلد کردن سورس Go و چه Cyrus از OPT LEVEL دیفالت استفاده شده. هردوی این کامپایلر ها پتانسیل سریعتر شدن رو دارن اگر لول آپتیمایزیشن رو افزایش بدیم. ولی فعلا همین کفایت میکنه.

https://github.com/cyrus-lang/Cyrus
🔥16
و مث همیشه خیلی متشکرم از حمایت ها و دلگرمی هاتون💚

به امید ساختن آینده ای بهتر کنار همدیگه🔥
18