Payamvdn/NorthPersian_fa_wiki huggingface dataset:
اختصاص داده می شود. در ابتدا، به یک نقطه فراخوانی وضعیت "ناشناخته" نسبت داده می شود. هنگامی که اجرای برنامه به یک نقطه فراخوانی خاص با وضعیت ناشناخته رسید، یک جستجوی پویای تابع انجام می شود و نتیجه را در نقطه فراخوانی ذخیره می کند و وضعیت آن نقطه فراخوانی به "تک ریخت" تغییر پیدا می کند. اگر اجرای برنامه دوباره به همان نقطه فراخوانی برسد، پذیرنده اصلی (تابع مقصد، تابعی که واقعاً باید اجرا شود و ممکن است در کلاس پدر شیء مورد نظر پیاده ساری شده باشد) را از آن بازیابی می کند و مستقیماً بدون انجام هرگونه جستجوی بیشتر، آن را فراخوانی می کند. برای آن که احتمال وجود انواع مختلفی از اشیاء در یک نقطه فراخوانی وجود دارد، زبان برنامه نویسی در زمان اجرا باید شرایط محافظت را درون کد وارد کند (چک کند که نوع شیءای که تابع آن فراخوانی شده با نوع قبلی و مورد انتظار آن برابر باشد). به طور معمول برای پیاده سازی این موارد از نقطه فراخوانی استفاده نمی شود و در بخشی به نام مقدمه پذیرنده (بخشی که پیش از اجرای تابع مقصد، فراخوانی می شود) قرار می گیرند تا بتوان از پیش بینی کننده پرش بهتری استفاده کرد. با این کار به جای چندبار کپی کرد
ن در نقاط فراخوانی مختلف یک بار شرایط محافظت در مقدمه پذیرنده قرار می گیرد در نتیجه فضای کمتری اشغال می شود. اگر نقطه فراخوانی در وضعیت "تک ریخت" با نوع دیگری شیء، غیر از آنچه انتظار دارد مواجه شود، باید مجدداً به حالت "ناشناخته" تغییر یابد و دوباره یک جستجوی پویای تابع انجام شود. پیاده سازی ابتدایی با استفاده از یک ثبات و یک دستورالعمل فراخوانی است. با رسیدن به نقطه فراخوانی، مقدار ثبات با آدرس شیءای که تابع را فراخوانده است بارگذاری می شود (در مثال بالا آدرس obj که تابع toString را فراخوانی کرده در ثبات قرار می گیرد) اگر نقطه فراخوانی در وضعیت ناشناخته باشد دستورالعملی اجرا می شود که با استفاده از حافظه نهان جستجوی تابع سطح اول که در بالا اشاره شد، تابع مقصد (پذیرنده) را پیدا می کند، سپس وضعیت نقطه فراخوانی به "تک ریخت" تغییر پیدا می کند. اگر نقطه فراخوانی در وضعیت "تک ریخت" باشد، در زمان اجرا دستورالعمل ها جای گذاری می شوند، به این صورت که فراخوانی یافتن تابع اصلی با فراخوانی مقدمه پذیرنده تعویض می شود (که پیش از این بوسیله جستجوی پویای تابع یافت شده بود). اکنون پیوند نقطه فراخوانی با تابع هدف (پذیرنده) ای
جاده شده است. در مقدمه پذیرنده، شرایط محافظت نوشته شده است که در آن مطابقت نوع شیء فعلی (که در ثبات ذخیره شده) با نوع شیء مورد انتظار بررسی می شود، اگر نوع شیءها تطبیق داده شوند تابع به اجرای خود ادامه می دهد به عبارتی اجرای تابع هدف بلافاصله پس از اجرای مقدمه انجام می شود، در غیر این صورت اجرا به نقطه فراخوانی بازمی گردد و استراتژی های مختلفی امکان پذیر است، به عنوان مثال می توان وضعیت نقطه فراخوانی را به حالت "ناشناخته" تغییر داده و نهان سازی خطی را برای نوع شیء جدید انجام داد. "نهان سازی در خط" در مقایسه با "حافظه نهان جستجوی تابع سطح اول" به جای استفاده از انتخاب گر (که وظیفه آن انتخاب تابع هدف مناسب به ازای نوع شیء مورد نظر می باشد) فقط یک بررسی نوع شیء دارد و همچنین به جای یک فراخوانی غیرمستقیم یا استفاده از جداول توابع مجازی، از یک فراخوانی مستقیم استفاده می کند (که برای بارگذاری چند دستور همزمان و همچنین پیاده سازی خط لوله مفید است)، به همین دلیل نهان سازی در خط کارایی بهتری دارد. انواع نهان سازی در خط. نهان سازی در خط با توجه به میزان کارایی و پیچیدگی، انواع مختلفی دارند که عموماً هر حالت، تکمیل کنند
ه حالت قبلی است. نهان سازی در خط تک ریخت. اگر انواع مختلفی از اشیاء از یک نقطه فراخوانی مشاهده شود، عملکرد نهان سازی در خط به دلیل تغییرات مکرر وضعیت نقطه فراخوانی تضعیف می شود، چرا که با دیدن اشیا از نوع مختلف هر بار باید عملیات تغییر وضعیت و جستجوی پویای تابع را انجام بدهد. مثال زیر یک سناریوی بدترین حالت برای نهان سازی در خط تک ریخت را نشان می دهد: (فرض کنید یافتن تابع toString برای متغیرهای int و string هزینه ای فراتر از فراخوانی مستقیم یک تابع دارد) var values = [1, "a", 2, "b", 3, "c", 4, "d"]; for (var i in values) { document.write(values[i].toString()); مکرراً تابع toString بر روی یک شیء که نوع آن از قبل مشخص نیست فراخوانی می شود، زیرا نوع شیء با هر تکرار حلقه تغییر می کند. بنابراین وضعیت نقطه فراخوانی در هر تکرار از وضعیت "ناشناخته" به "تک ریخت" و برعکس تغییر می کند. به منظور جلوگیری از وقوع این امر ، اکثر پیاده سازی های نهان سازی در خط تک ریخت یک وضعیت سوم نیز در نظر می گیرند که اغلب به آن "بس ریخت (megamorphic)" گفته می شود. این حالت زمانی رخ می دهد که تعویض وضعیت یک نقطه فراخوانی از تعداد تعیین شد
ه ای بیشتر شود. هنگامی که یک نقطه فراخوانی وارد وضعیت "بس ریخت" شود، مانند حالت "ناشناخته" عمل می کند با این تفاوت که دیگر وارد حالت "تک ریخت" نخواهد شد. (برخی از پیاده سازی ها وضعیت را دوباره به حالت "ناشناخته" برمی گردانند. این عمل پس از گذشت مدت زمان مشخص یا یک بار چرخه کامل بازیافت حافظه رخ می دهد) نهان سازی در خط چندریخت. برای تعامل بهتر با نقاط فراخوانی که تعداد محدودی از انواع مختلف اشیاء را مشاهده می کنند، برخی از زبان ها از تکنیکی به نام نهان سازی در خط چندریخت استفاده می کنند. با نهان سازی در خط چندریخت، وضعیت سومی به نام "چندریخت" برای نقطه فراخوانی به وجود می آید. هنگامی که نقطه فراخوانی نوع جدیدی از شیء را مشاهده می کند به جای تغییر وضعیت از "تک ریخت" به "ناشناخته"، به حالت جدیدی به نام "چندریخت" تعویض می شود. یک نقطه فراخوانی "چندریخت" مجموعه محدودی از توابع شناخته شده را ذخیره می کند، و با توجه به نوع شیء تصمیم می گیرد که کدام یک را به عنوان تابع هدف معرفی کند. به عبارت دیگر، با نهان سازی در خط چندریخت، نتایج جستجوی چند تابع را می توان در همان نقطه فراخوانی ذخیره کرد. از آنجا که هر نقطه فراخوان
ی در یک برنامه می تواند انواع مختلفی از اشیاء را ببیند، معمولاً یک حد بالا برای تعداد انواع ذخیره شده وجود دارد که پس از رسیدن به این حد بالا، وضعیت نقطه فراخوانی به یک حالت جدید به نام "بس ریخت" تغییر پیدا می کند و نهان سازی بیشتری انجام نمی شود. اجرای ابتدایی به صورت یک جدول پرش متشکل از یک مقدمه است که نوع شیء مورد نظر را دریافت کرده و پس از انجام چندین مقایسه تعیین می کند کدام پرش باید انجام شود. جدول پرش به طور معمول به یک نقطه فراخوانی اختصاص می یابد که با انواع مختلفی از اشیاء روبرو می شود. اندازه جدول پرش ثابت است و با افزودن مقادیر جدید قادر به رشد می باشد، حداکثر اندازه این جدول عدد کوچکی مانند ۴ یا ۶ یا ۸ می باشد. با دریافت یک نوع شیء جدید در حالتی که جدول به حداکثر اندازه خود رسیده است، برنامه به صورت عادی اجرا می شود و "حافظه نهان جستجوی تابع سطح اول" مجدداً فراخوانی می شود. نهان سازی در خط بس ریخت. اگر در زمان اجرا از هر دو نهان سازی خطی "تک ریخت" و "چندریخت" استفاده شود، در حالت پایدار (یعنی حالتی که انواع مختلف اشیاء دیده شده باشد) نقطه فراخوانی تنها در حالتی وارد وضعیت ناشناخته می شود که جدول
مربوط به نهان سازی چندریخت به حداکثر اندازه خود رسیده باشد. از آنجا که رسیدگی به چنین وضعیتی کند و هزینه بر است، از یک وضعیت جدید برای حل آن استفاده می شود. یک نهان سازی در خط بس ریخت با ایجاد کد برای ایجاد حافظه نهان جستجوی تابع سطح اول برای یک نقطه فراخوانی خاص، بهینه سازی لازم را انجام می دهد. در وضعیت "چندریخت" با عبور از اندازه حداکثری، نهان سازی بس ریخت وارد عمل شده و کد مربوطه را تولید می کند (یا اگر موجود بود از همان استفاده می کند)، سپس کد مربوطه اجرا شده و تابع هدف به نقطه فراخوانی متصل می شود. کد می تواند به طور قابل ملاحظه ای کارآمدتر از یک حافظه نهان جستجو تابع سطح اول عادی باشد زیرا اسم تابعی که به دنبال آن است در حال حاضر ثابت است، که ذخیره سازی در ثبات را آسان تر می کند. پراکندگی وضعیت های نهان سازی. بررسی ها و اندازه گیری های تجربی نشان می دهد پس از اعمال نهان سازی در خط در برنامه های بزرگ اسمال تاک حدود یک سوم از نقاط فراخوانی در حالت ناشناخته باقی می مانند و از دو سوم باقی مانده، ۹۰٪ در وضعیت تک ریخت، ۹٪ در وضعیت چندریخت و ۱٪ در وضعیت بس ریخت هستند. پیوند به بیرون. __نمایه__
دم چلچله ای نوارخامه ای نام یک گونه از سرده فرانه ها است.
آلبرتو مالسانی (؛ زادهٔ ) بازیکن فوتبال سابق و اهل ایتالیا است. از باشگاه هایی که در آن بازی کرده است می توان به باشگاه فوتبال ساسوئولو اشاره کرد.
در علوم کامپیوتر می گوییم یک زبان برنامه نویسی، دارای تابع کلاس-اول است اگر آن زبان با توابع خود به صورت شهروند درجه-یک رفتار کند. این موضوع به این معنی است که زبان مورد نظر باید ویژگی های زیر را پشتیبانی کند: برخی از نظریه داران حوزه ی زبان های برنامه نویسی برای توابع کلاس-اول، علاوه بر موارد بالا، پشتیبانی از توابع ناشناس (anonymous functions) را نیز الزامی می دانند. در زبان هایی که توابع کلاس-اول دارند، نام تابع هیچ وضعیت خاص یا ویژه ای ندارد و همانند متغیرهایی از نوع تابع با آنها برخورد می شود. اصطلاح توابع کلاس-اول برای اولین بار توسط کریستوفر استراچی در زمینه "توابع به عنوان شهروندان درجه-یک" و در اواسط دهه 1960 میلادی ابداع شد. توابع کلاس-اول برای برنامه نویسی تابعی الزامی هستند. در برنامه نویسی تابعی استفاده از توابع مرتبه ی بالا متداول است. یک مثال ساده از تابع مرتبه ی بالا، تابع نگاشت (map) است که به عنوان آرگومان و ورودی خود یک تابع و یک لیست می گیرد و در نهایت یک لیست جدید برمی گرداند که تابع مورد نظر بر روی هر یک از اعضای لیست اعمال شده است. برای اینکه یک زبان برنامه نویسی بتواند از تابع نگاشت پش
تیبانی کند، باید یک تابع را به عنوان آرگومان تابعی دیگر بپذیرد. مفاهیم. در این بخش نحوه ی پیاده سازی یا شبیه سازی اصطلاحات مختلف برنامه نویسی در زبان های دارای تابع کلاس اول (هسکل و پایتون) و زبان های فاقد آن (سی)، بررسی می شود. توابع مرتبه ی بالا. توابع مرتبه ی بالا، توابعی هستند که حداقل یک تابع در آرگومان های ورودی یا خروجی آن وجود داشته باشد. بقیه ی توابع، توابع مرتبه ی اول هستند. در زبان هایی که دارای توابع کلاس اول هستند، توابع می توانند مانند متغیرهای معمولی، به عنوان ورودی به توابع دیگر داده شوند. بنابراین برای پیاده سازی توابع مرتبه ی بالا، بهتر است که زبان مورد نظر از توابع کلاس اول پشتیبانی کند. این توابع به دو صورت می توانند از توابع کلاس اول استفاده کنند: زمانی که آرگومان های ورودی تابع، تابع باشند و زمانی که خروجی تابع، یک تابع باشد. در زبان پایتون داریم: def addition(n): return n + n numbers = (1, 2, 3, 4) result = map(addition, numbers) در زبان هسکل داریم: map :: (a -&gt; b) -&gt; [a] -&gt; [b] map f [] = [] map f (x:xs) = f x : map f xs زبان هایی که از توابع کلاس اول پشتیبانی نمی کنند، معمولا
ً با استفاده از قابلیبت هایی همچون اشاره گر به تابع یا نماینده ها، توابع مرتبه ی بالا را پیاده سازی می کنند. مثلاً در زبان سی داریم: void map(int (*f)(int), int x[], size_t n) { for (int i = 0; i &lt;n; i++) x[i] = f(x[i]); توابع کاری (Curry). توابع کاری، توابعی هستند که چندین آرگومان را به صورت یکی پس از دیگری، به عنوان ورودی می گیرند: در ابتدا یک آرگومان یا پارامتر را می گیرد و سپس تابعی برمی گرداند که آرگومان بعدی را می گیرد و به همین ترتیب ادامه می دهد تا تمامی پارامترها به تابع داده شوند. در این مرحله، تابع محاسبه می شود و مقدار نهایی برگردانده می شود. نام این توابع از اسم منطق دان معروف، هسکل کاری آمده است. در زبان پایتون داریم: def compose(g, f): def h(*args, **kwargs): return g(f(*args, **kwargs)) return h در زبان هسکل داریم: multThree :: (Num a) =&gt; a -&gt; a -&gt; a -&gt; a multThree x y z = x * y * z در زبانی همانند سی که در آن از توابع کلاس اول پشتیبانی نمی کند، پیاده سازی توابع کاری با استفاده از اشاره گر به تابع و توابع متغیر امکان پذیر است. هر چند این گونه پیاده سازی ها، مشکلات خود را دارند:
توابع کاری نمی توانند از لحاظ نوع متغیر بررسی یا چک شوند. همچنین چون این در این توابع تعداد آرگومان ها و نوع آن ها مشخص نیست، میزان حافظه ای که برنامه باید برای هر متغیر اختصاص بدهد، در ابتدا معلوم نیست و برنامه اندازه ی تمام متغیرها را به صورت اندازه ی یک عدد صحیح (integer) در نظر می گیرد. توابع ناشناس و توابع تو در تو. توابع ناشناس، توابعی هستند که نام مشخصی ندارند. در زبان هایی که از توابع ناشناس پشتیبانی می شود، می توان تابع را به عنوان یک آرگومان به یک تابع مرتبه ی بالا ورودی داد. در زبان پایتون داریم: main_function = lambda x: x * 2 در زبان هسکل داریم: main = map (x -&gt; 3 * x + 1) [1, 2, 3, 4, 5] در زبان سی داریم: int f(int x) { return 3 * x + 1; int main() { int list[] = {1, 2, 3, 4, 5}; map(f, list, 5); برابری توابع. همانطور که بحث برابری بین متغیرها در زبان های برنامه نویسی مطرح است، در این زمینه نیز منطقی است که سؤال شود که آیا در مورد توابع هم می توان برابری آن ها را سنجید یا خیر. این سؤال ساده ای نیست و لازم است بین انواع برابری توابع تمایز قائل شود: برابری گسترده. دو تابع f و g را برابر به صورت
گسترده می نامند اگر به ازای هر ورودی، خروجی برابری داشته باشند. با این تعریف، هر نوع پیاده سازی از انواع الگوریتم های مرتب سازی برابر هستند. نتیجه گیری در مورد برابری توابع به صورت گسترده، امکان پذیر نیست و حتی در مورد توابعی که ورودی های محدودی دارند، امر ساده ای نیست. بنابراین زبان های برنامه نویسی برابری تابع های خود را به صورت برابری گسترده پیاده سازی نمی کنند. برابری فشرده. دو تابع f و g را برابر به صورت فشرده می نامند اگر ساختار داخلی یکسانی داشته باشند. پیاده سازی این نوع برابری نیز در زبان های برنامه نویسی راحت نیست. برابری مرجعی. از آنجایی که پیاده سازی دو برابری بالا امکان پذیر نیست، بیشتر زبان های برنامه نویسی برای بررسی برابری توابع، از این نوع برابری استفاده می کنند. در این نوع برابری، تمام توابع با استفاده از یک علامت مشخص می شوند و برابری دو تابع بر اساس برابری علامت آن ها تعیین می شود. دو تابع کاملاً برابر که به صورت جدا تعریف شده اند، در این تعریف برابر نخواهند بود. پشتیبانی زبان ها. پشتیبانی از توابع کلاس اول در زبان های مختلف به صورت زیر است:
صالح سخندان (زاده ۵ آبان ۱۳۶۹ در تهران) طراح آثار حوزه هنری دیدمانی و خطای دید سه بعدی و بنیان گذار ویداوین و استودیو صالسو است که به خاطر آثارش به نام "آقای خطای دید" نیز شناخته می شود. سخندان دانشجوی مهندسی برق بود که به خاطر علاقه اش به حوزه هنری خطای دید از دانشگاه انصراف داد. او پیش از آشنایی با خطای دید تجربهٔ کار در زمینه گرافیک را داشت. سخندان در سبک هنری خود آثار شخصی و تجاری زیادی برجای گذاشته است و با شرکت در مسابقه تلویزیونی "عصر جدید" هنر خود را در تلویزیون صدا و سیما نیز به نمایش گذاشت. زندگی نامه. صالح سخندان ۵ آبان ۱۳۶۹ در تهران متولد شد. به خاطر علاقهٔ خود به مهندسی، هنر و ریاضیات و تجربهٔ کار در زمینه گرافیک به کاربرد این سه رشته در آثارش تمایل داشت. در سال ۱۳۸۹ در حالی که ۲ سال از دوران تحصیلاتش در رشتهٔ مهندسی برق دانشگاه صنعتی خواجه نصیرالدین طوسی می گذشت با حوزه هنری خطای دید آشنا شد و اولین پروژه خود را در زمینه واریخت سازی تابلوها گرفت و پس از یک سال در سال ۱۳۹۰ این پروژه را به اتمام رساند. علاقه مندی سخندان به حوزه هنری واریخت و تجربه انجام پروژه های گرافیکی برای سازمان ها و شرکت ها م
قدمه ای بود تا از دانشگاه انصراف دهد و از سال ۱۳۹۰ به طور تخصصی به مطالعه و طراحی در زمینه خطای دید بپردازد. اولین نمود فعالیت صالح سخندان در حوزه خطای دید، نقاشی سه بعدی بود اما اولین تجربه او نبود. او همچنین پیشگام نقاشی سه بعدی دیجیتال در دنیا است. سخندان در سال های فعالیت خود صدها اثر شخصی و پروژه تجاری انجام داده است که به صورت کلی می توان به ساخت پارک ها، موزه های بزرگ، طراحی گرافیکی و مجسمه سازی بر اساس خطای دید و چیدمان های خاص و نقاشی های سه بعدی اشاره کرد. رؤیا پارک (واقع در دارآباد)، خانهٔ وارونه (واقع در پارک جنگلی چیتگر) و ایلوژنا (واقع در ایران مال) از نمونه آثار او در شهر تهران است. از سال ۱۳۹۳ به تولید پرداخت و اولین محصول خود را در قالب برچسب ارائه نمود که با برچسب های متداولی که در حوزه دکوراسیون استفاده می شد، متفاوت بود. در اسفند ۱۳۹۴ صالح سخندان گروهی هنری به نام «آقای خطای دید» از هنرمندان فعال در حوزه هنری خطای دید با تجربه مطالعاتی و طراحی از سال ۱۳۹۰ تشکیل داد که آثار متعددی از این گروه در فضای مجازی منتشر شده است. سبک نقاشی. آثار هنری خطای دید، آثاری هستند که در نگاه اول آن چیزی که ب
ه نظر می رسند، نیستند و حتی بی نظم و درهم وبرهم به نظر می آیند اما در زاویه ای خاص معنادار می شوند. به گفتهٔ سخندان تحصیلات دانشگاهی و حتی کتاب جامعی که به این موضوع پرداخته باشد، وجود ندارد و یک موضوع بین رشته ای، ترکیبی از پزشکی، هنر، مهندسی است که برای فعالیت در این زمینه نیاز داریم با نحوه کارکرد مغز و سیستم بینایی و مباحث هندسه، نور و فیزیک آشنا باشیم. صالح سخندان درکشیدن آثارش از روش بداهه و ایده بدون طرح اولیه استفاده می کند. در ابتدا آثاری که با خطای دید خلق می کرد به دلیل تازگی این موضوع جدی گرفته نمی شد اما به مرور با انتشار عکس آثارش در اینترنت و شبکه های اجتماعی بیشتر از قبل مورد توجه قرار گرفت و حوزه هنری خطای دید و کاربرد آن در صنایع و به خصوص در تبلیغات و سرگرمی بیش از پیش شناخته شد. به گفته سخندان در اصل نقاشی های سه بعدی با استفاده از پاستل های گچی در خیابان کشیده می شدند و به هنر خیابانی معروف بودند. هدف این گونه آثار رساندن محتوا و اصل نیت هنرمند است و خود نقاشی حائز اهمیت نیست بلکه خروجی آن، مثل عکس هایی که از آن گرفته می شود اهمیت دارد. به همین دلیل الزامی بر ماندگاری آن ها وجود ندارد اما
می توان با استفاده از متریال و رنگ های خاص ماندگاری این آثار را افزایش داد. آثار. در سال ۱۳۸۹ سخندان کار خود را با طراحی دگرگون چند سطحی تابلوهای پارکینگ مجتمع تجاری تیراژه ۲ آغاز کرد. این تابلوها به منظور راهنمایی راننده ها به سمت در خروجی و طبقات مختلف پارکینگ استفاده شده است. در سال ۱۳۹۱ اولین نقاشی سه بعدی خود را در پارک چیتگر تهران با استفاده از زغال و گچ رنگی در متراژ ۱۷ متر مربع کشید. این اثر بعد از یک روز با بارش باران به علت استفاده از گچ رنگی درکشیدن اثر از روی زمین پاک شد. در سال ۱۳۹۲ به سفارش شهرداری تهران در بوستان هنرمندان نقاشی سه بعدی برج میلاد را با استفاده از رنگ اکرولیک بر روی زمین کشید. در سال ۱۳۹۴ به سفارش تداکس تهران لوگوی کنفرانس پارادایم نو را طراحی نمود در سال ۱۳۹۷ اولین موزه خطای دید ایران به نام رؤیا پارک در مجموعه موزه های دارآباد با طراحی و نظارت صالح سخندان ساخته شد و در فروردین ۱۳۹۸ افتتاح شد. تمام این مجموعه به صورت صددرصدی توسط متخصصان و طراحان تیم مهندسی-هنری "آقای خطای دید" بدون بهره گیری از مهندسان و طراحان خارجی ساخته شد. وجود المان های ایرانی در بخش های مختلف این مجموعه
مانند قالیچه پرنده، آرش کمانگیر، سیمرغ، یوزپلنگ ایرانی حس بومی بودن این اثر را برای بازدیدکننده ها تداعی می کند. در آبان ۱۳۹۸ سخندان پروژه خانه وارونه را در دریاچه چیتگر با سوژه اتاق های وارونه آغاز کرد. موزه های زیادی در دنیا با این سوژه که به نام Upside Down شناخته شده است، وجود دارد. پیش از این پروژه نیز سه جاذبه اتاق وارونه در موزه رؤیا پارک اجرا شده بود اما خانه وارونه تهران اولین مجموعه اختصاصی با محوریت اتاق های وارونه در ایران است که در بهمن ۱۳۹۸ افتتاح شد. در آذر ۱۳۹۸ به درخواست معاونت فرهنگی هنری مترو تهران صالح سخندان در ایستگاه متروی دکتر شریعتی تهران چیدمان خطای دید از پرتره علی شریعتی را خلق کرد. در این چیدمان از کتاب های شریعتی استفاده شده که با تماشای نقاشی روی سطوح مختلف آن ها از زاویهٔ ای خاص، تصویر پرتره علی شریعتی دیده می شود. حضور در مسابقه تلویزیونی عصر جدید. صالح سخندان در فصل دوم مسابقه تلویزیونی "عصر جدید" در زمینه هنری برای نمایش استعداد خود در زمینه خطای دید شرکت نمود. با پذیرش در مرحله راستی آزمایی این فصل از مسابقه برای اجرا در مرحله اول انتخاب شد. سخندان با اولین اجرای خود در قسم
ت نهم مرحله اول این مسابقه از داوران سید بشیر حسینی، رؤیا نونهالی و امین حیایی زنگ سفید (رای بله داوران) و از آریا عظیمی نژاد زنگ قرمز (رای نه داوران) دریافت نمود. اجرای سخندان تلفیقی از هنر نقاشی و مهندسی بود که در پایان با ترکیب هدفمندی از بی نظمی ها نتیجه غافلگیرکننده ای برای داوران به وجود آورد. در بخش فینال این قسمت از میان شرکت کنندگان به عنوان یکی از دو نفر منتخب داوران به مرحله دوم راه یافت. سخندان برای دومین اجرای خود در قسمت نهم مرحله دوم این مسابقه نیز موفق شد از همهٔ داوران زنگ سفید (رای بله داوران) دریافت نماید.
در طراحی زبان رایانه ای، قطع کردن(به انگلیسی: stropping) روشی است که توالی ای از حروف را به داشتن خاصیتی ویژه مانند واژه رزروشده، نوع خاصی از متغیر یا مکان حافظه علامت گذاری می کند و به این ترتیب فضای نام متفاوتی از اسم های معمولی (شناساگرها) خواهند داشت تا از مشابهت غلط آن ها جلوگیری شود. این روش در بیشتر زبان های مدرن استفاده نمی شود - به جای آن کلمات کلیدی، کلمات رزرو شده هستند و نمی توان به عنوان شناساگر از آن ها استفاده کرد. استروپینگ اجازه می دهد تا از همان دنباله حروف هم به عنوان کلمات کلیدی و هم به عنوان شناساگر استفاده کرد، و به این ترتیب عمل تجزیه را ساده تر می کند. برای مثال اجازه می دهد نام متغیری if باشد، بدون اینکه با کلمه کلیدی if تداخل داشته باشد. استروپینگ در درجه اول در دهه ۱۹۶۰ با الگول و زبانهای مرتبط همراه بود. اگرچه این روش استفاده های مدرن دارد، اما با سایر تکنیک های مشابه که از نظر ظاهری شباهت زیادی دارند، به راحتی اشتباه گرفته می شود. تاریخچه. روش قطع کردن در توسعه الگول در دهه ۱۹۶۰ پدید آمد که از آن برای تمایزهای تایپی مختلف (boldface و underline) استفاده می شد که در زبان نشر استفاده
می شده است و نمی تواند مستقیماً در زبان سخت افزاری نشان داده شود. یک ماشین تحریر می تواند دارای نویسه های bold باشد، اما در مورد کدگذاری در کارت های پانچ، هیچ کاراکتر Boldای وجود ندارد. اصطلاح «قطع کردن» در الگول ۶۰، از اپاستروف به وجود آمد، زیرا برخی از پیاده سازیهای الگول ۶۰ از آپوستروف ها در اطراف متن استفاده می کردند تا نشان دهندهٔ مهم بودن آن باشند. برای مثال codice_1 نشان دهندهٔ کلمهٔ کلیدی «اگر» است. این روش در الگول۶۸ نیز بسیار مهم است، که در آن روش های مختلف بریدن، معروف به رژیم های بریدن(stropping regimes)، استفاده شده است. آپاستروف های اصلی الگول ۶۰ به طور گسترده مورد استفاده قرار نگرفت در صورتی که حروف بزرگ بیش تر رایج بود. مانند codice_2 و codice_3 که روش بریدن برای همهٔ این ها اعمال می شود. دستور زبان. گسترهٔ وسیعی از دستور زبان های مختلف برای قطع کردن استفاده شده است: در حقیقت، اغلب اینگونه است که چندین قرارداد قطع کردن ممکن است در یک زبان مورد استفاده قرار گیرد. به عنوان مثال، در الگول۶۸ انتخاب بین "بریدن"های مختلف را می توان با یک دستورالعمل کامپایلر (عملگر در واژه شناسی الگول) که به صورت "ن
قطه" (POINT)، "بالایی"(UPPER)، "نقل و قول"(QUOTE) یا "عطف به"(RES) نامیده می شوند، انتخاب کرد. نظام های مختلف قواعد یک ویژگی واژگانی برای کاراکترهای منقطع شده (stropped) هستند، هر چند در برخی موارد، این تفسیرها، تفاسیر ساده ای دارند: در آپاستروف تنها(single apostrophe) و نظام نقطه ای، اولین کاراکتر به عنوان یک کاراکتر فرار عمل می کند، در حالی که در نظام های آپاستروف، به عنوان حائل عمل می کنند. مثال دیگر: برنامه های ALGOL 68RS حتی در یک پردازنده یک زبان نیز می توانند از چندین نوع روش قطع کردن استفاده کنند. مثال های سبک های مختلف الگول ۶۸. توجه داشته باشید به دستورالعمل پیشرو pr (مخفف pragmat)، که خود به سبک نقطه یا نقل قول قطع می شوند، و همچنین برای کامنت (از "") تنظیم شده است - به الگول ۶۸: عناصر مهم زبانی مراجعه کنید. زبان های دیگر. به دلایل مختلف فورترن‎۷۷ دارای این مقادیر "منطقی" و عملگرها است: .TRUE., .FALSE., .EQ., .NE., .LT., .LE., .GT., .GE., .EQV., .NEQV., .OR., .AND., .NOT. .AND., .OR. و .XOR. همچنین در تست های ترکیبی در عبارت های codice_3 و codice_13 در پرونده های دسته ای که تحت پردازنده های خط فرما
ن JP Software مانند 4DOS , 4OS2 و 4NT / Take Command اجرا می شوند، استفاده شده اند. استفادهٔ مدرن. اکثر زبان های مدرن کامپیوتر از روش قطع کردن (stropping) استفاده نمی کنند، با دو استثنا قابل توجه: استفاده از زبانهای زیادی در Microsoft's .NET Common Language Infrastructure (CLI) به روشی برای استفاده از متغیرها به زبانی متفاوت نیاز دارد که ممکن است در یک زبان مکالمه کلمات کلیدی باشند. این کار گاهی اوقات با پیشوندهایی مانند codice_14 در #c یا شناسه در براکت ها در ویژوال بیسیک دات نت انجام می شود. دومین نمونه مهم در بسیاری از پیاده سازی های ساختار، جستجوی زبان است. در این زبانها کلمات محفوظ با محدود کردن واژگان از آنها به عنوان ستون، جدول یا نام متغیر قابل استفاده هستند. به صورت استاندارد کلمات محصور شده با " " مشخص می شوند اما در عمل مکانیسم دقیق با اجرا تغییر می کند؛ برای مثال، مای اس کیوال اجازه می دهد که واژه های رزرو شده در زمینه های دیگر با استفاده از محصور کردن آنها توسط backticks انجام شود یا مایکروسافت اس کیوال سرور از براکت های مربعی استفاده می کند. قطع کردن(stropping) نیز می توانند در زبان برنامه نویسی
Nim مورد استفاده قرار گیرند. در زبان Nim کلمه رزرو شده می تواند به عنوان یک شناسه با ضمیمه کردن آن در براکت استفاده شود. نمونه های دیگری نیز وجود دارند. برای مثال، Web IDL از یک زیرخط codice_15 برای نشانه گذاری شناسه ها استفاده می کند که در غیر این صورت با کلمات محفوظ برخورد می کند. قطع نکردن توسط کامپایلر. در ابتدا در کامپایلر، قطع نکردن (unstropping) در طول مرحله بازسازی خط اول رخ می داد، که همچنین فضاهای خالی را نیز از بین می برد. پس از آن تجزیه و تحلیل بدون اسکنر (بدون نشانه گذاری) دنبال شد که در دهه ۱۹۶۰، برای الگول استاندارد بود. در استفاده مدرن، قطع نکردن(unstropping) به عنوان بخشی از تحلیل واژگانی انجام می شود. یک امر واضح این است اگر فرد واژگان را به دو مرحله اسکنر و ارزیاب متمایز کند: اسکنر رشته قطع شده(stropped) را در طبقه بندی به درستی دسته بندی می کند و سپس ارزیاب هنگام محاسبه مقدار از تکنیک جدانکردن (unstrops) استفاده می کند. به عنوان مثال، در زبانی که زیرخط codice_15 در اول کلمه برای بریدن شناسه ها برای جلوگیری از برخورد با کلمات محفوظ استفاده می شود، دنباله codice_17 به عنوان یک شناسه (نه به
عنوان کلمه رزرو شده در صورت) توسط اسکنر طبقه بندی می شود سپس ارزیاب این مقدار را به عنوان نوع-نشانه codice_18 مقدار خواهد داد. تکنیک های مشابه. تعدادی روش مشابه وجود دارند که به طور کلی با پیشوند یا پسوند گذاری شناسه، برخوردهای مختلف با آن را نشان دهند ولی از لحاظ مفهوم با یکدیگر متفاوتند. به طور دقیق قطع کردن (stropping) متشکل از نمایش های مختلف برای یک اسم، در فضاهای نام متفاوت است و در مرحله نشان گذاری کردن رخ می دهد. از حروف بزرگ برای کلمات کلیدی همچنان به عنوان یک قرارداد برای نوشتن دستور زبان برای واژگان و تجزیه استفاده می شود - علامت گذاری کلمه رزرو شده به عنوان کلاس نشانگر IF، و سپس بیان عبارت "if-then-else" با codice_19 که در آن اصطلاح های با حروف بزرگ کلمات کلیدی هستند و اصطلاحاتی که فقط حرف اول آن ها بزرگ است نمادهای غیر پایانی در یک قاعده تولید هستند (نمادهای پایانی با حروف کوچک مشخص می شوند). قرارداد نامگذاری. ممکن است از قراردادهای نامگذاری برای جلوگیری از تصادم استفاده شود که به صورت معمول از زیرخط پیشوند یا پسوند استفاده می شود. زیرخط پیشوندی اغلب برای نشان دادن اعضای خصوصی در برنامه نویسی شی