کاش میشد بگم میتونم دو خط کد با Brainfuck بنویسم |:
ولی در حال حاضر تو خوندنش گیر کردم.
https://en.wikipedia.org/wiki/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 دارین.
نکته: حواستون باشه که اگرگ current cell مقدارش 0 بشه از لوپی که با براکت ساخته شده بود خارج میشه!
حالا به این مثال توجه کنید. اون اولش یه لوپ زده که میگه اگر متن بنویسید مث کامنت میمونه. فقط کامند هایی که ولید هست به حساب میان. بعدش ۸ تا + نوشته. ینی Cell#0 مقدارش مساوی میشه با ۸. بعدش یه لوپ میشه. و توی iteration ش هر دفعه بر میگرده به Cell#0 و مقدار رو یه واحد کم میکنه (تا لوپ نهایی فقط ۸ بار اجرا بشه).
بعد بقیه ش به همین منواله. منتها یه nested loop هم میبینید :) اینو برا این خاطر زده که بتونه پروگرام ش رو کوتاه تر بنویسه! اون لوپ اولی میاد در واقع ضربدر ۸ ش میکنه. و تو لوپ داخلی هم باز به همین منوال به صورت دوره ای میاد اعدادی رو به سلول ها اضافه میکنه. تا چی بشه؟!
تا بیاد برسه به بخش نهایی:
که میگه Cell#2 در حال حاضر مقدارش 72 هست. همینجاس که میگی 72 نمنه؟ خب 72 رو توی ASCII Table پیداش بکنید بر اساس Decimal ش میبینید که همون کاراکتر 'H' هست. حالا همین
ینی چی؟ اگر یادتون باشه از لوپی که قبل از این کدا بود به برگشته بودیم به Cell#0 و الان این میگه برو Cell#2 و مقدارش رو put کن (نمایش بده).
بقیش هم عینا همینه. فقط یه گاها برای چندتا از سلول ها لازم شده که چندتا مقدار رو دستی کم و زیاد بکنه که برسه به کاراکتر مورد نظرش! ولی سیستم کار کردنش همین بود که گفتم :)
اینی هم که اینجا میبینید ساده شده همین کده. فرقی ندارن. و اینم بگم که این ساده ترین شکل و بهینه ترین شکل نمایش Hello World با 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 نیست و راه های دیگری هم هست.
امیدوارم لذت برده باشید :) لایک و کامنت فراموش نشه!
Wikipedia
Brainfuck
esoteric, minimalist programming language
❤6🔥2
این هم یک esolang دیگر که خیلی جالبه /:
اینستراکشن های معتبرش space, tab و linefeed هست.
نمونه کدش:
https://github.com/Romejanic/Whitespace/blob/master/helloworld.ws
ویکی پدیا:
https://en.wikipedia.org/wiki/Whitespace_(programming_language)
اینستراکشن های معتبرش space, tab و linefeed هست.
نمونه کدش:
https://github.com/Romejanic/Whitespace/blob/master/helloworld.ws
ویکی پدیا:
https://en.wikipedia.org/wiki/Whitespace_(programming_language)
GitHub
Whitespace/helloworld.ws at master · Romejanic/Whitespace
A programming language composed entirely of whitespace. - Romejanic/Whitespace
💊5
اینجا یک سری کامپوننت آماده TailwindCSS خیلی خوب گذاشتن که هیچ دیپندنسی خارجی ای نداره. کافیه کپی پیست کنید و کار میکنه.
https://preline.co
https://preline.co
Preline
Preline UI - Tailwind CSS components library
Preline UI is an open-source Tailwind CSS components library for any needs. Comes with UI examples & blocks, templates, plugins, Figma design system and more.
❤7
یه کرش کورس کوچیک برای درس طراحی کامپیوتر (طبق کتاب Morris Mano)
https://faradars.org/courses/fvsft112e-basic-computer-design-in-computer-architecture?registered=1
https://faradars.org/courses/fvsft112e-basic-computer-design-in-computer-architecture?registered=1
دوتا پروگرام با Go و Cyrus نوشتم. و از هردوشون بنچمارک گرفتم. در آینده جزییات بیشتری از بنچمارک ها و سورس کد پروگرام ارائه خواهم داد. و همین نتیجه فعلی برای من رضایت بخشه :) چرا که هیچ تلاشی هم از طرف من صورت نگرفته برای آپتیمایزشن چه توی لول AST و چه LLVM-IR. بنابر این جای امیدواری هست که یه کوچولو هم ازین سریعتر بشه و خواهد شد.
نکته: برای بیلد کردن سورس Go و چه Cyrus از OPT LEVEL دیفالت استفاده شده. هردوی این کامپایلر ها پتانسیل سریعتر شدن رو دارن اگر لول آپتیمایزیشن رو افزایش بدیم. ولی فعلا همین کفایت میکنه.
https://github.com/cyrus-lang/Cyrus
نکته: برای بیلد کردن سورس Go و چه Cyrus از OPT LEVEL دیفالت استفاده شده. هردوی این کامپایلر ها پتانسیل سریعتر شدن رو دارن اگر لول آپتیمایزیشن رو افزایش بدیم. ولی فعلا همین کفایت میکنه.
https://github.com/cyrus-lang/Cyrus
🔥16
و مث همیشه خیلی متشکرم از حمایت ها و دلگرمی هاتون💚
به امید ساختن آینده ای بهتر کنار همدیگه🔥
به امید ساختن آینده ای بهتر کنار همدیگه🔥
❤18
عجیب غریب ترین expression های توی Rust :
https://www.wakunguma.com/blog/rust-weird-expr
یک نمونه ش :
اصلا اینا چرا کار میکنه خدا میدونه😹
https://www.wakunguma.com/blog/rust-weird-expr
یک نمونه ش :
fn infcx() {
pub mod cx {
pub mod cx {
pub use super::cx;
pub struct Cx;
}
}
let _cx: cx::cx::Cx = cx::cx::cx::cx::cx::Cx;
}
اصلا اینا چرا کار میکنه خدا میدونه😹
Wakunguma
Weird expressions in rust
Explore weird quirks of rusts type system
1❤2
نمیدونم کی ستاره اهدا کرد. فقط خواستم بگم این اولین باره توی کانال هایی که داشتم کسی ستاره داده. کار هرکی بوده خیلی خیلی دمش گرم😁❤️
1❤11
راجب زبونای Functional در مقایسه با زبونای Imperative.
و تفاوت دیدگاه زبان OCaml برای حل مسائل.
https://www.youtube.com/watch?v=v1CmGbOGb2I
و تفاوت دیدگاه زبان OCaml برای حل مسائل.
https://www.youtube.com/watch?v=v1CmGbOGb2I
YouTube
Why OCaml
A summary of why Jane Street uses OCaml, including a discussion of how OCaml fits into the broader space of programming languages. Given to our summer interns.
👾3
ویدیو ساخت خودم. میخواستم برا Cyrus بیام Foreach بسازم که. کار کشید به نوشتن runtime inbounds check😂🤌🏿
https://www.youtube.com/watch?v=667xXQbBELs
ادامه ش اینجاس
https://www.youtube.com/watch?v=1P36cFccQn8
فردا نوشتن Foreach رو ادامه میدیم.
اگر این مدل ویدیو (Daily Coding) رو دوس داشتین میتونیم بیشتر رو این قضیه تمرکز کنیم. اگر نه هم که هیچی.
پ.ن: این ویدیو ها برای اشنایی با کلیت پروژه مفیده. اگر کسی بخواد میتونه سورس کد پروژه رو بخونه و با دیدن ویدیو ها بیشتر متوجه شیوه کار کامپایلر مون میشه و موقعیت مشارکت راحت تر میشه خلاصه.
https://www.youtube.com/watch?v=667xXQbBELs
ادامه ش اینجاس
https://www.youtube.com/watch?v=1P36cFccQn8
فردا نوشتن Foreach رو ادامه میدیم.
اگر این مدل ویدیو (Daily Coding) رو دوس داشتین میتونیم بیشتر رو این قضیه تمرکز کنیم. اگر نه هم که هیچی.
پ.ن: این ویدیو ها برای اشنایی با کلیت پروژه مفیده. اگر کسی بخواد میتونه سورس کد پروژه رو بخونه و با دیدن ویدیو ها بیشتر متوجه شیوه کار کامپایلر مون میشه و موقعیت مشارکت راحت تر میشه خلاصه.
YouTube
میخواستم foreach برای زبانم درست کنم ولی کار به جاهای باریک کشید
🔥7
یه چیت شیت ۱۰ صفحه ای برای اسمبلی x64
https://cs.brown.edu/courses/cs033/docs/guides/x64_cheatsheet.pdf
https://cs.brown.edu/courses/cs033/docs/guides/x64_cheatsheet.pdf
🔥7
اینم یک زبان برنامه نویسی اسوتریک دیگه که من ساختم :)
این یک زبان برنامه نویسی اسوتریک (esoteric) است که محض تفنن و ایجاد انگیزه ساخته شده است. داستان به اونجایی برمیگرده که یکروز اونقدری کامپایلر دیزاین فشار آورد که مجبور شدم صداهای ناهنجاری مث بععععع از خودم روانه کنم :) این زبان رو به عشق برنامه نویس های سیستمی ساختم که فشار روانی زیادی رو تحمل میکنن تا بتونن مکانیزمی رو پیاده سازی و نتیجتا مشکلی رو حل کنند. این زبان رمزی از Brainfuck الهام گرفته شده و همان شیوه instruction هارو شامل میشه. امیدوارم بععععع بععععع کردن موقع کار به بهبود سلامت روان تون کمک کنه و یادتون نره که زندگی هنوزم سرزندگی و خوشحالی رو از دست نداده :)
https://github.com/tahadostifam/Babaism
شما هم به ببئیسم بپیوندید
با ساختن ایشیو در همین ریپازیتوری و با روانه کردن بعععع بععععع میتونین بدون اخذ هیچ هزینه ای در ببئیسم عضو بشید.
این یک زبان برنامه نویسی اسوتریک (esoteric) است که محض تفنن و ایجاد انگیزه ساخته شده است. داستان به اونجایی برمیگرده که یکروز اونقدری کامپایلر دیزاین فشار آورد که مجبور شدم صداهای ناهنجاری مث بععععع از خودم روانه کنم :) این زبان رو به عشق برنامه نویس های سیستمی ساختم که فشار روانی زیادی رو تحمل میکنن تا بتونن مکانیزمی رو پیاده سازی و نتیجتا مشکلی رو حل کنند. این زبان رمزی از Brainfuck الهام گرفته شده و همان شیوه instruction هارو شامل میشه. امیدوارم بععععع بععععع کردن موقع کار به بهبود سلامت روان تون کمک کنه و یادتون نره که زندگی هنوزم سرزندگی و خوشحالی رو از دست نداده :)
https://github.com/tahadostifam/Babaism
شما هم به ببئیسم بپیوندید
با ساختن ایشیو در همین ریپازیتوری و با روانه کردن بعععع بععععع میتونین بدون اخذ هیچ هزینه ای در ببئیسم عضو بشید.
GitHub
GitHub - tahadostifam/Babaism: پکیج درمانی ببئیسم برای سیستم پروگرمر ها و سایرین
پکیج درمانی ببئیسم برای سیستم پروگرمر ها و سایرین. Contribute to tahadostifam/Babaism development by creating an account on GitHub.
🔥10🤣2❤1👍1