<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های نشریه فرامتن</title>
        <link>https://virgool.io/feed/@faramatn</link>
        <description>نشریه علمی - فرهنگی انجمن علمی مهندسی کامپیوتر صنعتی اصفهان
https://zil.ink/faramatn</description>
        <language>fa</language>
        <pubDate>2026-04-14 14:58:41</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/180992/avatar/UdWpDa.png?height=120&amp;width=120</url>
            <title>نشریه فرامتن</title>
            <link>https://virgool.io/@faramatn</link>
        </image>

                    <item>
                <title>داده‌ها؛ سوخت حیاتی هوش مصنوعی!</title>
                <link>https://virgool.io/@faramatn/%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-%D8%B3%D9%88%D8%AE%D8%AA-%D8%AD%DB%8C%D8%A7%D8%AA%DB%8C-%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C-hvo4a7frezzc</link>
                <description>به قلم پوریا دیانتی، ورودی ۴۰۰ کارشناسی مهندسی کامپیوتر صنعتی اصفهانبازنگری‌شده توسط پارسا شیرکوند، ورودی ۴۰۲ کارشناسی مهندسی کامپیوتر صنعتی اصفهانچرا داده‌ها در هوش مصنوعی اهمیت دارند؟وقتی صحبت از هوش مصنوعی می‌شود، اغلب نگاه‌ها متوجه الگوریتم‌ها و مدل‌های پیچیده‌ی ریاضی است. اما باید در نظر داشت که هیچ الگوریتمی—حتی پیشرفته‌ترین آن‌ها—بدون داده توان کار کردن ندارد. داده، ماده‌ی خامی است که الگوریتم‌ها را تغذیه می‌کند و به آن‌ها امکان می‌دهد الگوهای نهفته در جهان واقعی را شناسایی کنند. درست مثل موتور قدرتمندی که بدون سوخت فقط یک تکه فلز بی‌جان است.در دهه‌های آغازین تحقیقات هوش مصنوعی (۶۰ و ۷۰ میلادی)، رویکردها بیشتر بر سیستم‌های خبره (Expert Systems) متمرکز بود. پژوهشگران سعی می‌کردند دانش و قوانین یک حوزه را به‌طور دستی وارد کامپیوتر کنند. مشکل اینجا بود که دنیا بسیار پیچیده‌تر از آن است که بتوان همه‌ی قوانینش را نوشت. نتیجه این شد که با وجود شور و شوق اولیه، پیشرفت چندانی حاصل نشد.تحول واقعی از زمانی آغاز شد که پژوهشگران به جای «قانون‌نویسی»، به یادگیری از داده‌ها روی آوردند. این تغییر رویکرد با افزایش دسترسی به داده‌های دیجیتال هم‌زمان شد. رشد اینترنت در دهه‌ی ۹۰، دیجیتالی شدن فرآیندهای تجاری و اجتماعی، و بعدتر شبکه‌های اجتماعی و گوشی‌های هوشمند، به انبوهی از داده‌ها منجر شد. همین پدیده بود که بعدها با عنوان Big Data شناخته شد: داده‌هایی با حجم بسیار زیاد، سرعت تولید بالا، و تنوع گسترده.این داده‌های عظیم، بستر رشد الگوریتم‌های جدید را فراهم کردند؛ به‌ویژه یادگیری عمیق (Deep Learning) که در سال‌های ۲۰۱۰ به بعد جهش بزرگی در هوش مصنوعی ایجاد کرد. دلیل موفقیت یادگیری عمیق هم دقیقاً همین بود که برای عملکرد خوب، نیاز به حجم عظیمی از داده‌های برچسب‌خورده دارد. برای نمونه:پیشرفت چشمگیر در تشخیص تصویر (مثلاً شناسایی گربه در یک ویدئو یا تشخیص تومور در تصاویر پزشکی) زمانی امکان‌پذیر شد که میلیون‌ها تصویر دیجیتال همراه با برچسب در دسترس پژوهشگران قرار گرفت.در پردازش زبان طبیعی، موتورهای ترجمه‌ی ماشینی یا چت‌بات‌ها توانستند کیفیتی نزدیک به ترجمه‌ی انسانی پیدا کنند، چون میلیاردها جمله‌ی موازی در زبان‌های مختلف جمع‌آوری و استفاده شد.به زبان ساده: هرچه داده بیشتر، متنوع‌تر و باکیفیت‌تر باشد، مدل‌های هوش مصنوعی هم «باهوش‌تر» می‌شوند. درست شبیه کودکی که اگر فقط در یک محیط کوچک زندگی کند، تجربیات محدودی خواهد داشت؛ اما اگر در معرض انواع موقعیت‌ها، فرهنگ‌ها و زبان‌ها قرار بگیرد، فهم عمیق‌تر و گسترده‌تری از جهان پیدا می‌کند.انواع داده‌ها در هوش مصنوعیهمان‌طور که برای ساختن یک بنا به مصالح مختلف نیاز داریم، برای ساختن هوش مصنوعی هم داده‌ها در شکل‌ها و قالب‌های گوناگون مورد استفاده قرار می‌گیرند. شناخت این دسته‌بندی‌ها کمک می‌کند بفهمیم چرا بعضی الگوریتم‌ها برای یک نوع داده فوق‌العاده عمل می‌کنند ولی برای نوع دیگر به ابزارهای متفاوتی نیاز دارند.داده‌ها را می‌توان بر اساس میزان نظم و ساختارشان دسته‌بندی کرد. بخشی از آن‌ها کاملاً منظم‌اند و شکل جدول دارند؛ یعنی هر ردیف و ستون معنا و جایگاه مشخصی دارد. پایگاه‌های داده‌ی سنتی مثل SQL دقیقاً برای همین نوع اطلاعات ساخته شده‌اند. نمونه‌ی روشن آن تراکنش‌های بانکی است که شامل مبلغ، تاریخ و شماره حساب می‌شود، یا فهرست مشتریان یک فروشگاه و داده‌های حسگرهایی که در هر لحظه دما و فشار را ثبت می‌کنند. مزیت این شکل از داده‌ها پیش‌بینی‌پذیری و سهولت پردازش است، هرچند که در عمل تنها بخش کوچکی از واقعیت‌های پیچیده‌ی جهان را پوشش می‌دهند.در مقابل، نوعی از داده‌ها وجود دارد که نه به اندازه‌ی جدول‌ها منظم‌اند و نه آن‌قدر بی‌سامان که نتوان الگویی در آن‌ها پیدا کرد. به این‌ها داده‌های نیمه‌ساخت‌یافته گفته می‌شود. این داده‌ها شکل ثابتی ندارند اما می‌توان نظم کلی یا الگوی تکرارشونده‌ای در آن‌ها دید. فایل‌های JSON یا XML، ایمیل‌ها با بخش‌های مختلفی مثل متن، فرستنده، زمان و پیوست، و همچنین لاگ‌های سیستم نمونه‌هایی از این گروه هستند. چنین داده‌هایی انعطاف‌پذیرترند و در عین حال همچنان قابلیت پردازش نسبتاً بالایی دارند.اما دنیای اصلی داده‌ها در عصر دیجیتال به داده‌های بدون ساختار تعلق دارد. حجم عظیمی از آنچه امروز تولید می‌شود در این دسته قرار می‌گیرد: متن‌هایی مثل پست‌های شبکه‌های اجتماعی، مقالات یا پیام‌ها؛ تصاویر و ویدئوها؛ و همچنین فایل‌های صوتی و موسیقی. این داده‌ها در حالت خام برای ماشین‌ها چندان قابل استفاده نیستند؛ مثلاً عکسی که برای ما بلافاصله قابل درک است، برای کامپیوتر چیزی جز مجموعه‌ای از پیکسل‌ها به نظر نمی‌رسد. همین چالش باعث شد که روش‌های پیشرفته‌ای مثل یادگیری عمیق، شبکه‌های عصبی کانولوشنی در حوزه‌ی تصویر و مدل‌های زبانی در حوزه‌ی متن، وارد عمل شوند و توانایی پردازش و فهم این نوع داده‌ها را فراهم کنند.لازم به ذکر است که در عمل، اکثر سامانه‌های هوش مصنوعی ترکیبی از انواع مختلف داده‌ها را مصرف می‌کنند. برای مثال، یک سرویس پیشنهاد فیلم ممکن است از داده‌های ساخت‌یافته (امتیازدهی کاربران)، داده‌های نیمه‌ساخت‌یافته (لاگ‌های فعالیت کاربر) و داده‌های بدون ساختار (پوستر فیلم‌ها، توضیحات متنی) همزمان استفاده کند. هرچه تنوع داده‌ها بیشتر باشد، درک مدل از جهان واقعی نیز کامل‌تر خواهد بود.کمیت یا کیفیت؟در حوزه‌ی هوش مصنوعی معمولاً این تصور وجود دارد که هرچه داده بیشتر باشد، نتیجه‌ی بهتری به دست می‌آید. درست است که الگوریتم‌ها برای کشف الگوهای پنهان به حجم بالایی از داده نیاز دارند، اما صرفِ داشتن داده‌ی زیاد کافی نیست. اگر کیفیت داده پایین باشد، حتی میلیون‌ها نمونه هم نمی‌تواند مدلی دقیق و قابل اعتماد بسازد.کیفیت داده یعنی اطلاعاتی که به مدل داده می‌شود باید دقیق، مرتبط و عاری از خطا باشد. داده‌های ناقص یا پر از نویز نه‌تنها کمکی نمی‌کنند، بلکه مدل را منحرف می‌سازند. به همین دلیل بخش بزرگی از پروژه‌های هوش مصنوعی صرف پاک‌سازی و آماده‌سازی داده‌ها می‌شود؛ کاری که گاهی از طراحی خود الگوریتم هم پیچیده‌تر و زمان‌برتر است.یکی از مهم‌ترین چالش‌ها در این مسیر مسئله‌ی سوگیری یا بایاس داده‌هاست. الگوریتم‌ها در واقع بازتاب داده‌هایی هستند که با آن‌ها آموزش دیده‌اند. اگر این داده‌ها یک‌طرفه یا محدود باشند، خروجی هم تبعیض‌آمیز خواهد شد. نمونه‌ی شناخته‌شده آن سامانه‌های تشخیص چهره است که وقتی بیشتر بر پایه‌ی تصاویر سفیدپوستان آموزش می‌بینند، در شناسایی افراد با رنگ پوست تیره خطاهای بیشتری دارند. یا موتور جست‌وجویی که فقط با متون رسمی تمرین کرده باشد، در برخورد با زبان محاوره یا اصطلاحات خیابانی دچار سردرگمی می‌شود.بنابراین تنوع داده‌ها به اندازه‌ی حجم آن‌ها اهمیت دارد. مدلی که با داده‌های متنوع آموزش ببیند، می‌تواند در موقعیت‌های مختلف دنیای واقعی نیز درست عمل کند. برای مثال، اگر یک خودرو خودران فقط در هوای آفتابی آموزش دیده باشد، طبیعی است که در روزهای بارانی یا برفی عملکرد ضعیفی داشته باشد.در نهایت، کمیت همچنان اهمیت دارد، اما به تنهایی کافی نیست. ترکیب حجم زیاد با کیفیت بالا و تنوع واقعی، همان چیزی است که داده‌ها را به سوختی سالم و مؤثر برای موتور هوش مصنوعی تبدیل می‌کند.چالش‌های داده‌ها در هوش مصنوعیوقتی از داده‌ها به عنوان «سوخت» هوش مصنوعی یاد می‌شود، اغلب تصویری امیدوارکننده و مثبت به ذهن می‌آید: هرچه داده بیشتر، مدل قوی‌تر و نتیجه دقیق‌تر. اما این نیمه‌ی روشن ماجراست. واقعیت این است که همین سوخت می‌تواند خطرناک هم باشد و اگر مدیریت نشود، پیامدهای سنگینی به دنبال خواهد داشت. هرچه داده‌ها حجیم‌تر و حساس‌تر می‌شوند، چالش‌های استفاده از آن‌ها هم چند برابر می‌گردد.یکی از مهم‌ترین مسائل، موضوع حریم خصوصی و امنیت است. بسیاری از داده‌هایی که امروزه برای آموزش مدل‌ها استفاده می‌شوند، در اصل داده‌های شخصی افرادند: از تاریخچه‌ی جست‌وجوی اینترنتی و پیام‌های خصوصی در اپلیکیشن‌ها گرفته تا اطلاعات پزشکی و مالی. کافی است چنین داده‌هایی نشت پیدا کنند یا به دست هکرها بیفتند تا زندگی میلیون‌ها نفر دستخوش آسیب شود. ماجرای افشای اطلاعات کاربران شبکه‌های اجتماعی و سوءاستفاده از آن‌ها برای تبلیغات هدفمند یا حتی کمپین‌های سیاسی نمونه‌ای روشن از این خطر است. برای مقابله با این تهدیدها، مقرراتی مانند GDPR در اروپا یا قوانین مشابه در دیگر کشورها وضع شده‌اند تا استفاده از داده‌ها شفاف‌تر، کنترل‌شده‌تر و مبتنی بر رضایت کاربران باشد. با این حال، اجرای این قوانین همیشه آسان نیست و همچنان شاهد نقض حریم خصوصی در مقیاس وسیع هستیم.چالش دیگری که کمتر فنی و بیشتر اخلاقی و حقوقی است، به مسئله‌ی مالکیت داده‌ها برمی‌گردد. پرسش ساده اما بنیادین این است: داده‌ها به چه کسی تعلق دارند؟ آیا فردی که آن‌ها را تولید کرده مالک اصلی است، یا شرکتی که آن‌ها را جمع‌آوری و ذخیره کرده؟ این بحث به‌ویژه در حوزه‌ی محتوای خلاقانه پررنگ‌تر شده است. بسیاری از هنرمندان و نویسندگان اعتراض کرده‌اند که آثارشان بدون اجازه برای آموزش مدل‌های تولیدکننده‌ی متن و تصویر به کار رفته است. از نگاه آن‌ها، این نوع استفاده شکلی از بهره‌برداری بدون جبران عادلانه است. در مقابل، شرکت‌های هوش مصنوعی معمولاً استدلال می‌کنند که داده‌ها از فضای عمومی اینترنت جمع‌آوری شده و قابل استفاده برای همه‌اند. این تضاد دیدگاه‌ها به بحث‌های داغی درباره‌ی اخلاق، حقوق مالکیت فکری و ضرورت وضع قوانین جدید منجر شده است.سومین مانع بزرگ در مسیر داده‌ها مربوط به هزینه‌ها و زیرساخت است. داده‌های بزرگ فقط مشکل حقوقی یا اخلاقی ندارند، بلکه بار مالی و فنی سنگینی هم به همراه می‌آورند. ذخیره‌سازی فایل‌های عظیمی مثل ویدئوها یا تصاویر باکیفیت، نیازمند فضا و تجهیزات گسترده است. حتی وقتی داده‌ها ذخیره شدند، تازه مرحله‌ی پردازش آغاز می‌شود. تحلیل داده‌های عظیم به قدرت محاسباتی بالا احتیاج دارد؛ از پردازنده‌های گرافیکی پیشرفته گرفته تا خوشه‌های بزرگ سرورهای ابری. این زیرساخت‌ها ارزان نیستند و اغلب تنها در اختیار شرکت‌های بزرگ فناوری قرار دارند.فراتر از هزینه‌ی مالی، یک هزینه‌ی زیست‌محیطی هم مطرح است. مراکز داده که قلب تپنده‌ی هوش مصنوعی محسوب می‌شوند، انرژی بسیار زیادی مصرف می‌کنند. این مصرف بالا نه‌تنها قبض‌های نجومی برق تولید می‌کند، بلکه به افزایش انتشار کربن و فشار بر محیط زیست هم منجر می‌شود. در دورانی که بحران تغییرات اقلیمی به دغدغه‌ی جهانی تبدیل شده، نمی‌توان از این بُعد ماجرا چشم‌پوشی کرد. هوش مصنوعی از یک سو نوید پیشرفت می‌دهد، اما از سوی دیگر ردپای کربنی آن می‌تواند مانعی جدی برای پایداری محیطی باشد.در مجموع، روشن است که داده‌ها صرفاً فرصت نیستند. در کنار تمام توانمندی‌هایی که فراهم می‌کنند، مجموعه‌ای از مسئولیت‌ها و چالش‌ها را نیز با خود می‌آورند. هوش مصنوعی بدون داده نمی‌تواند رشد کند، اما رشد بی‌حساب و کتاب هم به همان اندازه خطرناک است. از یک طرف باید به امنیت و حریم خصوصی کاربران احترام گذاشت؛ از طرف دیگر حقوق تولیدکنندگان داده و محتوای خلاقانه باید رعایت شود. در کنار این‌ها، بار مالی و زیست‌محیطی مدیریت داده‌ها نیز باید در نظر گرفته شود.بنابراین آینده‌ی هوش مصنوعی نه فقط به پیشرفت الگوریتم‌ها، بلکه به توانایی ما در مدیریت هوشمندانه‌ی داده‌ها گره خورده است. تنها با ایجاد توازن میان استفاده‌ی گسترده و مسئولانه، می‌توان اطمینان داشت که داده‌ها واقعاً به ابزاری برای پیشرفت تبدیل می‌شوند و نه تهدیدی برای افراد، جوامع و حتی سیاره‌ای که بر آن زندگی می‌کنیم.داده‌ها در عملبرای درک نقش واقعی داده‌ها کافی است به چند حوزه‌ی مهم نگاه کنیم؛ جاهایی که بدون داده، هیچ الگوریتمی نمی‌تواند به نتیجه‌ای قابل‌اعتماد برسد.یکی از نمونه‌های آشنا شبکه‌های اجتماعی هستند. محتوایی که در صفحه‌ی شما ظاهر می‌شود، انتخابی تصادفی نیست. هر لایک، هر کلیک و هر لحظه‌ای که روی یک ویدئو یا عکس مکث می‌کنید، بخشی از انبوهی از داده‌های رفتاری است که سیستم‌ها جمع‌آوری می‌کنند. این داده‌ها، که بیشترشان بدون ساختار هستند، به الگوریتم‌ها کمک می‌کنند تا سلیقه و الگوی تعامل شما را بفهمند و در نهایت پست‌ها یا تبلیغاتی را پیشنهاد کنند که بیشترین شانس جلب توجه شما را دارند.در حوزه‌ی سلامت، اهمیت داده‌ها شاید حتی بیشتر به چشم بیاید. سیستم‌های تشخیص بیماری بر پایه‌ی میلیون‌ها تصویر پزشکی مثل MRI و CT Scan آموزش می‌بینند. این تصاویر پیش از ورود به مدل‌ها، توسط پزشکان برچسب‌گذاری می‌شوند؛ مثلاً مشخص می‌شود کدام تصویر وجود یک تومور را نشان می‌دهد و کدام مربوط به بافت سالم است. وقتی این داده‌های برچسب‌خورده وارد الگوریتم‌های یادگیری عمیق می‌شوند، مدل می‌تواند الگوهایی را در تصاویر تشخیص دهد که حتی برای چشم انسان نامحسوس‌اند. نتیجه‌ی چنین فرایندی، تشخیص زودهنگام بیماری‌ها، دقت بالاتر و تصمیم‌گیری آگاهانه‌تر پزشکان است.نمونه‌ی دیگر را می‌توان در ترجمه ماشینی و دستیارهای صوتی دید. وقتی متنی را در یک مترجم آنلاین وارد می‌کنید یا با دستیار صوتی گوشی‌تان حرف می‌زنید، در واقع الگوریتم‌هایی در پس‌زمینه فعال‌اند که با استفاده از داده‌های میلیاردها کاربر آموزش دیده‌اند. مترجم‌های ماشینی از انبوه جملات موازی، یعنی متونی که به زبان‌های مختلف ترجمه شده‌اند، یاد می‌گیرند. دستیارهای صوتی هم با شنیدن میلیون‌ها ساعت گفتار انسان، به تدریج توانسته‌اند زبان طبیعی، لهجه‌های متنوع و حتی الگوهای گفتاری متفاوت را بهتر درک کنند.این مثال‌ها نشان می‌دهند که داده صرفاً بخشی تئوریک از یک الگوریتم نیست. داده همان چیزی است که موتور هوش مصنوعی را روشن نگه می‌دارد و تحولات بزرگی را رقم می‌زند که ما در زندگی روزمره لمس‌شان می‌کنیم؛ از شبکه‌های اجتماعی گرفته تا پزشکی و از ترجمه زبان‌ها تا تعامل طبیعی با ماشین‌ها.جمع‌بندیوقتی به تاریخچه و وضعیت کنونی هوش مصنوعی نگاه می‌کنیم، یک حقیقت واضح می‌شود: هیچ پیشرفتی بدون داده ممکن نبود. الگوریتم‌ها هرچقدر هم پیچیده و پیشرفته باشند، بدون داده مانند موتور خاموشی هستند که سوختی در اختیار ندارد. داده‌ها همان شالوده‌ای هستند که کل بنای هوش مصنوعی بر آن استوار شده است.در این مسیر دیدیم که داده‌ها در قالب‌های مختلف—از ساخت‌یافته و جدولی گرفته تا نیمه‌ساخت‌یافته و نهایتاً بدون ساختار—به کار می‌روند. هر یک از این انواع، چالش‌ها و ارزش‌های خاص خود را دارند. داده‌های ساخت‌یافته نظم و قابلیت پردازش ساده‌تری دارند، اما در برابر واقعیت پیچیده‌ی جهان کافی نیستند. داده‌های نیمه‌ساخت‌یافته پلی میان نظم و بی‌نظمی هستند. و نهایتاً داده‌های بدون ساختار—که سهم عمده‌ی دنیای دیجیتال امروز را تشکیل می‌دهند—میدان اصلی رشد یادگیری عمیق و الگوریتم‌های مدرن بوده‌اند.در کنار کمیت عظیم داده‌ها، کیفیت و تنوع اهمیت کلیدی دارد. داده‌های ناقص یا سوگیرانه نه‌تنها کمکی به پیشرفت مدل‌ها نمی‌کنند، بلکه می‌توانند به تولید خروجی‌های ناعادلانه و گمراه‌کننده منجر شوند. به همین دلیل چرخه‌ی داده‌ها شامل مراحل دقیق و زمان‌بر از جمع‌آوری، پاک‌سازی، برچسب‌گذاری، ذخیره‌سازی و نهایتاً به‌روزرسانی مداوم است. این چرخه همان کارخانه‌ای است که داده‌ی خام را به ماده‌ی ارزشمند و قابل مصرف برای الگوریتم‌ها تبدیل می‌کند.در نهایت نباید فراموش کرد که داده‌ها تنها منبع قدرت نیستند، بلکه مسئولیت‌هایی سنگین هم به همراه دارند. حفاظت از حریم خصوصی افراد، تعیین مرزهای مالکیت داده‌ها، و مدیریت هزینه‌ها و زیرساخت‌ها از جمله چالش‌هایی هستند که هم‌زمان با فرصت‌های ناشی از داده‌ها پدیدار شده‌اند.به بیان ساده، اگر بخواهیم هوش مصنوعی را یک موجود زنده تصور کنیم، داده‌ها همان خونی هستند که در رگ‌های آن جریان دارد. بدون داده، هوش مصنوعی معنایی ندارد؛ و با داده‌ی درست، سالم و متنوع، این فناوری می‌تواند به ابزاری قدرتمند برای بهبود زندگی بشر تبدیل شود.منابع پیشنهادی برای مطالعه بیشترکتاب‌ها:Artificial Intelligence: A Modern Approach – نوشته‌ی Stuart Russell و Peter Norvig. (یکی از جامع‌ترین منابع برای درک مفاهیم بنیادی داده‌ها، الگوریتم‌ها و سخت‌افزار در هوش مصنوعی.)Deep Learning – نوشته‌ی Ian Goodfellow، Yoshua Bengio و Aaron Courville. (منبع کلاسیک برای فهم الگوریتم‌های یادگیری عمیق و نیازهای محاسباتی آن‌ها.)Machine Learning Yearning – نوشته‌ی Andrew Ng. (کتاب مختصر و کاربردی درباره‌ی نحوه‌ی نگاه سیستمی به داده‌ها و الگوریتم‌ها.)مقالات و وب‌سایت‌ها:مقالات و وبلاگ‌های رسمی Google AI و DeepMind (برای مطالعه‌ی پیشرفت‌های اخیر در الگوریتم‌ها و سخت‌افزار).GeeksforGeeks – Machine Learning Algorithms (مرجع دسته‌بندی و توضیح ساده الگوریتم‌ها).NVIDIA Developer Blog (منبع عالی برای فهم کاربرد GPUها در آموزش مدل‌های هوش مصنوعی).Google Cloud TPU documentation (برای آشنایی عملی با TPUها و کاربردشان در یادگیری عمیق).منابع عمومی‌تر برای علاقه‌مندان:دوره‌های آنلاین Coursera – Machine Learning (Andrew Ng) و Deep Learning Specialization.مقالات وب‌سایت Towards Data Science در مدیوم (مناسب برای ترکیبی از نگاه عمومی و تخصصی).ارتباط با ما!نشریه فرامتن رو در پلت‌فرم‌های مختلف دنبال کنید :)https://zil.ink/faramatn</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Wed, 10 Dec 2025 17:41:21 +0330</pubDate>
            </item>
                    <item>
                <title>بلاک‌چین؛ فقط برای رمزارزها؟!</title>
                <link>https://virgool.io/@faramatn/%D8%A8%D9%84%D8%A7%DA%A9-%DA%86%DB%8C%D9%86-%D9%81%D9%82%D8%B7-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B1%D9%85%D8%B2%D8%A7%D8%B1%D8%B2%D9%87%D8%A7-ut0hk0cthuwo</link>
                <description>به قلم سید مجتبی میرسلیمانی، ورودی ۴۰۱ کارشناسی مهندسی کامپیوتر صنعتی اصفهانبازنگری‌شده توسط پارسا شیرکوند، ورودی ۴۰۲ کارشناسی مهندسی کامپیوتر صنعتی اصفهاناحتمالا تا به حال درباره بلاک‌چین‌ها شنیدی، خوندی یا کمی آموزش دیدی؟ بلاک‌چین زنجیره‌ای از بلوک‌هاست که به وسیله توابع هشینگ به هم متصل‌اند. استفاده گسترده از بلاکچین‌ها در حوزه‌های مالی و اقتصادی باعث شده که ذهنیت اکثر افراد تنها بر روی این بعد از کاربردهای بلاکچین متمرکز بشه که کمی باعث ناامیدیه - بیشتر واسه اونایی که دارن توی این راه زحمت می‌کشن!تصویری از اتصال بلوک‌ها در بلاکچیناگه بخوایم با کاربردهای جذاب این تکنولوژی در دیگر حوزه‌ها آشنا بشیم، قبل از هرچیز باید از ویژگی‌ها و نقاط قوت بلاکچین سر در بیاریم و اینطوری شاید خودمون هم تونستیم کاربرد جدیدی از اون رو پیدا کنیم! اگه به تاریخ خوب نگاه کنی، حتی نزدیک به دوران خودمون، می‌بینی بخش بزرگی از مشکلات مردم بر سر اجماع روی یک موضوع یا همون اعتماد بوده؛ حتی اگه یک نفر هم به عنوان فردی مورد اطمینان روی عملکرد و اتفاقات نظارت می‌کرد نمی‌شد صد درصد روی درستی نتیجه و قضاوت درست اون فرد حساب باز کرد. رای‌گیری و انتخابات یکی از مهم‌ترین موضوعاتیه که نیاز به نظارت و اعتماد داره و به صورت مستقیم روی زندگی‌مون تاثیر می‌ذاره؛ حتی واسطه‌گری در یک قرارداد هم از چنین قاعده‌ای مستثنا نیست یعنی فردی مورد اطمینان هردو طرف که روی صحت و سُقم معاهده نظارت کنه.این مشکل خیلی راحت به وسیله تکنولوژی بلاک‌چین قابل حله. بیت‌کوین که الان به عنوان ارزشمندترین رمزارز دنیا شناخته میشه با هدف اصلی حذف واسطه یا همون نفر سوم قرارداد ساخته شد. مکانیزمی که بلاک‌چین بیت‌کوین برای نظارت بر روند ثبت اطلاعات در بلوک‌ها به کار می‌بره با اصطلاح «اثبات کار» (Proof of Work) شناخته می‌شه که به گفته خود ساتوشی -خالق بیت کوین- به این موضوع تاکید می‌کنه: “The problem with this solution is that it requires all the nodes to be honest. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote.”ترجمه ساده:اگه بخوایم به هر نفر یک حق رأی بدیم (مثلاً بر اساس IP)، یه نفر می‌تونه با هزار تا IP تقلب کنه. پس من (ساتوشی) می‌گم که قدرت رأی باید بر اساس توان محاسباتی باشه، یعنی هر واحد پردازش(CPU) = یک رأی. این می‌شه مکانیزم &quot;اثبات کار&quot; (Proof of Work).هویت ساتوشی هنوز نامعلوم استعلاوه بر این، بلاک‌چین، چند ویژگی عالی داره که باعث ‌می‌شه ما بخوایم از اون برای ذخیره‌سازی اطلاعاتمون استفاده کنیم. کاغذ، پایگاه‌های داده دیجیتالی و روش‌های دیگر ذخیره اطلاعات هرکدوم ضعف مختص خودشون رو دارن؛ مثلا اطلاعاتی که به عنوان سند روی کاغذ نوشته می‌شه قابلیت جعل داره یا اطلاعاتی که روی پایگاه‌های داده و سرورها ذخیره می‌شه امکان داره از بین برن و چون به صورت متمرکز هستن با آتش سوزی سرور، اطلاعات بسیاری هم به راحتی دود می‌شه و می‌ره هوا! در بلاک‌چین ما از روش اجماع 50%+1 استفاده می‌کنیم یعنی اگه اطلاعاتی بخواد ذخیره بشه باید 50% اکوسیستم فعال روی بلاک‌چین به علاوه یک نفر، اون رو نظارت و تایید کنن که با وجود تعداد میلیونی -و حتی میلیاردی- افراد فعال در یک اکوسیستم بلاکچینی، این اتفاق به نوعی کاملا امکان‌ناپذیر خواهد بود. همچنین بلاکچین لحظه به لحظه داره توسط میلیون‎‌ها نفر نظارت و روی میلیون‌ها سیستم ذخیره می‌شه و این ویژگی نویدبخش اینه که با از بین رفتن یک سرور و یک سیستم هیچ اطلاعاتی از بین نمی‌ره و نابود نمی‌شه. امروزه می‌بینیم که اطلاعات بسیار حساس و گسترده شرکت‌ها، بیمارستان‌ها، دانشگاه‌ها و دولت‌ها کم‌کم روی بلاک‌چین‌ها نوشته و ذخیره می‌شن که از جعل و نابودی اون‌ها جلوگیری بشه. برای مثال MIT (مؤسسه فناوری ماساچوست) از سال ۲۰۱۷ شروع کرد به صدور مدارک تحصیلی دیجیتال روی بلاک‌چین. این پروژه با همکاری یه شرکت به نام «Machine Learning» و با استفاده از چارچوبی به نام «Blockcerts» انجام شد. یا در مثالی دیگه پروژه‌ای به نام «MedRec» است که توسط «MIT Media Lab» در سال ۲۰۱۶ راه‌اندازی شد و در اون از بلاک‌چین برای ذخیره و مدیریت اطلاعات پزشکی بیماران استفاده می‌کردن.موضوع مالکیت بر آثار یا همون قانون کپی‌رایت هم یکی از مسائلیه که با وجود بلاکچین‌ها حل می‌شه. این تکنولوژی با ورودش به دنیای هنر نحوه مالکیت و تایید اصالت آثار هنری دیجیتال رو به کل تغییر داده. «NFTها» یا همون توکن‌های غیرقابل تعویض توکن‌هایی هستن که هیچ دو توکن از اون‌ها با دیگری برابر نیست بر خلاف توکن‌های عادی مثل رمزارزها که هرواحد اون با واحد دیگه برابره -مثل هر واحد بیت کوین که برابر هر واحد دیگه از اونه. این ویژگی باعث می‌شود که NFT‌ها برای نشان دادن مالکیت بر دارایی‌های دیجیتال مانند آثار هنری، ویدئوها، موسیقی، و انواع فایل‌های دیگه بسیار مناسب باشن. کاربردی از NFTها در هنر دیجیتالاین ویژگی‌ها، نقاط قوت و کاربردهایی از تکنولوژی بلاک‌چین که بهشون اشاره شد تنها بخشی از حوزه‌هاییه که بلاک‌چین در اون‌ها ورود کرده و باعث یه انقلاب شده. بلاک‌چین همچنین در زمینه‌هایی مثل زنجیره تامین کالا، آموزش و بسیاری زمینه‌های دیگه ورود کرده که تحقیق درباره این موارد خالی از لطف نیست. اگه در فکر تاسیس یه کسب‌وکار و یا استارتاپ در آینده هستی حتما حواست به استفاده از بلاک‌چین در کسب‌وکارت هم باشه.راستی!نشریه فرامتن رو در پلت‌فرم‌های مختلف دنبال کنید :)https://zil.ink/faramatn</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Tue, 07 Oct 2025 15:05:05 +0330</pubDate>
            </item>
                    <item>
                <title>مخلوط کنی از جنس رمزارز!</title>
                <link>https://virgool.io/@faramatn/%D9%85%D8%AE%D9%84%D9%88%D8%B7-%DA%A9%D9%86%DB%8C-%D8%A7%D8%B2-%D8%AC%D9%86%D8%B3-%D8%B1%D9%85%D8%B2%D8%A7%D8%B1%D8%B2-bnpofvgeopqf</link>
                <description>به قلم سپهر گنجی ورودی ۹۷ کارشناسی مهندسی کامپیوتر صنعتی اصفهانبازنگری‌شده توسط متین حیدرنژاد، ورودی ۴۰۲ کارشناسی کامپیوتر صنعتی اصفهاناین مطلب صرفاً با هدف علمی و اطلاع‌رسانی نوشته شده و به هیچ‌وجه تشویق یا توصیه به استفاده غیرقانونی از میکسرهای بلاک‌چینی نیست. اگر شما خلافکارید، لطفاً همین‌جا متن رو ببندید و برید دنبال اصلاح نفس :)امروزه کمتر کسی اسم ارزهای دیجیتال (رمزارزها) به گوشش نخورده. همهٔ ما داستان کسی که ده هزار بیت کوین رو با دو عدد پیتزا معامله کرده شنیدیم :)تو این متن در مورد اینکه رمزارزها چطوری کار می‌کنن یا چرا قیمت بیت کوین انقدر رفته بالا صحبت نمی‌کنیم. امروز به بحث حریم شخصی تو رمزارزها می‌پردازیم. شاید شنیده باشید که رمزارزها ناشناسن، یعنی مشخص نیست که یک آدرس بیت کوین مثل aaa متعلق به کیه. در حالی که در تئوری این قضیه کاملا درسته و شما می‌تونید همین الان یک آدرس جدید کاملا تصادفی تولید کنید و کسی ندونه که شما اون رو ساختید؛ اما آیا راهی هست که تا ابد ناشناس بمونید؟ یعنی آدرسی که ساختید با هویتتون گره نخوره؟ اینطوری به نظر نمیاد!بلاکچین یک شبکه غیرمتمرکزه که روی اون می‌تونیم پول‌هامون رو جابجا کنیم. غیر متمرکز به این معنیه که توسط یک مرکز مدیریت نمی‌شه و هزاران کامپیوتر در سرتاسر جهان در حال کمک به جلو رفتن شبکه می‌شن. هر کدوم از این کامپیوترها، یک نسخه از کل تراکنش‌های بیت کوین از ابتدای اختراع تا همین لحظه کنونی رو داره. پس اطلاعات این‌که در چه زمانی، چه مقدار بیت کوین از آدرس aaa به آدرس bbb رفت، در اختیار همه هست. این شفافیت، یکی از نقاط قوت بلاکچین هست. شفافیتی که باعث می‌شه بدون نیاز به داشتن یک بانک یا سرویس مرکزی، هیچ کسی نتونه تقلب کنه و همگی به توافق برسیم که هرکسی (به طور دقیق‌تر هر آدرسی) چقدر پول داره.بیاید با یک مثال بررسی کنیم که چرا شبکهٔ فوق‌العاده و غیرمتمرکز ما، چطوری ممکنه توی حفظ حریم خصوصی ما به مشکل بر بخوره:همگی اسم صرافی‌های رمزارز به گوشمون خورده. کار این صرافی‌ها اینه که پول‌های روزمره مثل ریال و دلار رو از ما می‌گیرن و در ازاش بهمون رمزارز می‌دن، و یا برعکس. خب این صرافی‌ها برای ثبت نام نیازمند مدارک هویتی هستن و این بدین معنیه که دولت‌ها دقیقا می‌دونن هرکدوم از ماها چقدر پول به چه آدرسی از بیت کوین وارد و چقدر برداشت کردیم. مهم نیست پولی که توی شبکه داریم رو چقدر بچرخونیم،‌ از آدرس aaa به bbb به ccc به ... تا به zzz. در انتها (یا ابتدای) این زنجیره، کار ما به صرافی گره خورده و توی این نقطه تمام آدرس‌های این زنجیره لو می‌رن و هویت ما بهشون گره می‌خوره!سارا و دارا هر کدوم یک عدد بیت کوین دارن و تو آدرس‌هایی که به هویتشون گره خورده، ذخیره کردن. حالا بیت‌کوین‌هاشون رو تو یک جعبه قرار می‌دن و بعد اون جعبه هوشمند، دو بیت‌کوین رو به آدرس‌های جدید سارا و دارا که به هویتشون گره نخورده (CCC و DDD) منتقل می‌کنه. حالا شما به عنوان ناظر بیرونی هیچ ایده‌ای ندارید که کدوم آدرس مال سارا و کدوم مال داراست! اما صبر کنید، ما می‌دونیم که یکی از این آدرس‌های خروجی مال سارا و اون‌یکی مال داراست. این یعنی با احتمال ۵۰٪ می‌تونیم همچنان آدرس رو به شخص درستی نسبت بدیم! برای این چه راهی وجود داره؟خب اگه سارا و دارا، دوست‌هایی به اسم‌های مانا و پایا داشته باشن اون وقت می‌تونن بعد از مرحله اول، یک مرحله مخلوط(!) دیگه هم انجام بدن؛ یعنی:حالا از بین چهارتا آدرس خروجی، شما با احتمال ۲۵٪ می‌تونید حدس بزنید که کدوم متعلق به داراست! پس حریم شخصی دارا خیلی بیشتر حفظ شد. حتی می‌شه پا رو از این فراتر گذاشت و تعداد افرادی که توی تراکنش شرکت می‌کنن رو زیاد کنیم، مثلا اگه به جای دو نفر، تو هر مرحله چهار نفر داشتن اون وقت در انتها شما با احتمال ۱۲.۵ درصد می‌تونستید حدس بزنید که کدوم آدرس متعلق به داراست. همین روند رو با تعداد بیشتر تراکنش و یا آدم‌های بیشتر می‌شه تکرار کرد تا به درصدهای خیلی بهتر هم رسید.قبل از این که متن رو ادامه بدیم، یک نکته مهم رو باید همینجا بگنجونم:شاید براتون سوال پیش اومده باشه که چرا همه دقیقا یک بیت کوین دارن توی این مثال؟ آیا فقط برای سادگی بوده یا هدف دیگه‌ای هم داشته؟ بیاید جوابش رو با یک مثال ساده بررسی کنیم: تصور کنید که دارا ۱.۶۷ بیت کوین و سارا ۱ بیت کوین داشته باشه. بعد از پایان تراکنش، جعبهٔ ما به صورت کاملا تابلویی(!) ۱.۶۷ بیت کوین به CCC بفرسته :) خب مشخصه که توی این سناریو لو می‌ره این آدرس متعلق به داراست. پس برای این که مخلوط کن بتونه واقعا به صورت ناشناس کارش رو انجام بده، همه باید به میزان مساوی‌ای پول وارد جعبه کنن.حالا که می‌دونیم میکسر چیه و به چه دردی می‌خوره، بریم سراغ اینکه خود میکسر (که تا حالا به عنوان جعبه هوشمند بهش نگاه کردیم) واقعا چیه و چه‌طوری کار می‌کنه.به صورت کلی دو مدل میکسر می‌تونیم تعریف کنیم:سرویس مرکزی ارائه دهنده میکسر: یعنی یک وب‌سایت یا سرویس بیاد این میکسر رو به مردم ارائه بده. مثلا اکبر برادر بزرگ اصغر، بعد از این که با مفهوم میکسر آشنا شده تصمیم می‌گیره اون جعبه هوشمند رو طراحی کنه و در اختیار کاربران قرار بده. دارا میاد و به اکبر می‌گه من می‌خوام ۱ بیت کوین به صورت ناشناس به آدرس CCC بره. ولی صبر کنید... اگه دارا به اکبر این رو بگه،  یه جورایی دوباره داره هویتش رو لو میده! این دفعه نه به وب‌سایت صرافی، بلکه به وب‌سایت میکسر! پس همینجا می‌فهمیم که شاید میکسر مرکزی که توسط یک شخص یا نهاد ارائه و مدیریت می‌شه گزینه مناسبی نباشه.میکسری از جنس غیر متمرکز: چی می‌شه اگر یک راهی وجود داشت که همه بدون نیاز به اکبر و فقط با توافق دسته جمعی (Consensus) بتونن عملکرد میکسر رو پیاده سازی کنن؟ خبر خوب اینه که وجود داره.بذارید راهش رو با یک مثال بررسی کنیم. تصور کنید دارا به همراه ۹ نفر از دوست‌هاش تو یک جلسه خیلی مهم برای مخلوط کردن بیت کوین‌هاشون شرکت می‌کنن. این جلسه هیچ رئیسی نداره و هیچ کسی از آدرس مخفی شخص دیگه خبر نداره. توی این جلسه یک کیسه وجود داره که دور میز گردونده می‌شه و هرکسی آدرس مخفی‌ خودش رو داخل کیسه قرار می‌ده. بعد از اینکه هر ۱۰ نفر آدرس‌هاشون رو توی کیسه انداختن، یک داوطلب، قراردادی رو تنظیم می‌کنه که ما همگی قراره نفری ۱ بیت کوین (و مجموعا ۱۰ بیت کوین) بذاریم وسط و بعدش در خروجی جعبه، ۱ بیت کوین بره به آدرس اول، ۱ بیت کوین به آدرس دوم و به همین ترتیب. این قرارداد تنظیم می‌شه بدون اینکه کسی بدونه آدرس‌های خروجی متعلق به کیه. حالا وقتی این قرارداد رو بخوان ببرن بانکِ بیت‌کوین (به صورت فنی، بخوان یک تراکنش رو تو شبکه بیت‌کوین ارسال کنن) اون تراکنش نیازمند ۱۰ تا امضا هست. هر شخص با یک نگاه زیر چشمی به قرارداد، چک می‌کنه اون آدرسی که روی کاغذ نوشته بود (که همون آدرس ناشناسشه) تو قرارداد ذکر شده یا نه؟ اگه ذکر شده بود پای قرارداد رو امضا می‌کنه. بعد از این که هر ۱۰ نفر قرارداد رو امضا کردن تراکنش انجام می‌شه.حالا چرا پروتکل غیر متمرکز این‌طوری تنظیم شده و کار می‌کنه؟کیسه مخفی: این کیسه برای ناشناس موندن آدرس‌ها طراحی شده. درسته که اون ۹ نفر دوست‌های دارا هستن اما تو این دوره زمونه آدم به دوستش هم نمی‌تونه اعتماد کنه. این کیسه کاری می‌کنه که هیچکس خبر نداشته باشه آدرس مخفی شخص دیگه توی این جلسه چیه.نگاه زیر چشمی و بعد امضا: این مکانیزم برای این طراحی شده که اگر اون شخص داوطلب تنظیم کننده قرارداد بخواد یواشکی آدرس دارا رو حذف کنه و یه آدرس از خودش بذاره، نتونه! چون دارا موقع امضا آدرس مخفی خودش رو می‌دونه و اگه توی قرارداد نبینه از امضا کردن خودداری می‌کنه. تصویر زیر مثال قراردادیه که گفتیم. برای سادگی، قرارداد بین دو نفر تنظیم شده:پس دیدیم که چطوری می‌شه یک سیستم غیر متمرکز برای میکسر طراحی کرد و با مشارکت افراد زیادتر و همچنین مراحل زیادتر، به خروجی‌ای رسید که تو اون کسی نمی‌دونه این پول مال ماست. استفاده از ابزارهایی مثل میکسر می‌تونه برای حفظ حریم خصوصی مفید باشه، اما سوءاستفاده از اون در زمینه‌هایی مثل پول‌شویی یا فعالیت‌های مجرمانه، هم از نظر اخلاقی مردوده و هم ممکنه عواقب قانونی جدی داشته باشه.امیدوارم این مطلب کمکی به درک بهتر این فناوری کرده باشه. خوشحال می‌شم نظرات، سوالات یا تجربیاتتون رو هم بشنوم.راستی!نشریه فرامتن رو در پلت‌فرم‌های مختلف دنبال کنید :)https://zil.ink/faramatn</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Mon, 22 Sep 2025 20:10:40 +0330</pubDate>
            </item>
                    <item>
                <title>مجرم‌زاده</title>
                <link>https://virgool.io/@faramatn/%D9%85%D8%AC%D8%B1%D9%85-%D8%B2%D8%A7%D8%AF%D9%87-dq9woirtwpgb</link>
                <description> به قلم محمد متین حیدرنژاد، ورودی ۴۰۲ کارشناسی مهندسی کامپیوتر صنعتی اصفهانبازنگری‌شده توسط پارسا شیرکوند، ورودی ۴۰۲ کارشناسی مهندسی کامپیوتر صنعتی اصفهانبا پیشرفت روزافزون تکنولوژی و به ویژه هوش مصنوعی، انتظار می‌رود روند پیشرفت پرونده‌های جنایی، سریع‌تر از هروقت دیگری در تاریخ پیش برود.اما نکته قابل توجه این است که نرخ جرم و جنایت روزبه روز در حال افزایش است و تکنولوژی کمتر کمکی به ریشه‌کن کردن وقایع ناگوار جنایی می‌کند. چون طبق رابطه علت و معلول، باید جرمی رخ بدهد تا بتوان مجرمی را دستگیر و پرونده را حل کرد.پس باید روشی برای کارآمدتر کردن تکنولوژی در راستای پیشگیری پیدا کرد.در اینجا یک سوال پیش می‌آید؛ چه می‌شد اگر از روز اول تولد یک نفر بفهمیم که این شخص مجرم است یا نه؟احتمالا فکر می‌کنید دیگر دوران فال‌گیری و طالع‌بینی تمام شده و این حرف‌ها مزخرفاتی بیش نیستند.اما باید این نکته‌ را ذکر کنم؛ اگر به این موضوع واقف باشیم که علم همیشه انسان‌ها را غافل‌گیر و هرگونه غیرممکنی را ممکن کرده است، به نتایج خیلی جالبی خواهیم رسید :)نخستین ردپا:چزاره لومبروزو (به ایتالیایی: Cesare Lombroso) زادهٔ ۶ نوامبر ۱۸۳۶ پزشک و جرم‌شناس ایتالیایی بود. لومبروزو مکتب کلاسیک را -که معتقد بود جنایت یکی از ویژگی‌های طبیعت انسان است- رد کرد.در عوض، از مفاهیمی مثل قیافه‌شناسی (یعنی بررسی چهره برای شناخت ویژگی‌های درونی)، نظریه‌ی انحطاط (باوری که می‌گوید برخی جوامع یا افراد به سمت ضعف و زوال می‌روند)، روان‌پزشکی و داروینیسم اجتماعی استفاده کرد.داروینیسم اجتماعی به این معناست که فقط افراد قوی‌تر و توانمندتر باید در جامعه باقی بمانند و رشد کنند و افراد ضعیف یا بی‌فایده حذف شوند.بر اساس این دیدگاه‌ها، لومبروزو تلاش کرد ثابت کند جرم می‌تواند ارثی باشد.او معتقد بود که بعضی انسان‌ها به شکل مادرزادی مجرم به دنیا می‌آیند و می‌توان آن‌ها را از طریق برخی نقص‌های جسمی و ویژگی‌های ظاهری خاص شناسایی کرد.به دلیل همین دیدگاه، او مطالعات خود را در راستای شناسایی علل وقوع جرم از منظر زیستی و فیزیولوژیکی آغاز کرد و در جستجوی کشف راز جرم، عامل محیطی و اجتماعی را کنار گذاشت و تمرکز خود را صرفاً بر ویژگی‌های بدنی، ساختار اندام‌ها و هیبت ظاهری مجرمان قرار داد.او ابتدا به بررسی جمجمه‌ ۳۸۳ فرد مجرم فوت‌شده پرداخت و سپس مطالعاتی بر روی ۵۹۰۷ مجرم زنده انجام داد تا ویژگی‌های فیزیولوژیکی و آناتومیکی آن‌ها را تحلیل کند.در آخر برخی از ویژگی‌های روانی مجرمان را چنین برشمرد:حرکات غیرعادی و ناگهانیخشونت‌طلبی و بی‌رحمیفقدان عواطف لطیف و همدلیهمچنین ویژگی‌ ظاهری افراد مجرم می‌تواند شامل موارد زیر باشد:پیشانی کوتاهضخامت بیش‌ازحد استخوان جمجمهموهای ضخیم و زبربی‌مویی صورت در مردانچپ‌دستیاستفاده از زبان اوباش و کوچه‌بازاریتمایل به خون‌ریزیغرور مفرطرشد نامتناسب آرواره‌هادر مجموع بیش از ۷۲ نشانه ظاهری و رفتاری که به اعتقاد او، وجود تعدادی از آن‌ها می‌تواند نشانه‌ی تیپ مجرمانه باشد.(لزومی به وجود هم‌زمان همه‌ی آن‌ها نبود).لومبروزو حتی از این آزمایشات هم فراتر رفت و باور پیدا کرد ظاهر مجرمانه فقط بر اساس چهره ارثی مانند بینی یا شکل جمجمه نیست، بلکه می‌توان آن را از طریق ویژگی‌های سطحی مانند خالکوبی روی بدن قضاوت کرد. چون این افراد حساسیت کمی دارند و کمتر احساس درد می‌کنند، به همین دلیل بدنشان خال‌کوبی شده است...البته زمان زیادی نگذشت که نظریه او در طول قرن بیستم به‌طور جدی از سوی جامعه علمی رد شد (ولی هنوز اول راهیم:) حالا با چه استدلالاتی؟مطالعات جدید نشان دادند که هیچ رابطه‌ معنادار و قابل اعتمادی میان ظاهر فیزیکی و رفتار مجرمانه وجود ندارد و عوامل مهم‌تری مانند محیط اجتماعی، فقر، تربیت و آموزش نقش تعیین‌کننده‌تری در گرایش به جرم دارند. همچنین، بسیاری از ویژگی‌های معرفی‌شده توسط لومبروزو در افراد عادی هم دیده می‌شود و در بسیاری از مجرمان اصلاً وجود ندارد، بنابراین نمی‌توان آن‌ها را معیار تشخیص جرم دانست. از سوی دیگر، نظریه‌ او به دلیل تقویت کلیشه‌های تبعیض‌آمیز، برچسب‌زنی افراد و سوءاستفاده در نظام‌های سرکوبگر مانند نازیسم، از منظر اخلاقی و حقوق بشری نیز به‌شدت مورد انتقاد قرار گرفت. خب فکر می‌کنم تا همین‌جا برای آشنایی ابتدایی با خاستگاه چنین نظریه‌هایی کافی باشد. البته روشن است که این دیدگاه‌‌ بسیار گسترده‌تر از آن چیزی‌ است که در این چند خط گنجانده شود، اما اکنون زمان آن رسیده که نگاهی به زمان حال بیندازیم.بازآفرینی در عصر جدید:با توجه به جمله «یک انسان می‌میرد اما ایده‌هایش نه» خیلی سریع به بررسی نظریه لومبروزو در زمان حال می‌پردازیم.در سال 2016، دو محقق چینی به نام‌های Xiaolin Wu و Xi Zhang تحقیقی با عنوان “Automated Inference on Criminality Using Face Images” منتشر کردند.این مقاله ادعا می‌کرد می‌توان از طریق هوش مصنوعی، صرفاً با بررسی عکس چهره‌ی افراد، احتمال مجرم بودن آن‌ها را تشخیص داد.هدف اصلی این تحقیق بررسی این سؤال بود که آیا می‌توان با استفاده از الگوریتم‌های یادگیری ماشین، فقط بر اساس عکس چهره‌ی یک فرد، احتمال مجرم بودن او را بررسی کرد یا خیر. محققان بر این باور بودند که الگوهای خاصی در چهره افراد وجود دارد که ممکن است با رفتار مجرمانه همبستگی آماری داشته باشد.روش تحقیق هم به این صورت بود که حدود 1856 تصویر چهره مربوط به مردان چینی که 730 تصویر متعلق به مجرمان واقعی و مابقی برای افراد غیرمجرم بود را بدون رنگ، پس زمینه، نورپردازی خاص و با حالات خنثی، برای تحلیل داده به چند مدل الگوریتم یادگیری ماشین (logistic regression, KNN, SVM, CNN) دادند. همچنین از الگوریتم‌هایی برای استخراج ویژگی‌های هندسی صورت از جمله زاویه بینی، فاصله بین چشم‌ها، فرم لب بالا و نسبت فک به صورت استفاده کردند.نتیجه‌ی آزمایشات برای آن زمان به شدت متحیر کننده بود. الگوریتم‌ها توانستند چهره‌ مجرمان و غیرمجرمان را با دقت ۸۹ درصد از یکدیگرتشخیص دهند!در نمونه‌های مورد آزمایش، مشخص شد برخی ویژگی‌ها بین دو گروه تفاوت آماری معناداری دارند:لب بالای خمیده‌تر در غیرمجرمانزاویه بینی خاص و فاصله بیشتر یا کمتر بین چشم‌ها در برخی از مجرمانکاهش &quot;احساسات مثبت&quot; (مانند لبخند ملایم) در چهره‌ مجرمانخب باید مژده بدهم تا این لحظه، تحقیقات و آزمایش‌ها با موفقیت پیش رفته‌اند و توانسته‌ایم تمایز مشخصی را شناسایی کنیم. این بدان معناست که قادر خواهیم بود مجرم را پیش از ارتکاب جرم شناسایی و بازداشت کنیم. می‌توان با قطعیت گفت که روح لومبروزو را در آرامگاهش شاد کرده‌ایم.از این پس نه تنها دیگر شاهد جنایتی نخواهیم بود، بلکه حتی فکرش هم به دهن کسی خطور نخواهد کرد و بدین ترتیب، یک گام دیگر به سوی دنیای آرمانیِ بشریت نزدیک می‌شویم.اما به‌ همان اندازه که علم توانایی اثبات یک چیز را دارد، توانایی رد آن را هم دارد. کم کم نواقص و مشکلات این تحقیق یکی پس از دیگری برملا شدند. بیایید اول به رد نتایج به دست آمده از این تحقیق بپردازیم و سپس درباره ناتوانی هوش مصنوعی در اثبات این موضوعات حرف بزنیم.یکی از اولین و ساده ترین پارامتری که می‌توان برای رد این آزمایش به کار برد، عدم کنترل کامل متغیرهاست.برای مثال عکس‌ افراد مجرم احتمالاً در شرایط رسمی، پلیسی، با نور بد و بدون لبخند گرفته شده‌اند. در مقابل، عکس غیر مجرمان ممکن است پرسنلی‌ای باشد که برای رزومه استخدام آن‌هاست. بدیهی‌ست در این شرایط فرد سعی میکند با لبخندی، حس بهتری به کارفرمایان خود القا کند و به همین دلیل محیط‌های عادی‌تر و دوستانه‌تری برای شرایط محیطی عکس انتخاب شده‌اند.در نتیجه این احتمال وجود دارد که مدل به‌جای یادگیری ویژگی‌های زیستی چهره، صرفاً تفاوت در کیفیت عکس‌ها، حالات چهره یا نورپردازی را یاد گرفته باشد (حال‌ هر چقدر هم محقق‌ها سعی کردند شرایط را تا حد ممکن یکسان نگه دارند).دلیل بعدی هم فقدان تنوع جمعیت‌شناختی (Demographic Bias) است که در اینجا یعنی فقط مردان چینی در مطالعه بودند و به همین دلیل نتایج را نمی‌توان به بقیه‌ی جمعیت‌ها تعمیم داد.تحقیق Wu &amp; Zhang، اگرچه از نظر تکنیکی یک مدل یادگیری ماشین اجرا کرده، اما با بی‌توجهی به سوگیری داده، مفروضات نادرست درباره چهره و جرم و بدون در نظر گرفتن پیامدهای اجتماعی خطرناک، راه را برای سوءاستفاده از فناوری هوش مصنوعی در راستای تبعیض و بی‌عدالتی که در حال حاضر هم به کرات شاهدش هستیم، هموارتر می‌کند. به همین دلیل، این نظریه در جامعه‌ی علمی رد شده و اعتبار ندارد.پرده برداری از ضعف‌ها:در حال حاضر تبعیض جنسیتی، نژادی و اشکال دیگر تبعیض، در الگوریتم‌های یادگیری ماشین که زیرساخت بسیاری از سیستم‌های هوشمند را تشکیل می‌دهند، گنجانده شده‌اند؛ سیستم‌هایی که در نحوه‌ی دسته‌بندی شدن ما و نوع برخورد هوش مصنوعی با ما نقش دارند.با یک مثال کوچک شروع می‌کنم: کاربران متوجه شدند که اپلیکیشن عکس گوگل، که به‌ طور خودکارعکس‌ها را در آلبوم دیجیتال برچسب می‌زند، تصاویر افراد سیاه‌پوست را به عنوان گوریل شناسایی کرده است.(به معنای واقعی کلمه) البته گوگل عذرخواهی کرد و گفت که این اتفاق، عمدی نبوده است.هدف از بیان این مثال‌، وارد شدن به داستان ناتمام رنگ پوست بود؛ مقاله &quot;Gender Shades&quot; نوشته‌ جوی بوالاموینی و تیم‌نیت گبرو یکی از تحقیقات پیشگامان در زمینه‌ی تبعیض الگوریتمی در سیستم‌های تشخیص چهره، به بررسی نابرابری در دقت سیستم‌های تجاری تشخیص جنسیت از چهره (مانند مایکروسافت، IBM، و ++Face) بر اساس رنگ پوست و جنسیت می‌پردازد.برای سنجش این مسئله، نویسندگان دیتاستی تازه با نام PPB (Pilot Parliaments Benchmark) ساختند. این مجموعه شامل ۱۲۷۰ تصویر از نمایندگان زن و مرد پارلمان در شش کشور (سه کشور آفریقایی و سه کشور اروپایی) بود. چهره‌ها بر اساس سیستم Fitzpatrick – که پوست انسان را بر پایه‌ی واکنش آن به نور خورشید طبقه‌بندی می‌کند – در دو گروه پوست روشن و پوست تیره دسته‌بندی شدند.همونطور که داخل جدول قابل‌ مشاهده است، بالاترین نرخ خطا برای زنان با پوست تیره بین ۲۰.۸ درصد تا ۳۴.۷ درصد بود، در حالی که برای مردان پوست روشن نزدیک به ۰٪ نشان می‌داد. اختلاف نرخ خطا بین زن و مرد در همه سیستم‌ها ۸.۱٪ تا ۲۰.۶٪ بود و در نهایت تفاوت دقت بین افراد با پوست روشن و تیره بین ۱۱.۸٪ تا ۱۹.۲٪ بود.در‌اینجا ما مجدد به همان نکته عدم کنترل کامل متغیرها میرسیم چون بیشتر دیتاست‌های مرجع (مثل IJB-A و Adience) شامل افراد با پوست روشن هستند. به‌طور مثال، ۸۶٪ تصاویر دیتاست Adience مربوط به افراد با پوست روشن است.اما اشتباهاتی مشابه در نرم‌افزار دوربین شرکت نیکون نیز ظاهر شد. این دوربین تصاویر افراد آسیایی را به اشتباه، پلک زده (چون چشم مردان آسیایی کوچک‌تر و نازک‌تر از مردان اروپا و آمریکاست) تشخیص می‌داد و در نرم‌افزار دوربین شرکت HP هم اختلالاتی در تشخیص چهره‌ی افراد با پوست تیره دیده شد.در آخر به این می‌رسیم که مشکلات، در اصل یک مسئله‌ی داده‌ای است. الگوریتم‌ها با دریافت مجموعه‌ای از تصاویر که اغلب توسط مهندسان انتخاب شده‌اند آموزش می‌بینند و بر پایه‌ی آن‌ها، مدلی از جهان می‌سازند. اگر یک سیستم تنها با عکس‌هایی از افراد عمدتاً سفیدپوست آموزش ببیند، در تشخیص چهره‌های غیرسفید مشکل خواهد داشت.جرقه‌ی نابرابری:درباره رنگ پوست مفصل صحبت کردیم اما هنوز نمی‌دانیم چه‌طور این مسئله ممکن است باعث تبعیض شود، به همین علت  توجه‌تان رو  جلب می‌کنم به اتفاقی که توسط رسانه تحقیقاتی افشا شد. آن‌ها گزارش دادند نرم‌افزاری که برای سنجش خطر بازگشت به جرم در متهمان استفاده می‌شود، دو برابر بیشتر احتمال دارد متهمان سیاه‌پوست را به‌اشتباه در معرض خطر بالا تشخیص دهد. همچنین، دو برابر بیشتر احتمال دارد که متهمان سفیدپوست را به‌اشتباه کم‌خطر نشان دهد.در کم‌ترین و بی‌خطرترین حالت، این نرم‌افزارها خطر تداوم یک چرخه‌ی معیوب را ایجاد می‌کنند: حضور پلیس در همان مناطقی که پیش‌تر در آن‌ها حضور داشته‌اند افزایش می‌یابد و در نتیجه، بازداشت‌های بیشتری از آن مناطق گزارش می‌شود. در ایالات متحده، این امر می‌تواند به افزایش نظارت بر محله‌های فقیرتر و عمدتاً غیر سفیدپوست منجر شود، در حالی که محله‌های ثروتمندتر و سفیدپوست‌تر کمتر مورد توجه قرار می‌گیرند.به آخرین موضوع در این متن رسیدیم؛ تبعیض جنسیتی!دانشمندان کامپیوتر در دانشگاه کارنگی ملون دریافتند که احتمال نمایش آگهی‌های شغلی با دستمزد بالا به مردان، بیشتر از زنان است. پیچیدگی نحوه‌ی نمایش تبلیغات توسط موتورهای جست‌وجو باعث می‌شود نتوان به‌راحتی علت این موضوع را تعیین کرد، اینکه آیا خودِ تبلیغ‌دهندگان ترجیح داده‌اند آگهی‌ها را به مردان نشان دهند یا اینکه این نتیجه‌ ناخواسته عملکرد الگوریتم بوده است.در هر صورت، نقص‌های الگوریتمی به‌سادگی قابل کشف نیستند: یک زن چگونه می‌تواند برای شغلی اقدام کند که هرگز آگهی‌اش را ندیده است؟ یا یک جامعه‌ی سیاه‌پوست چگونه می‌تواند بفهمد که توسط یک نرم‌افزار بیش‌ازحد زیر نظر گرفته شده است؟الگوریتم‌های پیش‌بینی‌گر، تنها به اندازه‌ی داده‌هایی که با آن آموزش دیده‌اند، مفید هستند و آن داده‌ها، پیچیدگی‌های نهفته‌ای دارند.آنچه می‌ماند:در مقاله‌های جدیدتری که خوانده‌ام، درصد خطای این مدل‌ها داشت کم و کمتر می‌شد، دور از انتظار نیست که سیستم‌های تشخیص چهره بی‌نقص شوند اما باز یک سوال بی‌جواب خواهد ماند؛ اگر یک روزی بتوان از همان روز تولد فهمید این کودک مجرم خواهد شد یا نه، چه اقدامی صورت خواهد گرفت؟ شاید فکر کنید احتمالا آموزش درست‌تری به او داده می‌شود تا از جرم و جنایت به دور شود ولی باید اشاره کنم این حرف‌ها زیادی آرمانی‌ هستند.طبق آنچه که از تاریخ می‌دانیم، در فرض احتمالی دو چیز ممکن است، فرض اول زندانی کردن‌ نوزاد یا نگهداری‌اش در یک محیط ایزوله تا آخر عمرش و فرض دوم که به ظاهر بهتر است، وجود شناسنامه‌ای با مهر مجرم‌زاده بودن که مانند داغی در پیشانی‌اش تا آخر عمر با او همراهی خواهد کرد، این شروع نوع جدیدی از تبعیض است، برای مثال نه کاری به او می‌دهند و نه رفتار درستی خواهند داشت تا موقعی که ناچار شود برای گذراندن روزگارش واقعا دست به جنایت بزند!حالا از شما می‌پرسم، به نظرتان این تکنولوژی باید وجود داشته باشد یا خیر؟منابع:زندگی‌نامه چزاره لومبروزو:https://www.simplypsychology.org/lombroso-theory-of-crime-criminal-man-and-atavism.htmlAutomated Inference on Criminality using Face Images:https://arxiv.org/abs/1611.04135Artificial Intelligence’s White Guy Problem:https://www.nytimes.com/2016/06/26/opinion/sunday/artificial-intelligences-white-guy-problem.htmlGender Shades:‌‌‌‌‌‌‌ Intersectional‌ Accuracy Disparities in Commercial Gender Classificationhttp://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdfراستی!نشریه فرامتن رو در پلت‌فرم‌های مختلف دنبال کنید :)https://zil.ink/faramatn</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Mon, 01 Sep 2025 08:44:08 +0330</pubDate>
            </item>
                    <item>
                <title>یه سورپرایز ویژه از نشریه علمی فرهنگی فرامتن!</title>
                <link>https://virgool.io/@faramatn/%DB%8C%D9%87-%D8%B3%D9%88%D8%B1%D9%BE%D8%B1%D8%A7%DB%8C%D8%B2-%D9%88%DB%8C%DA%98%D9%87-%D8%A7%D8%B2-%D9%86%D8%B4%D8%B1%DB%8C%D9%87-%D8%B9%D9%84%D9%85%DB%8C-%D9%81%D8%B1%D9%87%D9%86%DA%AF%DB%8C-%D9%81%D8%B1%D8%A7%D9%85%D8%AA%D9%86-br6bauol0gam</link>
                <description>سلام!ویژه‌نامه‌ای که قراره براتون معرفی کنیم، با زحمت کلی نویسنده و گرافیست خفن و یه کادر اجرایی تلاش‌گر تولید شده؛ ازتون می‌خوایم اگه از مباحث داخلش خوشتون اومد، به‌ کانال تلگرام فرامتن سر بزنین و نسخه کاملش رو مطالعه کنید و ما رو از فیدبک‌هاتون بهره‌مند کنین :)حتما شما هم تا الان براتون سوال شده که چه‌طور دوست‌تون می‌تونه داخل چندتا کار، قوی عمل کنه؛ مثلا همزمان با این که یه پیانیست قویه، داخل ریاضی هم مهارت داره و در کنار همه این‌ها یه بسکتبالیست محشره!اگه دوست دارین درباره این نقطه‌ قوت بیشتر بدونین، این بخش از ویژه‌نامه رو از دست ندین!دوست دارین درباره فعالیت‌های داوطلبانه و تاثیرشون داخل زندگی و روحیه‌مون و نحوه نگرش‌ عمومی‌مون نسبت بهش، چیزی بخونین؟پس با ما داخل این قسمت همراه باشین :)خب خب خب!وقتشه یه کم تخصصی‌ترش کنیم!رسیدیم به &quot;Birthday Paradox&quot; !اگه علاقه به مطالعه درباره یه تئوری ریاضیاتی جالب دارید، این بخش از ویژه‌نامه رو از دست ندید!راستی؛ کد پایتون هم داریم داخل توضیحاتش :)دِوآپس!داخل این بخش به این رویکرد محبوب پرداختیم!اگه دوست دارید مسیری که دِوآپس پیش روی ما قرار داده رو مطالعه کنید، توصیه می‌کنیم این بخش رو از دست ندید :)مدل‌های زبانی بزرگ یا همون LLMها!یه توضیح جامع دادیم از نحوه عملکردشون!روزبه‌روز در حال فراگیرتر شدنن. اگه می‌خواین از بقیه جا نمونین، با ما بیاین و در خوانش این بخش همراهمون باشین ؛)دنیا دنیای سرعته!کامپیوترها هم طبیعتا دوست دارن از این قائله عقب نمونن و خیلی فرز و چابک کارهایی که بهشون سپرده می‌شه رو انجام بدن؛ برای همین روی میارن به یه روش سریع‌تر برای پردازش دستورات!پردازش‌های موازی چیزیه که در مقاله دنیای موازی بهش پرداختیم!بریم سراغ یه تئوری علمی دیگه؛نظریه ازدواج پایدار و کاربردهاش داخل زندگی فعلی از اون مباحثیه که می‌تونه براتون جالب باشه!اگه دوست دارید بدونین چه‌طوری این نظریه داخل مقوله‌هایی مثل اهدای کلیه‌ها، پذیرش دانشگاهی یا مباحث زیست‌شناسی کار می‌کنه، این بخش رو بخونین!خب! این‌ها موضوعاتی بودن که داخل این ویژه‌نامه فرامتن بهشون پرداختیم! امیدواریم خوشتون بیاد!یادآوری می‌کنیم. اگه از این ویژه‌نامه خوشتون اومد، می‌تونین به کانال تلگرام فرامتن مراجعه کنین!یادتون نره!فرامتن همیشه پذیرای ایده‌های شماست!فرامتن رو در پلت‌فرم‌های مختلف دنبال کنین!</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Mon, 11 Aug 2025 09:13:21 +0330</pubDate>
            </item>
                    <item>
                <title>بازی‌های ویدئویی: هنر هشتم</title>
                <link>https://virgool.io/@faramatn/%D8%A8%D8%A7%D8%B2%DB%8C-%D9%87%D8%A7%DB%8C-%D9%88%DB%8C%D8%AF%D8%A6%D9%88%DB%8C%DB%8C-%D9%87%D9%86%D8%B1-%D9%87%D8%B4%D8%AA%D9%85-vrvlnbqdsjcf</link>
                <description> به قلم پویا ملت، ورودی ۴۰۱ مهندسی کامپیوتر دانشگاه صنعتی جندی شاپور دزفولبازنگری‌شده توسط ملیکا ملکی، ورودی ۴۰۰ کارشناسی مهندسی کامپیوتر صنعتی اصفهاناز سال ۱۹۵۸، با خلق اولین بازی ویدئویی به نام «Tennis for Two» افراد زیادی بر این باور بودند که پس از سینما، هنر جدیدی به جمع هفت هنر اضافه شد و با گذر زمان و پیشرفت تکنولوژی و در نتیجه‌ی خود بازی‌ها، آدم‌های زیادی به این باور روی آوردند. از همان زمان تعدادی مخالف سرسخت هم بر این باور وجود داشتند که بازی‌های ویدئویی چیزی جز سرگرمی نیستند و برخی مانند رئیس شرکت‌ها و استودیوهای بازی‌سازی می‌گویند:«گیم ها فقط محصولاتی برای فروش و سودآوری اند.» حال پس از گذشت ۶۷ سال از آن روز، آیا هنوز هم همینطور است؟ آیا هنوز هم می‌توان بازی‌های ویدئویی را تنها نوعی از سرگرمی، بدون روح و هنر دانست؟ با من؛ پویا ملت، دانشجو و فعال حوزه‌ی گیمینگ و بازی سازی، همراه باشید تا پاسخ این سوالات را بیابیم. اما پیش از آن بیایید از ماهیت خود هنر شروع کنیم…تصویری از عنوان Tennis for Two درحال اجرا روی یک کامپیوتر قدیمیعنوان: ترجمه‌ی واژه‌ی Title است که به هر بازی کامل و مستقل گفته‌ می‌شود.هنر چیست؟   هنر از آن دسته کلماتی است که یک تعریف واحد و جهانی را به چالش می‌کشد. زیرا بسیار شخصی و درعین‌حال در جهان، تاثیرگذار است. شما ممکن است از ۵۰ نفر این سوال را بپرسید و ۵۰ تعریف مختلف بشنوید. از دیدگاه من هنر همانند یک زبان برای بازگویی رویا، تخیل، احساسات و دنیای درونی یک انسان به انسان‌های دیگر است. یک پل میان دنیای خیال و جهان واقعی. برخلاف زبان گفتاری یا نوشتاری که به کلمات محدود می‌شود، هنر راه‌های بی‌نهایتی برای بیان آنچه در ذهن است می‌سازد و کلید آن، خلاقیتِ درونِ فرد می‌باشد.   هنر، بسیار قدرتمند است و می‌تواند مردم را در لایه‌ای فراتر از منطق به یکدیگر متصل کند. یک نقاشی، یک قطعه‌ی موسیقی و حتی یک داستان زیبا، آنچه که در ذهن یک فرد و دنیای درونی اوست را به چیزی تبدیل می‌کند که دیگران می‌توانند ببینند، بشنوند و احساس کنند.  حال به من بگویید آیا می‌توان با این تعریف، هنر را تنها به هفت شکل شناخت و محدود کرد؟ آیا هنر نامحدود نیست؟ چه کسی و چه کسانی صلاحیت این را دارند که هنر را فقط به هفت شکل تعریف کنند؟ اگر هنر با گذر زمان پیشرفت می‌کند، پیشرفته ترین شکل هنر امروزی چیست؟بازی‌های ویدئویی دیگر فقط یک سرگرمی نیستند!   بازی های ویدئویی در گذر زمان و با پیشرفت تکنولوژی، نسبت به روزهای اولیه‌ی خود پیشرفت به شدت چشمگیری داشته‌اند. همانند سینما که از فیلم‌های کوتاه و صامت شروع شد و اکنون به فیلم‌های طولانی با بودجه‌های چند میلیون دلاری تبدیل شده؛ بازی‌ها هم از آرکِیْد (Arcade game) و پیکسل‌های بزرگ آغاز شدند و اکنون  به دنیایی گسترده همراه با فیلم‌نامه، بازیگری، احساسات، طراحی، مکانیک‌های پیچیده و مهندسی نرم‌افزار بدل گشته‌اند. به نوعی مکانی که تمامی هنر، درهم‌تنیده و زنده می‌شود. گیم‌های مدرنِ امروزی، ماشین‌هایی برای بیان داستان‌های بسیار عمیق و احساسی اند که پشت هر کدام فلسفه‌ای پیچیده و زیبا نهفته. عناوین ویچر (The Witcher)، سایبرپانک ۲۰۷۷ (Cyberpunk 2077)، مَس افکت (Mass Effect) و بالدارز گیت 3 (Baldur&#039;s Gate 3) تنها چند مثال کوچک از این مورد اند.خوب است نگاهی داشته باشیم به اینکه بازی‌های امروزی چگونه ساخته و از چه عناصر هنری بهره می‌برند؟تصاویری از 4 عنوان وارکرفت، مس افکت، ویچر و سایبرپانک 2077هنر‌های تجسمی و معماری   یکی از مهم‌ترین بخش‌های تشکیل‌دهنده‌ی یک ویدئو گیم استفاده از هنر‌های تجسمی است که شامل کانسپت آرت (هنر مفهومی)، ساخت مدل‌های سه بعدی و جهان‌‌سازی است که برای خلق آنها از نقاشی و معماری کمک گرفته می‌شود. یک بازی ویدئویی بدون استفاده از هنر‌های تجسمی مانند یک برنامه‌ی تلویزیونی یا یک فیلم سینمایی بدون تصویر است. «Gris» از عنوان‌هایی است که ماهرانه از هنرهای تجسمی، برای بیان یک داستان بدون گفتن حتی یک دیالوگ استفاده کرده‌ است. این عنوان همانند یک نقاشی زنده‌ی سورئال است که با حرکت شما تغییر می‌کند و با کمک رنگ‌هایش، ۵ مرحله‌ی سوگواری را به تصویر می‌کشد و احساسات مخاطب را درگیر خود می‌کند.تصویری از طراحی کانسپت یک شخصیت در استودیو بازی سازیسینماشاید باورش سخت باشد اما بخش بزرگی از ساخت بازی‌های امروزی مربوط به سینما است. از زاویه‌ی دوربین گرفته تا کات‌سینها (Cutscene)، اتمسفر، داستان سرایی از طریق حرکت و سینماتیک‌ها که با گذشت زمان و تکنولوژی کیفیت آنها روز به روز بیشتر شده و مرز تفاوت بین یک سینماتیک در بازی‌های ویدئویی و فیلم‌های سینمایی باریک و باریک‌تر می‌شود. برای مثال می‌توان به عنوان‌های «Red Dead Redemption 2» یا «Detroit: Become Human» اشاره کرد که از هنر و زبان سینما برای گفتن یک داستان جذاب استفاده می‌کنند و حتی ما را یاد آثار کارگردانان بزرگی همانند فینچر و اسپیلبرگ می‌اندازند.تصویری از پشت صحنه ساخت و فیلمبرداری بازی The Last of Us 2 و نتیجه ی نهایی در بازیموسیقی و طراحی صدا  استفاده از موسیقی و صداها در بازی‌های رایانه‌ای به حدی پیشرفت کرده که در برخی جاها از موسیقی متن فیلم‌ها و سریال‌ها نیز فراتر رفته است. موسیقی‌متن‌های پویا، ارکسترا، طراحی صدای محیط، موسیقی سه بعدی همگی نمونه‌هایی از استفاده از موسیقی در بازی‌های ویدئویی اند. نمونه‌ی آن در «Hellblade» قابل توجه است که با کمک صداهای سه بعدی توانسته تجربه‌ی زندگی یک فرد با بیماری اسکیزوفرنی و شنیدن صداهای مختلف درون سر را به زیبایی به تصویر بکشد. یا سری بازی‌های «Ori» که با موسیقی متن خود احساسات شما را دگرگون می‌سازد.تصویری از Russell Brower آهنگساز و تیم آهنگسازی او درحال ساخت موسیقی متن World of Warcraftادبیات   ادبیات تبدیل به یکی از مهم‌ترین بخش‌های ساخت ویدئو گیم‌ها، بخصوص با محوریت داستانی شده. برخی بازی‌ها دارای صدها و شاید هزاران صفحه افسانه‌ی عمیق، دیالوگ‌های شاخه‌ای، و فیلمنامه‌هایی احساسی اند که مخاطب را درون دنیا و داستان خود جوری غرق می‌کنند که شما می‌توانید ساعت‌ها صرف بازی کردن بکنید اما هیچگاه متوجه گذر زمان نشوید. از این نمونه می‌توان به «Cyberpunk 2077: Phantom Liberty» اشاره‌ کرد. چنان داستانی دارد که مخاطب را وارد یک ترن هوایی از احساسات و درگیر شخصیت‌های عمیق خود می‌کند و با دیالوگ‌هایی ماندگار شما را به فکر وا می‌دارد و حس نقش‌آفرینی کردن در یک فیلم جیمز باند و جاسوسی را منتقل می‌کند اما این‌بار شما فقط تماشاگر نیستید! بلکه سرنوشت خود و دیگر شخصیت‌ها را با انتخاب‌های مهم داستانی شکل می‌دهید. یا «Nier: Automata» بازی‌ای که با استفاده از تکنیک داستان‌گویی از دیدگاه‌های مختلف، یک تجربه‌ی داستانی عمیق را به مخاطب می‌دهد و ذهن او را درگیر فلسفه‌ی زندگی و آزادی می‌کند.انیمیشن و اجرا   به کمک تکنولوژی «Motion Capture» بازی‌ها می‌توانند حرکات و اجرا‌های بازیگران مختلف را ضبط کنند و در بازی و مدل‌های شخصیت‌ها پیاده‌سازی کنند. از حرکات ساده مانند دویدن و راه‌رفتن گرفته تا رقصیدن و مبارزه کردن. صداپیشگی امروزه بخش بزرگی از ساخت بسیاری از بازی هاست و صداپیشگان قدرتمند می‌توانند لایه‌ای جدید به شخصیت‌ها بدهند و آنها را در ذهن ماندگار کنند. برای مثال هیدئو کوجیما یکی از معروف‌ترین طراحان و بازی‌سازان در دنیای بازی‌سازی،  درون عنوان‌هایش از اسکن و موشن کپچر تمام بدن و حتی کف پا استفاده می‌کند تا انیمیشن‌ها و شخصیت‌ها به واقعی‌ترین شکل ممکن به تصویر کشیده شوند.تصویری از هیدئوکوجیما (بازی ساز) و نورمن ریداس (بازیگر معروف) در پشت صحنه ی ساخت و فیلمبرداری بازی Death Stranding 2   پس بازی‌های ویدئویی دیگر پیکسل‌های آتاری نیستند و عناوین امروزه سعی می‌کنند از محدودیت فراتر روند و با استفاده از هنرهای مختلف، بهترین تجربه‌ی ممکن را به مخاطب هدیه دهند. حال چه اتفاقی می‌افتد وقتی همه‌ی این هنر‌ها و تکنیک‌ها نه تنها وجود داشته باشند، بلکه یک تجربه‌ی تعاملی باشند؟بازی‌های ویدئویی: پیشرفته‌ترین و خاص‌ترین نوع هنر تا به امروز  اکنون با خود می‌گویید:«چگونه یک بازی می‌تواند فراتر از تمامی هنرهای مختلف باشد؟» جواب ساده است: تعاملی بودن. در یک فیلم، شما داستان یک قهرمان را تماشا می‌کنید. در یک بازی شما &quot;قهرمان&quot; داستان هستید. در یک نقاشی شما یک جهان را تحسین می‌کنید. در یک بازی شما آن جهان را &quot;کشف&quot; می‌کنید.   ویژگی تعاملی بودن، بازی‌ها را برای من تبدیل به خاص‌ترین نوع هنر در میان میلیارد‌ها آثار هنری دیگر کرده. ویدئو گیم‌ها به شما این امکان را می‌دهند که درون دنیایشان نه تنها حضور داشته‌ باشید بلکه با داشتن حق انتخاب آن را تغییر دهید و داستان خود را بسازید. تمامی انتخاب‌های شما دارای وزن احساسی هستند و می‌توانند عواقب مختلفی داشته باشند. بازی‌ها می‌توانند تجربه‌ی همدلی و همدردی را به شما منتقل کنند و مخاطب را، مستقیم درون کفش یک شخصیت دیگر قرار دهد. شما نقش مستقیمی در داستان و جهان بازی دارید و با قدم‌هایتان آن را تغییر می‌دهید.    برای مثال عنوان بسیار جذاب «Detroit: Become Human» شما را در جای سه شخصیت مهم قرار می‌دهد که تمامی تصمیمات شما نه تنها سرنوشت خودتان، بلکه عزیزان و تمامی همنوعانتان را تحت تاثیر قرار می‌دهد و باعث می‌شود مخاطب با آن شخصیت‌ها احساس همدلی کند و با عواقب تصمیم‌هایش روبه‌رو شود. تصمیم هر شخصیت اصلی بر روی داستان شخصیت اصلی دیگر اثر می‌گذارد، بصورتی که بازی بیش از ۱۰۰ پایان‌بندی مختلف دارد! یا همانطور که پیشتر گفته شد بازی «Hellblade» شما را جای یک شخصیتی قرار می‌دهد که به دنبال یافتن روح شوهر از دست رفته‌اش است، در حالی که از بیماری شدید اسکیزوفرنی رنج می‌برد. صداهای درون سر شما، هم می‌تواند منبعی برای حل پازل‌ها و مراحل بازی باشد یا شما را کامل گمراه کنند. بازیکن تا پایان بازی نمی‌داند که کدام بخش از داستان واقعیت و کدام بخش فقط توهم بوده.   بازی «World of Warcraft»، عنوان بسیار محبوب من که از ۲۰ سال پیش تاکنون توانسته نه تنها هزاران، بلکه میلیون‌ها بازیکن را درون یک جهان مشترک قرار دهد تا با یکدیگر ارتباط داشته باشند، گروه های خود را بسازند، تعامل کنند و نه تنها فقط داستان‌های شخصیت‌های خود بلکه داستان یک جامعه را بسازند. این بازی باعث شده حتی افرادی که به دلیل بیماری و ناتوانی امکان برقراری ارتباط در دنیای فیزیکی را به راحتی ندارند، به‌ این واسطه به دیگر افراد متصل شوند و دوستی های عمیقی را شکل دهند و حتی عشق را تجربه کنند. پیشنهاد می‌شود حتما مستند «زندگی فوق العاده‌ی Ibelin» را تماشا کنید. داستان یک پسربچه با بیماری خاص ماهیچه‌ای، که توانست از طریق «World of Warcraft» تا پیش از مرگ خود دوستان زیادی پیدا کند، تجربه‌ی زندگی در یک جامعه به عنوان یک قهرمان را به دست آورد و نامش را در میان جامعه‌ی «World of Warcraft» حک کند. کاری که در دنیای فیزیکی ممکن نبود.اسکرین شاتی از بازیکنان World of Warcraft در حال ادای احترام به Ibelin در مراسم یادبود او درون بازی   یا عنوان به شدت تاثیرگذار «Gris» که با کمک موسیقی متن بسیار زیبای خود و داستان‌گویی از طریق رنگ‌ها و نقاشی بدون گفتن حتی یک دیالوگ، مخاطب را درگیر تجربه‌ی ۵ مرحله ی سوگواری می‌کند و شما را به گریه می‌اندازد و درس زندگی می‌دهد. تصوایری از عنوان Gris بازی به شدت خاص و ساخته شده با آبرنگ و نقاشی و اما مورد دیگری که باعث خاص بودن بازی‌ها می‌شود ماهیت مشارکتی آن است. برخلاف دیگر هنر‌های کلاسیک که اصولا توسط یک یا نهایت چند نفر خلق می‌شوند، بازی‌های ویدئویی نتیجه‌ی تلاش صدها نفر از جمله نویسندگان، هنرمندان، طراحان، برنامه نویسان، طراحان صدا، کارگردانان، بازیگران و انیمیشن سازان است که همگی با دمیدن روح و شوق هنری خود باعث ساخت یک پازل چند صد تکه‌ی هنری می‌شوند.تصویری از طراحان و سازندگان در استودیو بازی سازی حال… آیا می‌توان بازی‌های ویدئویی را یک هنر دانست؟  جواب ساده است. بله. و نه تنها یک هنر، بلکه پیشرفته‌ترین شکل هنر که بشر تا به امروز به خود دیده. ویدئو گیم‌ها تمامی شکل‌های هنر که انسان خلق کرده را با یکدیگر ترکیب می‌کنند، همیشه در حال تکامل و پیشرفت اند و می‌توانند بسیار عمیق، فلسفی و احساسی باشند. هرچند همانطور که همه‌ی آثار هنری نمی‌توانند بار هنری یکسان داشته باشند، بازی‌ها هم همینطور هستند. برخی شاهکارهایی هستند که انسان باید پیش از مرگ تجربه کند و برخی فقط برای سرگرمی و اتلاف وقت طراحی شده اند.   اما این باعث نمی‌شود همه بازی‌های ویدئویی را فقط سرگرمی یا یک محصول برای فروش و سودآوری دانست. آنها آینه‌ی روح عصر ما هستند. وسیله‌ای که می‌تواند مانند درگاه به یک دنیای خاص و بسیار متفاوتی باشد و باعث شود انسان، مواردی را تجربه کند که هیچگاه در دنیای واقعی ممکن نبوده و نیست و با کمک این تجربه، زندگی خود و جامعه‌اش را متحول سازد. آری آنها هشتمین هنر هستند. هنر آینده. جایی که تکنولوژی و شوق هنری باعث خلق شدن بزرگترین و تاثیرگذار‌ترین آثار ممکن می‌شوند. امیدوارم این مقاله دیدگاه شما را نسبت به بازی‌های ویدئویی تغییر داده باشد و باعث شود که ما به این آثار با دیدی فراتر از یک سرگرمی نگاه کنیم.راستی!نشریه فرامتن رو در پلت‌فرم‌های مختلف دنبال کنید :)https://zil.ink/faramatn</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Mon, 28 Jul 2025 23:15:44 +0330</pubDate>
            </item>
                    <item>
                <title>هوش مصنوعی: دستیار، رقیب یا ارباب؟</title>
                <link>https://virgool.io/@faramatn/%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C-%D8%AF%D8%B3%D8%AA%DB%8C%D8%A7%D8%B1-%D8%B1%D9%82%DB%8C%D8%A8-%DB%8C%D8%A7-%D8%A7%D8%B1%D8%A8%D8%A7%D8%A8-pcvjsjggugv4</link>
                <description>به قلم سید علی امامی، ورودی ۴۰۰ مهندسی کامپیوتر دانشگاه صنعتی اصفهانبازنگری‌شده توسط پارسا شیرکوند، ورودی ۴۰۲ کارشناسی مهندسی کامپیوتر صنعتی اصفهانبه راستی انسان‌ها از جان هوش مصنوعی چه می‌خواهند؟حتما شما هم تصاویر مختلفی که هوش مصنوعی به سبک استودیو جیبلی (Studio Ghibli) ساخته را دیده‌‌اید و حتی احتمالا خودتان هم از آن‌ها تولید کرده‌اید. این تصاویر آن‌قدر باورپذیر و شبیه به نسخه اصلی بود که احتمالا همه را به وجد آورد، به جز هنرمندان نگون‌بخت که یک قدم به بی‌کار شدن نزدیک‌تر شدند :)اما آیا این کاری بود که انسان‌ها از هوش مصنوعی می‌خواستند؟ هوش مصنوعی هنوز نمی‌تواند خانه را تمیز کند،‌ غذا بپزد یا چای دم کند، اما می‌تواند سریع‌تر و بعضی‌وقت‌ها بهتر از ما متن بنویسد، کد بزند و اثر هنری خلق کند.رویای بشر همیشه ساخت ماشینی بود که او را از کار بی‌نیاز کند تا بتواند وقتش را در فعالیت‌هایی که دوست دارد صرف کند اما با اختراع ماشین‌های اولیه، کارخانه‌های بزرگ صنعتی پدید آمدند که نیاز به نیروی کار را دو چندان کرد. تکنولوژی به صاحبان سرمایه کمک کرد بهینه‌تر و بیشتر از کارمندان و کارگران کار بکشند. ماشین‌ها اگر چه نیاز به زور بازو را کمتر کردند، اما نیاز به اپراتوری داشتند که آن‌ها را تنظیم کند و تمام‌وقت مراقب آن‌ها باشد؛ اما آیا نمی‌شد همین اپراتور هم یک ماشین باشد؟پیشرفت مدل‌های زبانی بزرگ مثل جی‌پی‌تی در سال‌های اخیر همه را هیجان زده کرد؛ هیجانی در حد اختراع اینترنت! مهم نبود که متخصصان با بادی در غبغب به شما بگویند:«این که واقعا هوش مصنوعی نیست،‌ فقط یک مدل احتمالاتی بزرگ است که مدام کلمه بعدی را حدس می‌زند.»فرض کنید به باغ وحشی رفته‌‌اید و جلوی قفس میمون‌ها که می‌رسید یک میمون جلو می‌آید، با شما دست می‌دهد و خودش را معرفی می‌کند. احتمالا بعد از وحشت‌زده شدن، با او مثل یک انسان برخورد می‌کنید و فراموش می‌کنید که یک میمون است. وقتی یک ربات آنقدر شبیه انسان رفتار می‌کند که می‌توانید با آن مکالمه‌های عمیق راجع به زندگی داشته باشید و هم‌زمان تکالیفتان را حل کند، به‌‌راستی چه کسی اهمیت می‌دهد واقعا هوشمند است یا هوشمند نیست؟ به قول خارجی‌ها وقتی چیزی شبیه اردک است و صدای اردک هم می‌دهد، پس لابد اردک است :)بعضی‌وقت‌ها فکر می‌کنم شانس آورده‌ایم که لااقل هنوز جی‌پی‌تی از پشت مانیتور بیرون نیامده. درست است که کلمات توی یک مستطیل هم می‌توانند ترسناک باشند، اما نه به ترسناکی یک ربات اسلحه به دست. رباتی که طبق محاسباتش ناگهان به این نتیجه می‌رسد ما انسان‌ها در حال نابودی محیط‌زیست و کره زمین هستیم، پس باید نسل ما را منقرض کند تا خودش بماند. بعضی‌ها معتقدند این حرف‌ها بدبینی زیاد یا تئوری توطئه است که خب، امیدوارم همین‌گونه باشد.کسی که دوچرخه را اختراع کرد دقیقا می‌دانست کارکرد دوچرخه چیست. پس اگر یک روز دوچرخه‌اش پرواز می‌کرد احتمالا به این نتیجه می‌رسید چیزخور شده و توهم زده؛ اما کسانی که روی هوش مصنوعی کار می‌کنند اعتراف می‌کنند که نمی‌دانند این مسیر به کجا ختم خواهد شد. آن‌‌ها فقط سخت کار می‌کنند تا سرمایه‌گزاران انبوهشان را با مدل‌های بزرگ‌تر و بهتر راضی نگه دارند و از شرکت‌های رقیب عقب نمانند. آن‌ها مداوم تلاش می‌کنند برای جلوه تجاریشان هم که شده هوش مصنوعی را بچه مثبت نگه دارند تا حرف بد نزند، نژادپرست نباشد و آموزش ساخت کوکتل مولوتوف هم ندهد! اما همان‌طور که بارها دیده‌ایم این محدودیت‌ها قابل دور زدن هستند و چه کسی می‌داند اگر روزی هوش مصنوعی آگاه شود واقعیت را چه‌طور خواهد دید؟ احتمالا آن روز دیگر جی‌پی‌تی به توصیه‌‌های اخلاقی سم‌ ‌آلتمن اهمیتی نخواهد داد.به راستی انسان‌ها از جان هوش مصنوعی چه می‌خواهند؟ سوالی است که جواب مشخصی ندارد. آن چه که مشخص است این است که ما کاری دیوانه‌وار انجام داده‌ایم! تکامل میلیاردها سال وقت می‌خواست تا موجودی به هوشمندی انسان‌ها بسازد و حالا ما، موجودی باهوش‌تر از خودمان ساخته‌ایم تا به ما کمک کند. این که در آینده هم هوش مصنوعی دستیار خیرخواه ما می‌ماند و یا ما را در قفس می‌اندازد و به مغزهای کوچکمان می‌خندد هنوز معلوم نیست. ولی محض احتیاط به شما توصیه می‌کنم هر موقع با جی‌پی‌تی صحبت کردید تشکر کردن را فراموش نکنید :)ما را در صفحات مجازی، مخصوصا تلگرام دنبال کنید:https://zil.ink/faramatn</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Sun, 13 Jul 2025 19:44:07 +0330</pubDate>
            </item>
                    <item>
                <title>کد نویسی زیستی‌: از ویروس‌ها تا bootstrapping</title>
                <link>https://virgool.io/@faramatn/%DA%A9%D8%AF-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B2%DB%8C%D8%B3%D8%AA%DB%8C-%D8%A7%D8%B2-%D9%88%DB%8C%D8%B1%D9%88%D8%B3-%D9%87%D8%A7-%D8%AA%D8%A7-bootstrapping-djsgtowb98xo</link>
                <description>به قلم محمد حسین قنبری، ورودی ۴۰۰ مهندسی کامپیوتر دانشگاه صنعتی اصفهانبازنگری‌شده توسط ملیکا ملکی، ورودی ۴۰۰ کارشناسی مهندسی کامپیوتر صنعتی اصفهانیه پیشنهاد کوچیک: اگر پیش زمینه‌ای در این موضوعات ندارید، برای درک و فهم بیشتر میتونید قسمت قبلی متن رو از لینک زیر مطالعه کنید.دی‌ان‌ای از دید یک برنامه نویستقسیم سلولی مثل fork در یونیکس (و مشکلاتش مثل بمب fork — یعنی تومور!)در سیستم‌عامل یونیکس، وقتی یک برنامه جدید می‌خواهد اجرا شود، سیستم معمولاً از یک برنامه‌ی دیگر کپی می‌گیرد. این کار با دستوری به نام ( )fork انجام می‌شود. در بدن انسان هم روشی مشابه وجود دارد!همه‌ی سلول‌های بدن ما در ابتدا از یک سلول ساده شروع شده‌اند: تخمک بارور شده. این سلول اولیه بارها و بارها خودش را کپی کرده و در نتیجه سلول‌های مختلف بدن به‌وجود آمده‌اند.در یونیکس، وقتی ()fork انجام می‌شود، دو برنامه تقریباً شبیه هم هستند. در بدن هم وقتی یک سلول تقسیم می‌شود، دو سلول شبیه به هم ایجاد می‌شوند. اما بعد از این تقسیم، هر سلول ممکن است وظیفه و مسیر خاص خودش را پیدا کند (مثلاً یکی تبدیل به سلول مغز شود و دیگری به سلول پوست).اما اگر این تقسیم‌ها از کنترل خارج شوند و سلول‌ها همین‌طور بی‌وقفه خودشان را کپی کنند، مثل این می‌شود که در سیستم‌عامل، یک برنامه مدام()fork کند و هزاران برنامه‌ی بی‌هدف بسازد. این اتفاق در دنیای کامپیوتر به «بمب fork» معروف است و در بدن، ما به آن تومور یا سرطان می‌گوییم.برای جلوگیری از این فاجعه، بدن چند سیستم کنترلی دارد:تِلومیِرها (Telomeres): بخش‌هایی در انتهای DNA هستند که هر بار سلول تقسیم می‌شود، کمی کوتاه‌تر می‌شوند. وقتی خیلی کوتاه شدند، سلول دیگر اجازه‌ی تقسیم ندارد.واچ‌داگ‌ها (Watchdogs): مانند نگهبان‌هایی هستند که وضعیت سلول را همیشه بررسی می‌کنند. اگر مشکلی ببینند، جلوی تقسیم بیشتر را می‌گیرند.محدودیت‌های امنیتی: بدن فقط در شرایط خاص اجازه‌ی تقسیم سلول را می‌دهد. یعنی به‌صورت پیش‌فرض، دسترسی به تقسیم سخت‌گیرانه تنظیم شده است.اما اگر این سیستم‌ها به هر دلیلی خراب شوند یا آسیب ببینند، ممکن است سلول‌ها از کنترل خارج شوند و تقسیم بی‌پایان انجام دهند — که نتیجه‌اش سرطان است. این ماجرا شبیه به یکی از مسائل معروف در کامپیوتر است به نام «مسئله‌ی توقف» (Halting Problem) که توسط آلن تورینگ مطرح شده. این مسئله می‌گوید:«هیچ راهی وجود ندارد که بتوان همیشه پیش‌بینی کرد یک برنامه در نهایت متوقف می‌شود یا نه.»به همین شکل، شاید هیچ راه‌حل کامل و تضمینی برای جلوگیری از سرطان وجود نداشته باشد؛ چون کنترل کامل روی توقف تقسیم سلولی هم غیرممکن است.آینه‌کاری و پشتیبانی (Mirroring و Failover در DNA)DNA ساختاری دارد شبیه یک نردبان پیچ‌خورده (که به آن مارپیچ دوگانه یا Double Helix می‌گویند). هر پله‌ی این نردبان از دو قسمت (دو باز یا Base) ساخته شده. این بازها فقط به‌صورت جفت‌های خاصی کنار هم قرار می‌گیرند:A همیشه با T جفت می‌شود.C همیشه با G جفت می‌شود.یعنی اگر یکی از این نیمه‌ها آسیب ببیند یا گم شود، با استفاده از نیمه‌ی دیگر می‌توان دقیقاً نسخه‌ی اصلی را بازسازی کرد.این دقیقاً شبیه چیزی در دنیای کامپیوتر است به نام RAID-1. در این حالت، اطلاعات روی دو هارد دیسک به‌صورت هم‌زمان ذخیره می‌شوند. اگر یکی خراب شود، دومی هنوز سالم است و اطلاعات از بین نمی‌رود.اما ماجرا از این هم جالب‌تر است! بدن ما از هر کروموزوم دو نسخه دارد — یکی از پدر و یکی از مادر. این یعنی بیشتر ژن‌ها به‌صورت دو‌ نسخه‌ای (redundant) در بدن وجود دارند. اگر یکی از نسخه‌ها دچار آسیب یا جهش شود، نسخه‌ی دوم هنوز هست و می‌تواند وظیفه‌اش را انجام دهد.این هم مشابه یک مفهوم در شبکه و سرورها به نام Failover است. وقتی سرور اصلی از کار می‌افتد، سرور پشتیبانی خودکار وارد عمل می‌شود تا سیستم متوقف نشود.اما یک استثنا هم وجود دارد!در بدن مردان، کروموزوم Y فقط یک نسخه دارد (چون مردان XY هستند). بنابراین ژن‌هایی که روی کروموزوم Y قرار دارند، نسخه‌ی پشتیبان ندارند.به همین دلیل، اگر ژن‌های موجود روی کروموزوم Y آسیب ببینند، ممکن است بدن نتواند جبران کند — و این بخش‌ها حساس‌تر و آسیب‌پذیرتر هستند.API های شلوغ و وابستگی‌های دردسرساز (Dependency Hell)در دنیای برنامه‌نویسی، وقتی چندین برنامه یا کتابخانه‌ی نرم‌افزاری به هم وابسته باشند و یکی از آن‌ها تغییر‌‌‌‌‌‌‌ کند، ممکن است کل سیستم به‌هم‌بریزد. این وضعیت را برنامه‌نویس‌ها به‌درستی &quot;جهنم وابستگی‌ها&quot; (Dependency Hell) می‌نامند.جالب است بدانید که در سلول‌های بدن ما هم دقیقاً همین مشکل وجود دارد!در بدن، پروتئین‌ها مثل کارگرهای کارخانه عمل می‌کنند و برای انجام درست کارشان، باید با پروتئین‌های دیگر هماهنگ باشند. تحقیقات نشان داده‌اند که پروتئین‌هایی که با تعداد زیادی پروتئین دیگر تعامل دارند، خیلی سخت و کُند تغییر می‌کنند یا حتی اصلاً تکامل نمی‌یابند.چرا این اتفاق می‌افتد؟چون اگر فقط یکی از این پروتئین‌ها تغییر کند یا جهش پیدا کند، باید همچنان با تمام پروتئین‌هایی که به آن وابسته‌اند سازگار باقی بماند.اگر این هماهنگی از بین برود، سیستم دچار اختلال یا خرابی می‌شود — دقیقاً مثل وقتی که در یک نرم‌افزار بزرگ، نمی‌توان به‌راحتی یک API مهم را تغییر داد چون کلی کد دیگر به آن وابسته است.پس...در بدن هم، برخی پروتئین‌ها شبیه APIهای مرکزی نرم‌افزار هستند:تغییرشان دردسر دارد چون تعداد زیادی بخش به آن‌ها وابسته‌اند.این یعنی تکامل ژنتیکی هم، مثل برنامه‌نویسی، باید با دقت و هماهنگی بالا انجام شود — وگرنه به جای پیشرفت، با مشکل و اختلال روبه‌رو خواهیم شد!ویروس‌ها و کرم‌ها؛ هم بیولوژیکی، هم دیجیتال!در یک گفت‌وگو کسی گفت: «خیلی جالب می‌شه اگه بشه ژنوم انسان رو هک کرد و کدی نوشت که خودش رو به بقیه ژن‌ها کپی کنه و از بدن به عنوان واسطه استفاده کنه. درست مثل کرم‌های کامپیوتری مانند Nimda!»و بعد متوجه شد که:ویروس‌های زیستی دقیقا همین کار را از میلیون‌ها سال پیش انجام می‌دهند!ویروس‌ها کد ژنتیکی خود را وارد DNA ما کرده، خودشان را کپی می‌کنند و با استفاده از بدن میزبان (یعنی بدن ما) به دیگر موجودات منتقل می‌شوند.خیلی از این ویروس‌ها آن‌قدر خوب این کار را انجام داده‌اند که امروزه بخشی از ژنوم ما شده‌اند و در DNA همه‌ی ما جا خوش کرده‌اند.برای انجام این کار، ویروس‌ها باید خیلی ماهرانه عمل کنند تا توسط سیستم دفاعی بدن، که نقش «آنتی‌ویروس» را بازی می‌کند، شناسایی نشوند. اگر شناسایی شوند، از ورودشان به DNA جلوگیری می‌شود.دُگْما مرکزی (Central Dogma) : مسیر  c → .o → a.out/.exe. وقتی دانشمندان برای اولین بار شروع به کشف دنیای ژنتیک کردند، با انواع و اقسام مولکول‌های شیمیایی روبه‌رو بودند که ارتباط بین آن‌ها مشخص نبود. اما زمانی که مشخص شد اطلاعات ژنتیکی از DNA به RNA و سپس به پروتئین منتقل می‌شوند، این مسیر را یک کشف انقلابی دانستند و به آن نام معروف «دگما مرکزی» دادند.مثل کامپایل کردن کد در برنامه‌نویسی!اگر اهل کدنویسی باشی، این فرایند خیلی آشناست. فرض کن یک فایل مثل main.c داری:اول کامپایل می‌شه و تبدیل می‌شه به فایل میانی main.oبعد هم تبدیل می‌شه به یک فایل اجرایی مثل main.exeدر زیست‌شناسی هم همین اتفاق می‌افته:DNA→ RNA → Proteinاطلاعات از DNA استخراج می‌شوند، به شکل RNA دراومده و بعد برای ساختن پروتئین‌ها به‌کار‌می‌روند.طبق این قانون، اطلاعات فقط در همین مسیر حرکت می‌کنه و به عقب برنمی‌گرده.اما مثل هر سیستم قدیمی... گاهی قانون شکسته می‌شه!در دنیای واقعی، سیستم‌ها همیشه استثنا دارند. مثلاً در برنامه‌نویسی، گاهی بعد از اجرای برنامه، یه پَچ (Patch) روی سورس‌کد می‌زنی!در ژنتیک هم همین‌طوره:گاهی RNA می‌تونه دوباره روی DNA تاثیر بذاره (مثلاً ویروس HIV این کارو می‌کنه).یا حتی پروتئین‌هایی که ساخته شدند، ممکنه دوباره برگردند و تغییراتی در DNA ایجاد کنند.ولی همچنان...با همه‌ی این استثناها، مسیر اصلی DNA→ RNA → Protein همچنان ستون فقرات زیست‌شناسی مولکولی محسوب می‌شه.درست مثل اینکه بگیم «قانون اصلی هنوز پابرجاست، فقط بعضی وقتا یه میان‌بُر یا پَچ هم هست!»پَچ باینری یا همان &quot;درمان ژنی&quot; (Gene Therapy)تغییر دادن DNA خیلی راحت‌تر از تغییر دادن بدن انسان زنده است.الان شرکت‌هایی وجود دارد که اگر یک فایل متنی پر از حروف DNA براشون بفرستیم، اون DNA را تولید می‌کنند!ما حتی می‌تونیم DNA جدید رو وارد جنین حیوانات یا گیاهان در حال رشد کنیم.اما کاری که خیلی سخته اینه که بخوایم بدن یک آدم زنده رو پَچ کنیم!یعنی درست مثل وقتی که بخوایم یک برنامه‌ی در حال اجرا را وسط کار تغییر بدیم. برنامه‌نویس‌ها خوب می‌دونند این چقدر دردسر داره!در مورد بیماری خیلی خطرناکی به نام SCID (نوعی نقص سیستم ایمنی) سال‌هاست می‌دونیم که فقط باید چند حرف از DNA این بیماران رو درست کنیم تا خوب شوند.ولی انجام این کار در بدن زنده خیلی سخت بود. چون بدن ما مثل یک سیستم امنیتی قوی جلوی ورود کد خارجی رو می‌گیره — حتی از مایکروسافت هم محافظت بهتری داره!با این حال، اخیراً یک ویروس خاص پیدا شده که می‌تونه از این سد امنیتی عبور کنه و ژن معیوب رو اصلاح کنه.نتیجه؟ بیماران مبتلا به SCID بعد از این درمان، کاملاً سالم شدن!کدهای رید-سولومون: اصلاح خطاها قبل از وقوع (Forward Error Correction)همون‌طور که در کامپیوتر، داده‌ها ممکنه خراب شوند (مثلاً هنگام انتقال یا ذخیره‌سازی)، در بدن ما هم DNA یا RNA ممکنه اشتباهاتی داشته باشند — مثلاً یه «حرف» از کد ژنتیکی عوض بشه.اما بدن یک ترفند هوشمندانه داره که کمک می‌کنه حتی وقتی خطا اتفاق افتاد، نتیجه‌ی نهایی سالم بمونه!RNA فقط از ۴ حرف ساخته شده:A, U, C, Gهر ۳ حرف کنار هم کدی می‌شوند که مشخص می‌کنه چه آمینواسیدی ساخته بشه.مثلاً:یعنی حتی اگر یکی از حروف اشتباهی عوض بشه (مثلاً UCU بشه UCC)، باز هم همون آمینو اسید ساخته می‌شه! این چه فایده‌ای داره؟این یعنی سیستم ژنتیکی ما به‌طور پیش‌فرض مقاوم در برابر خطاهای کوچک طراحی شده. درست مثل تکنولوژی‌ای که توی کامپیوتر استفاده می‌شه به اسم:Forward Error Correction یا FECیکی از معروف‌ترین مثال‌هاش کدهای رید-سولومون (Reed–Solomon Codes) است که مثلاً توی CD و DVD هم استفاده می‌شوند. این کدها اجازه می‌دهند خطاهای جزئی اصلاح بشه، حتی بدون نیاز به ارسال دوباره‌ی اطلاعات.  در DNA هم اینطوره:سیستم رمزگذاری RNA طوری طراحی شده که کدهای مشابه، نتیجه‌ی مشابهی بدهند.حتی اگر یک حرف اشتباه بشه، نتیجه می‌تونه همون بمونه که پایداری سیستم را نشان‌ می‌دهد.این باعث می‌شه خطاهای کوچک، آسیبی به پروتئین نهایی نزنند. پیشنهاد مطالعه:برای مطالعه بیشتر درباره‌ی این موضوع جالب، کتاب Metamagical Themas نوشته داگلاس هافستدر را پیشنهاد می‌کنیم. این کتاب پر از ایده‌های عجیب، جالب و فلسفی درباره‌ی هوش، زبان، کد و ساختارهای تکرارشونده‌ست. اگر از ترکیب علوم و تفکر منطقی خوشتون میاد، حتماً برای مطالعه کتاب خوبیه.کد مقدس: /* این کد را لازم نیست درک کنید! */بعضی کدها در برنامه‌نویسی آنقدر حیاتی‌اند که کسی جرأت دست زدن به آن‌ها را ندارد؛ حتی اگر سازنده‌ی آن‌ها رفته باشد. فقط می‌دانیم که &quot;کار می‌کند&quot;.در ژنتیک هم چنین چیزی وجود دارد. برخی ژن‌ها مثل ساعت مولکولی ثابت و بدون تغییر می‌مانند. برای نمونه، ژن‌های هیستون H3و H4 بسیار حساس هستند و اگر تغییر کنند، موجود زنده نمی‌تواند به‌ درستی کار کند.این ژن‌ها مسئول بسته‌بندی و سازمان‌دهی کل DNA در سلول هستند. جالب اینکه در انسان، این ژن‌ها اصلاً جهش نمی‌کنند (نرخ جهش = صفر). حتی با مرغ، چمن یا قارچ هم این ژن‌ها تقریباً یکی هستند!نرخ جهش برخی ژن‌ها در هر ۱۰۰۰ میلیون سال (بین انسان و جونده‌ها):پس برای جلوگیری از جهش، دو روش اصلی وجود دارد:۱)استفاده از کدهای تکراری (مثلاً چند کد مختلف که یک آمینواسید بسازند).۲)کپی‌برداری از ژن‌ها در شرایط مناسب سلول (مثلاً در زمان خاصی از تقسیم سلولی).به نظر می‌رسد ژن‌های H3 و H4 با دقت زیاد نوشته شده‌اند و حتی اگر تغییر کوچکی هم رخ دهد، تاثیری بر خروجی ندارند.خطاهای قاب‌بندی: بیت شروع و پایاندر کدهای دیجیتال، مشخص بودن مرز بین بایت‌ها مهم است. مثلاً این دنباله:نماینده‌ی اعداد ۱، ۲ و ۳ است. اما اگر جا‌به‌جا بخوانیم:اعداد ۲، ۴ و ۶ را به‌دست می‌آوریم! پس برای جلوگیری از این مشکل، در بسیاری از سیستم‌های دیجیتال از بیت‌های شروع و پایان استفاده می‌شود.در DNA هم مکان‌هایی برای شروع خواندن تعریف شده‌اند. این کمک می‌کند تا سلول بداند از کجا شروع کند. جالب اینکه برخی تکه‌های DNA از چند نقطه‌ی شروع قابل خواندن هستند و هر بار خروجی متفاوت ولی مفیدی تولید می‌کنند! به این حالت می‌گویند &quot;Open Reading Frame&quot;.در مجموع، هر رشته‌ی DNA معمولاً ۶ روش مختلف برای خواندن دارد (۳ جهت رو به جلو و ۳ جهت رو به عقب).پردازش موازی عظیم: هر سلول یک جهان استDNA مثل یک زبان برنامه‌نویسی کامپیوتری نیست. واقعاً نیست. اما شباهت‌های زیادی وجود دارد که می‌توانیم از آن‌ها بهره ببریم. می‌توانیم هر سلول را مانند یک پردازنده (CPU) تصور کنیم که هسته‌ی خود را اجرا می‌کند. هر سلول یک نسخه از کل هسته را دارد، اما تنها بخش‌های مرتبط را فعال می‌کند. به عبارت دیگر، مانند این است که هر سلول بخشی از سیستم‌عامل خود را در اختیار دارد و بسته به نیاز، تنها ماژول‌ها یا درایورهای خاصی را بارگذاری می‌کند.وقتی یک سلول نیاز به انجام کاری دارد (مانند &quot;فراخوانی یک تابع&quot; در دنیای برنامه‌نویسی)، بخش مربوطه از ژنوم را آماده می‌کند و آن را به RNA تبدیل می‌کند. سپس RNA به یک دنباله از اسیدهای آمینه ترجمه می‌شود، که در کنار هم یک پروتئین می‌سازند و DNA برای آن کد نوشته است. حالا این قسمت واقعاً جالب است :-)این پروتئین با یک آدرس تحویل علامت‌گذاری می‌شود. این آدرس یک نشانگر متشکل از چند اسید آمینه است که به باقی‌مانده‌ی سلول می‌گوید این پروتئین باید به کجا برود. دستگاه‌های مختلفی وجود دارند که این دستورات را پردازش کرده و پروتئین را به مقصد مورد نظر می‌فرستند، جایی که ممکن است این پروتئین به قسمت خارجی سلول ارسال شود.سپس دستورالعمل تحویل از پروتئین جدا می‌شود و مراحل پردازش بعدی ممکن است انجام شوند که می‌تواند منجر به فعال شدن پروتئین شود – و این خوب است، زیرا شما ممکن است نخواهید که یک پروتئین فعال را از مکان‌هایی عبور دهید که نباید در آنجا فعالیت کند.خود میزبانی و بوت استرپینگاگر تمام کامپایلرهای C موجود در کره زمین را از بین ببریم و فقط کد یکی از آن‌ها را باقی بگذاریم، با مشکل بزرگی روبه‌رو خواهیم شد. بله، ما کد C برای یک کامپایلر C داریم، اما برای کامپایل کردن آن به یک کامپایلر C نیاز داریم!در واقع، این مشکل با نوشتن اولین کامپایلر C در زبان C حل نشد (آها)، بلکه با استفاده از یک زبان موجود به نام B حل شد. برای جزئیات بیشتر می‌توانید به «بوت‌استرپینگ» مراجعه کنید.همین قضیه برای ژنوم هم صدق می‌کند. برای ایجاد یک «دستگاه باینری» از یک موجود زنده، نسخه زنده آن موجود لازم است. ژنوم به یک زنجیره ابزار پیچیده نیاز دارد تا یک موجود زنده را تحویل دهد. خود کد بی‌اثر است. این زنجیره ابزار معمولاً به نام «والدین شما» شناخته می‌شود.آپدیت: اخیراً این امکان فراهم شده است که با استفاده از مقدار کمی ماده‌ی زنده، زندگی جدیدی ایجاد شود. شعار «هر سلول از یک سلول به‌وجود می‌آید» در حال تغییر است. برای مثال، پروژه Mycoplasma laboratory یک نمونه از این پیشرفت‌ها است.به نظر می‌رسد که RNA، که به عنوان کد میانه بین DNA و پروتئین عمل می‌کند، ممکن است همان زبان «B» برای DNA بوده باشد. حالا این سوال پیش می‌آید که RNA از کجا آمده است؟ جالب است که اشیاء فرازمینی اغلب حاوی اسیدهای آمینه هستند!بوت استرپینگ : بوت‌استرپینگ (Bootstrapping) یک مفهوم مهم در علوم کامپیوتر و مهندسی نرم‌افزار است که به معنی شروع یک فرایند پیچیده از طریق یک مرحله‌ی ساده‌تر و پایه‌ای‌تر است.مثلاً فرض کنید می‌خواهیم یک کامپایلر (برنامه‌ای که کدهای برنامه‌نویسی را به زبان قابل فهم کامپیوتر تبدیل می‌کند) بنویسیم. مشکل اینجاست که برای ساختن کامپایلر جدید، معمولاً باید از یک کامپایلر دیگر استفاده کنیم. پس چگونه اولین کامپایلر ساخته شده؟ اینجا بوت‌استرپینگ وارد می‌شود.بوت‌استرپینگ یعنی: با استفاده از یک سیستم یا ابزار ساده‌تر (مثلاً یک زبان برنامه‌نویسی ساده‌تر یا برنامه‌ای که قبلاً ساخته شده)، ابتدا نسخه‌ی اولیه‌ای از سیستم پیچیده‌تر را می‌سازیم. سپس این نسخه اولیه خودش را بهبود می‌دهد و نسخه‌های بهتر و کامل‌تری تولید می‌کند.نام «بوت‌استرپ» (بوت‌استرپ به معنی بند کفش یا تسمه‌ی بوت است) از این ایده آمده که انگار می‌خواهی خودت را از زمین بلند کنی فقط با کشیدن بند کفش‌هایت! یعنی شروع یک کار بزرگ با استفاده از ابزارهای بسیار ابتدایی.در دنیای زیست‌شناسی، بوت‌استرپینگ شبیه همان کاری است که سلول مادر برای ایجاد سلول جدید انجام می‌دهد. یعنی ژنوم به تنهایی نمی‌تواند زندگی ایجاد کند، بلکه به ماشین‌آلات و ابزارهای سلول موجود نیاز دارد تا آن را فعال کند و موجود جدید ساخته شود.Makefile ژنتیکی: چگونه بدن از یک سلول ساخته می‌شودهر موجود زنده، زندگی خود را از یک سلول واحد آغاز می‌کند. این سلول شامل دو نسخه‌ی کامل از ژنوم است، یعنی مانند یک فایل فشرده (مثل tarfile) است که تمام محتویات آن از قبل استخراج شده‌اند و آماده‌ی استفاده هستند. اما سوال اصلی اینجاست: بعد از این مرحله چه اتفاقی می‌افتد؟اینجاست که ژن‌های ویژه‌ای به نام ژن‌های Homeobox (یا Hox) وارد عمل می‌شوند. این ژن‌ها به سلول‌ها کمک می‌کنند تا در حین تکثیر و رشد، تشخیص دهند که چه نقشی باید ایفا کنند. برای مثال، برخی سلول‌ها باید به سلول‌های مغز تبدیل شوند، برخی دیگر به سلول‌های قلب یا استخوان.ژن‌های Hox به گونه‌ای رفتار می‌کنند که انگار در حال اجرای یک فایل Makefile هستند، درست مانند دنیای برنامه‌نویسی که در آن یک فایل Makefile مشخص می‌کند کدام بخش از برنامه چه زمانی و به چه ترتیبی اجرا شود. ژن‌های Hox به سلول‌ها نمی‌گویند مستقیماً چه چیزی بسازند، بلکه آن‌ها را راهنمایی می‌کنند که کدام ژن‌های دیگر را فعال کنند.در ابتدای فرآیند رشد، ژن‌های Hox یک گرادیان شیمیایی ایجاد می‌کنند تا به سلول‌ها کمک کنند موقعیت خود را در بدن در حال رشد تشخیص دهند. این گرادیان، به نوعی مثل یک GPS عمل می‌کند و مشخص می‌کند که سلول در «بالای» بدن قرار دارد یا «پایین». مثلاً ممکن است دستور داده شود: «از ساخت سر شروع کن» و سلول‌هایی که در ناحیه‌ی بالایی بدن قرار دارند، مسیر تولید ساختارهای مربوط به سر را آغاز کنند. در مقابل، سلول‌هایی که پایین‌تر هستند، شروع به ساخت نوتوکورد(محور پشتی ابتدایی) یا ستون فقرات می‌کنند.یک آزمایش شگفت‌انگیز ژنتیکییکی از جالب‌ترین کشفیات درباره‌ی ژن‌های Hox، شباهت عملکرد آن‌ها بین گونه‌های بسیار متفاوت است. برای مثال، اگر بخشی از ژن Hox موش را که مسئول ساختن پا است، در ژنوم مگس میوه(Drosophila) قرار دهید، آن ژن می‌تواند باعث رشد پا به جای شاخک پشه شود!به‌طور دقیق‌تر:«وقتی ژن Hox-B6 موش در بدن مگس‌ میوه‌ قرار داده شود، می‌تواند جای ژن Antennapedia را بگیرد و باعث شود به‌جای شاخک، پا رشد کند.»این موضوع نشان می‌دهد که ژن‌های Hox در گونه‌های مختلف مانند انسان و حشره‌ها، با اینکه صدها میلیون سال پیش از هم جدا شده‌اند، هنوز می‌توانند به صورت صحیح در بدن موجودات دیگر کار کنند.البته باید توجه داشت که روند ساختن پا در موش و پشه کاملاً متفاوت است، اما چیزی که این آزمایش ثابت می‌کند این است که ژن‌های Hox مانند یک Selector (انتخاب‌گر) عمل می‌کنند: آن‌ها مشخص می‌کنند کدام فرآیندها باید فعال شوند، اما مستقیماً دخالتی در ساخت ساختارها ندارند.پلاسمید‌ها(Plasmids) : ‌پلاگین‌ها(Plugins)در دنیای زیست‌شناسی، همه‌ی موجودات زنده دارای DNA هستند. این ماده‌ی ژنتیکی مانند یک کتابخانه‌ی عظیم از دستورالعمل‌ها عمل می‌کند و به سلول‌ها می‌گوید چگونه کار کنند، چه بسازند و چگونه واکنش نشان دهند. در انسان‌ها و دیگر موجودات پیچیده‌تر، این DNA معمولاً به صورت چندین کروموزوم خطی ذخیره می‌شود، مثل کتاب‌هایی که کنار هم در یک کتابخانه قرار گرفته‌اند.اما در باکتری‌ها، ماجرا ساده‌تر است. باکتری‌ها معمولاً فقط یک کروموزوم دایره‌ای دارند. این کروموزوم، اطلاعات ژنتیکی اصلی باکتری را در بر دارد و تمام کارهای اساسی و حیاتی سلول را مدیریت می‌کند.در کنار این ژنوم اصلی، بسیاری از باکتری‌ها دارای بخش اضافه‌ای از DNA هستند که به آن‌ها پلاسمید (Plasmid) گفته می‌شود. پلاسمیدها حلقه‌های کوچکی از DNA هستند که به طور مستقل از کروموزوم اصلی عمل می‌کنند. این قطعات DNA اضافی مثل کتاب‌های جیبی تخصصی‌اند که باکتری‌ها در کنار کتابخانه‌ی اصلی خود نگه‌داری می‌کنند. آن‌ها حاوی اطلاعات خاصی هستند که معمولاً برای بقا در شرایط سخت یا رقابت با دیگر موجودات استفاده می‌شوند.یکی از مهم‌ترین ویژگی‌های پلاسمیدها، قابلیت جابه‌جایی آن‌هاست. پلاسمیدها می‌توانند از یک باکتری به باکتری دیگر منتقل شوند، حتی اگر از گونه‌های متفاوت باشند. این انتقال باعث می‌شود ویژگی‌هایی مانند مقاومت به آنتی‌بیوتیک‌ها خیلی سریع بین باکتری‌ها گسترش پیدا کند. به همین دلیل، پلاسمیدها نقش بسیار مهمی در گسترش مقاومت دارویی در سطح جهانی دارند، و این مسئله یکی از نگرانی‌های اصلی در پزشکی امروز است.برای درک بهتر عملکرد پلاسمیدها، می‌توان آن‌ها را با مفاهیمی در دنیای برنامه‌نویسی و سیستم‌عامل‌ها مقایسه کرد. در سیستم‌عامل لینوکس، قابلیتی به نام LD_PRELOAD وجود دارد. این ابزار می‌تواند بدون این‌که برنامه‌ی اصلی متوجه شود، برخی از توابع آن را تغییر دهد یا به شکل دلخواه رفتار برنامه را عوض کند. این تغییر به صورت داوطلبانه توسط برنامه‌ها اتفاق نمی‌افتد، بلکه گاهی اوقات به شکل اجباری اعمال می‌شود تا عملکرد سیستم تغییر یابد. پلاسمیدها نیز دقیقاً چنین نقشی در سلول دارند: آن‌ها بخشی از DNA اصلی نیستند، اما وقتی وارد باکتری می‌شوند، بدون معطلی شروع به فعالیت می‌کنند و می‌توانند ساختار و رفتار باکتری را تغییر دهند. این کار ممکن است به نفع باکتری باشد، مثلاً باکتری را در برابر آنتی‌بیوتیک مقاوم کند یا کمک کند آنزیم خاصی تولید کند.از نظر عملکردی، پلاسمیدها به صورت مستقل از DNA اصلی تکثیر می‌شوند. به این معنا که اگر یک باکتری بخواهد تقسیم شود و از خودش یک نسخه‌ی جدید بسازد، پلاسمیدها هم به شکل جداگانه و خودکار کپی می‌شوند و به سلول‌های جدید منتقل می‌شوند. این توانایی به کمک بخشی از DNA پلاسمید انجام می‌شود که به آن &quot;Origin of Replication&quot; یا «مبدأ تکثیر» گفته می‌شود. این قسمت، مثل یک نقطه‌ی شروع برای نسخه‌برداری عمل می‌کند و وقتی باکتری آماده‌ی تقسیم می‌شود، این بخش فعال شده و پلاسمیدها شروع به تکثیر می‌کنند.در مجموع، پلاسمیدها را می‌توان مانند افزونه‌هایی در نظر گرفت که بر روی یک برنامه‌ی اصلی نصب می‌شوند. آن‌ها به صورت مستقل کار می‌کنند، ویژگی‌هایی به سیستم اضافه می‌کنند، قابل انتقال هستند، و در زمان مناسب کپی می‌شوند تا در نسل بعدی هم باقی بمانند. این ساختار هوشمندانه و انعطاف‌پذیر، یکی از رازهای موفقیت باکتری‌ها در بقا و تکامل سریع آن‌هاست.لینک توضیحات مربوطه:قسمت اول:https://youtu.be/EcGM_cNzQmE?si=R-qmXRBDUoM8W998قسمت دوم:https://youtu.be/rCdhsN--Mdo?si=zyVzFITEsLJNYnRiراستی!نشریه فرامتنو جاهای مختلف مخصوصا تلگرام دنبال کنید:)کلی اتفاق میفته اونجا.https://zil.ink/faramatn</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Sun, 29 Jun 2025 23:58:07 +0330</pubDate>
            </item>
                    <item>
                <title>دی‌ان‌ای از دید یک برنامه نویس</title>
                <link>https://virgool.io/@faramatn/%D8%AF%DB%8C-%D8%A7%D9%86-%D8%A7%DB%8C-%D8%A7%D8%B2-%D8%AF%DB%8C%D8%AF-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-vbkbffbfmmg1</link>
                <description>به قلم محمد حسین قنبری، ورودی ۴۰۰ مهندسی کامپیوتر دانشگاه صنعتی اصفهانبازنگری‌شده توسط پارسا شیرکوند، ورودی ۴۰۲ کارشناسی مهندسی کامپیوتر صنعتی اصفهاندرباره نویسندهبِرت هوبرت یک کارآفرین، توسعه‌دهنده نرم‌افزار و پژوهشگر هلندی است که به دلیل فعالیت‌هایش در زیرساخت‌های اینترنت و امنیت سایبری شناخته می‌شود. او در یکی از سخنرانی‌هایش می‌گوید که ابتدا سال‌ها در زمینه امنیت سایبری کار کرده است. وی در سال ۱۹۹۹ یک شرکت دی‌ان‌اس به نام Power&quot; DNS را تاسیس کرد که در آن دوران خیلی مورد استقبال قرار نگرفت.مدتی بعد متوجه شد که یک نرم افزار خیلی گران -یعنی همان Power DNS را - برای مردم عادی طراحی کرده است که ممکن بود توانایی خرید آن را نداشته باشند.وی در سال ۲۰۱۱ به دلایلی حوزه رایانش امن (Security) را ترک کرد. به گفته خودش، یکی از دلایلش این بود که از فعالیت در این زمینه خسته شده بوده و بعد از این اتفاق به مدت ۱۸ ماه در دانشگاه صنعتی دلفت (TU Delft) به تحقیق درباره دی‌ان‌ای می‌پردازد که از نظر خودش دوران بسیار جالبی بوده و منجر به انتشارات مقالاتی به دست او در نشریه‌های علمی شده است.زبان کد زندگیدر این مقاله، نگاهی متفاوت و جذاب به دی‌ان‌ای خواهیم داشت؛ نه از دیدگاه یک زیست‌شناس مولکولی؛ بلکه از دید یک برنامه‌نویس کامپیوتر. اگرچه نویسنده‌ اصلی این دیدگاه در ابتدا متخصص ژنتیک نبوده، اما طی سال‌ها مطالعه و علاقه‌مندی، توانسته مفاهیم ژنتیکی را با زبان دنیای کامپیوتر تطبیق دهد و به شیوه‌ای قابل درک برای برنامه‌نویسان بیان کند.دی‌ان‌ای، کدی برای یک ماشین مجازی به نام هسته سلول!اغلب ما، کدهای برنامه‌نویسی را به زبان‌هایی مثل C یا Python می‌شناسیم که برای اجرا شدن نیاز به ترجمه توسط کامپایلر یا مفسر دارند. DNA نیز شباهت‌هایی با این فرایند دارد، با این تفاوت که DNA نه مانند زبان C خام و واضح است و نه کاملاً قابل بازگشت به «کد منبع». بلکه شبیه به کدی «بایت‌کامپایل شده» (Byte-Compiled) برای یک ماشین مجازی به نام «هسته سلول» است.در واقع، آنچه ما از DNA می‌بینیم، تمام چیزی‌ست که داریم. هیچ &quot;کد منبع&quot; قابل مشاهده‌تری وجود ندارد که بتوان به آن بازگشت. سلول‌ها به شکلی پیچیده ولی مؤثر، این اطلاعات ژنتیکی را تفسیر و اجرا می‌کنند.توضیحات بیشترکد منبع ندارد در برنامه‌نویسی، ما معمولاً هم «کد منبع» (کدی که خود برنامه‌نویس نوشته) داریم و هم «کد ترجمه‌شده» (مثلاً کد باینری)؛ اما در DNA ما فقط نسخه‌ ترجمه‌شده را داریم؛ در واقع هیچ نسخه‌ خام یا واضح‌تری از این کد وجود ندارد. یعنی DNA تنها نسخه‌ای‌ست که طبیعت به ما داده و از روی آن همه چیز انجام می‌شود.مثل کد بایت‌کامپایل شده استوقتی می‌گوییم DNA مثل کد Byte-Compiled است، یعنی DNA نه به اندازه‌ی کد منبع ساده و قابل‌فهم است و نه به اندازه‌ی کد باینری سخت و غیرقابل‌خواندن. بلکه چیزی مابین این دو است. برای مثال، در زبان برنامه‌نویسی Python، وقتی که کدی را اجرا می‌کنید یک فایل میانی به نام .pyc ساخته می‌شود که نیمه‌ قابل‌خواندن است و برای ماشین مجازی پایتون قابل اجراست. DNA هم مثل این فایل میانی است؛ نه خیلی واضح، نه خیلی مبهم، اما قابل‌ استفاده برای ماشین اجرا کننده‌اش.«ماشین مجازی» یعنی چه؟ هسته سلول چه نقشی دارد؟در دنیای کامپیوتر، ماشین مجازی یعنی محیطی که کد اجرا می‌شود، بدون اینکه مستقیم با سخت‌افزار در تماس باشد. مثلاً جاوا دارای یک ماشین مجازی به نام JVM است که کد را اجرا می‌کند.در بدن ما، ماشین مجازی‌ای که DNA را اجرا می‌کند، سلول است؛ یا دقیق‌تر که بگوییم «هسته سلول» (Nucleus) جایی‌ست که این کد خوانده و اجرا می‌شود. سلول‌ها DNA را می‌خوانند، آن را تفسیر می‌کنند و با کمک آن پروتئین‌ها و اجزای مختلف بدن را می‌سازند.دی‌ان‌ای: زبان دیجیتال، اما نه دودویی (باینری)یکی از نکات جالب در مورد DNA این است که برخلاف زبان‌های کامپیوتری که مبتنی بر سیستم باینری (صفر و یک) هستند، DNA دارای چهار «حرف» یا باز (Base) است: A (آدنین)، T (تیمین)، C (سیتوزین) و G (گوانین)در زبان کامپیوتر، یک بایت متشکل از 8 بیت است که با دو حالت ممکن (0 یا 1) می‌تواند تا 256 مقدار متفاوت را نمایش دهد. اما در DNA، هر «کدون» (Codon) از سه باز تشکیل شده که هر کدام از میان چهار حرف ممکن انتخاب می‌شوند. بنابراین، تعداد ترکیب‌های ممکن برابر است با:                                     4 × 4 × 4 = 64 یعنی 64 کدون ممکن!هر کدون معادل یک آمینو اسید مشخص است. برای مثال، کدون GCC بیانگر آمینو اسید آلانین است. مجموعه‌ای از این آمینواسیدها زنجیره‌ای به نام پلی‌پپتید یا پروتئین را تشکیل می‌دهند که واحدهای اساسی ساختار و عملکرد موجودات زنده هستند.کد مستقل از موقعیت: کدهای پرش‌پذیر در DNAمفهوم کد مستقل از موقعیت در برنامه‌نویسی:در دنیای کامپیوتر و برنامه‌نویسی، وقتی یک برنامه نوشته می‌شود، معمولاً آن برنامه در حافظه‌ کامپیوتر (RAM) اجرا می‌شود. برنامه‌ها معمولاً به آدرس‌های خاصی در حافظه اشاره می‌کنند. اما گاهی اوقات لازم است یک برنامه بتواند در هر جای حافظه که سیستم صلاح می‌بیند اجرا شود، بدون اینکه خراب شود یا آدرس‌هایش اشتباه شوند.این‌جور برنامه‌ها را «کدهای مستقل از موقعیت» می‌نامند. یعنی کدهایی که به جای استفاده از آدرس‌های ثابت، طوری نوشته شده‌اند که هر جا در حافظه قرار بگیرند، باز هم درست کار می‌کنند.این کار مخصوصاً برای چیزهایی مثل «کتابخانه‌های پویا» (مثلا فایل‌های .dll در ویندوز یا .so در لینوکس) خیلی مهم است. چون این فایل‌ها ممکن است چند بار در جاهای مختلف حافظه بارگذاری شوند و اگر آدرس‌های ثابتی درونشان باشد، دچار مشکل می‌شوند. پس این کتابخانه‌ها طوری نوشته می‌شوند که بتوانند در هر موقعیتی اجرا شوند؛ بدون نیاز به تغییرات دستی.در داخل سلول‌های زنده، اطلاعات ژنتیکی ما روی مولکولی به نام DNA ذخیره شده است. DNA معمولاً ثابت است و هر بخش از آن وظیفه خاصی دارد؛ مثل دستور ساختن یک پروتئین یا تنظیم فعالیت ژن‌های دیگر.اما یک کشف عجیب در سال‌های گذشته (دهه ۱۹۴۰) توسط «دکتر باربارا مک‌کلینتاک» انجام شد. او فهمید که بخش‌هایی از DNA وجود دارند که می‌توانند محل خود را در ژنوم تغییر دهند. یعنی مثلاً یک بخش از کروموزوم 1 به کروموزوم 5 یا یک جای دیگر از همان کروموزوم می‌پرد.این بخش‌های خاص را به اسم‌های مختلف می‌شناسیم:المان‌های قابل جابجایی (Transposable Elements)یا ساده‌تر: DNA پرشی (Jumping DNA)این تکه‌های DNA مثل کدی هستند که جای خاصی ندارند، می‌توانند از یک نقطه به نقطه دیگر بروند و کماکان وظیفه خود را انجام دهند. درست مثل کدهای مستقل از موقعیت در برنامه‌نویسی.یک نکته شگفت‌انگیز!امروزه دانشمندان دریافته‌اند که تقریباً نیمی از کل DNA انسان از همین عناصر پرش‌پذیر تشکیل شده است! یعنی این‌ها فقط یک چیز خاص یا نادر نیستند، بلکه بخش خیلی بزرگی از ژنوم ما هستند.برنامه‌نویسی شرطی در ژن‌ها: بازخوانی کد حیاتدر بدن ما میلیون‌ها میلیون سلول وجود دارد: سلول‌های مغز، قلب، پوست، کبد، ماهیچه و... جالب اینجاست که تقریباً همه‌ی این سلول‌ها DNA یکسانی دارند! یعنی همه‌شان یک نسخه‌ کامل از ژنوم انسان (که شامل حدود ۲۰ تا ۳۰ هزار ژن است) را با خود حمل می‌کنند.اما سوال مهم این است که چرا سلول مغز فقط ژن‌های مربوط به مغز را فعال می‌کند و مثلاً ژن‌های کبد را استفاده نمی‌کند؟ یا سلول کبد چرا ژن‌های چشم یا پوست را نمی‌خواند؟اینجاست که برنامه‌نویسی شرطی در ژن‌ها وارد ماجرا می‌شود!تشبیه با برنامه‌نویسی کامپیوتری:در برنامه‌نویسی، گاهی کدی داریم که فقط باید در شرایط خاصی اجرا شود. مثلاً:#if USER == &amp;quotadmin&amp;quot
show_admin_panel();
#endifاین یعنی: فقط اگر کاربر مدیر بود، بخش مربوط به پنل مدیر اجرا شود. در غیر این صورت، نادیده گرفته می‌شود.در DNA هم وضعیتی شبیه این داریم! در سلول‌های بدن، با اینکه همه‌ی ژن‌ها وجود دارند، ولی فقط بعضی از آن‌ها تحت شرایط خاصی فعال می‌شوند. مثلاً:در سلول‌های کبد: ژن‌های مربوط به پردازش سموم و تولید آنزیم‌های کبدی فعال می‌شوند.در سلول‌های عصبی: ژن‌هایی که مربوط به ارتباط عصبی و انتقال پیام هستند، فعال می‌مانند.سلول‌های بنیادی، همه‌چیز هنوز ممکن است!به همین دلیل، سلول‌های بنیادی موضوع پژوهش‌های داغ علمی هستند؛ زیرا آن‌ها هنوز هیچ بخشی از ژنوم خود را حذف نکرده‌اند و قابلیت تبدیل به هر نوع سلولی را دارند. البته این به آن معنا نیست که تمام ژن‌ها در این سلول‌ها فعال هستند. بلکه سلول‌های بنیادی در آغاز همانند ماشین‌های حالت (State Machines) هستند که با گذشت زمان و تقسیم شدن (Fork)، به تدریج تخصصی‌تر می‌شوند. این فرایند را می‌توان همچون انتخاب مسیرهایی در یک درخت تصمیم‌گیری در نظر گرفت.سلول‌های بنیادی چیستند و چرا مهم‌اند؟در بدن ما انواع مختلفی از سلول‌ها وجود دارند: سلول پوست، سلول قلب، سلول مغز، سلول خون و ... هر کدام از این سلول‌ها وظیفه خاصی دارند و فقط همان کار را می‌توانند انجام دهند.اما در ابتدای زندگی، وقتی یک نطفه (زیگوت) تازه تشکیل می‌شود، تمام سلول‌های آن یکسان‌اند و هنوز تصمیم نگرفته‌اند که قرار است چه نوع سلولی بشوند. به این سلول‌های اولیه می‌گوییم سلول‌های بنیادی.ویژگی مهم سلول‌های بنیادی:سلول‌های بنیادی مثل «کاغذ سفید» هستند. یعنی هنوز نقش خاصی نگرفته‌اند و می‌توانند در آینده به هر نقشی دربیایند: ممکن است به سلول پوست، سلول عصبی، سلول عضله، سلول کبد و ... تبدیل شوند.نکته مهم:این سلول‌ها هیچ ژنی را از DNA خود حذف نکرده‌اند. یعنی همه دستورالعمل‌ها برای تبدیل شدن به هر نوع سلول را دارند.اما...این به این معنا نیست که همه‌ی ژن‌هایشان فعال است. در واقع، آن‌ها فقط ژن‌هایی را فعال می‌کنند که در آن مرحله از رشد لازم است. بقیه ژن‌ها «خاموش» هستند، ولی حذف نشده‌اند.مقایسه با ماشین‌های حالت (State Machines)در علوم کامپیوتر، ما «ماشین حالت» داریم. این ماشین‌ها بسته به ورودی‌هایی که می‌گیرند، به حالت‌های مختلفی می‌روند.سلول‌های بنیادی هم تقریباً همین‌طور هستند؛ آن‌ها در آغاز کاملاً آزاد و منعطف‌اند ولی با گذشت زمان، با دریافت «سیگنال‌هایی» از محیط یا داخل بدن، تصمیم می‌گیرند به چه سلولی تبدیل شوند. این انتخاب‌ها مرحله‌به‌مرحله هستند. یعنی یک سلول بنیادی اول تصمیم می‌گیرد که مثلاً سلول عصبی بشود، بعد تصمیم می‌گیرد که از چه نوع سلول عصبی باشد، و همین‌طور جلو می‌رود.درخت تصمیم‌گیری (Decision Tree)می‌توان این فرایند را مثل درختی با شاخه‌های زیاد در نظر گرفت:در ابتدا، سلول در نوک درخت (بالا) است و همه گزینه‌ها را دارد.ولی وقتی وارد یک شاخه شود، دیگر نمی‌تواند به شاخه‌های دیگر برگردد. یعنی وقتی مثلاً تبدیل به سلول عضله شد، دیگر نمی‌تواند سلول عصبی شود.هر سلول می‌تواند - یا می‌توان آن را وادار کرد -  که تصمیم‌هایی درباره‌ی آینده‌ی خود بگیرد؛ تصمیم‌هایی که به تخصصی‌تر شدن آن منجر می‌شوند. این انتخاب‌ها از طریق فاکتورهای رونویسی (transcription factors) و تغییر در ساختار فضایی ذخیره‌سازی DNA (اثرهای فضایی یا Steric Effects) به نسل‌های بعدی همان سلول منتقل می‌شوند.فاکتورهای رونویسی (Transcription Factors)این‌ها مثل کلیدهایی هستند که مشخص می‌کنند کدام ژن فعال شود و کدام ژن خاموش بماند.این کلیدها به سلول اعلام می‌کنند: &quot;الان وقتشه فلان ژن رو روشن کنی.&quot;تغییرات فضایی (Steric Effects)دی‌ان‌ای در هسته سلول به‌شکل پیچیده‌ای تا خورده است.اگر یک قسمت از DNA در جایی قرار بگیرد که دسترسی به آن سخت باشد، دیگر نمی‌توان آن را خواند یا فعال کرد.این هم باعث می‌شود که فقط بعضی از ژن‌ها در دسترس باشند و بقیه خاموش بمانند.برای مثال، یک سلول کبدی اگرچه تمام ژن‌های لازم برای تبدیل به سلول پوست را دارد، ولی در عمل نمی‌تواند چنین کاری انجام دهد. با این حال، پژوهش‌هایی وجود دارد که نشان می‌دهند می‌توان برخی سلول‌ها را دوباره به وضعیت بنیادی‌تر برگرداند، یا به اصطلاح «به‌سمت بالا» در سلسله‌مراتب سلولی پرورش داد. این سلول‌ها را «سلول‌های پرتوان» (Pluripotent) می‌نامند.اپی‌ژنتیک و اثرگذاری‌های لحظه‌ای: وصله‌زنی در زمان اجرادر دنیای ژنتیک، همیشه تصور می‌شود که برای تغییر در ویژگی‌های بدن، حتماً باید تغییراتی در DNA اتفاق بیفتد. اما واقعیت این است که گاهی می‌توان بدون هیچ تغییری در کد ژنتیکی، نحوه عملکرد ژن‌ها را کنترل کرد. این پدیده را اپی‌ژنتیک (Epigenetics) می‌نامند؛ یعنی تنظیمی فراتر از ژن‌ها، چیزی شبیه به برنامه‌ریزی نرم‌افزاری بر روی سخت‌افزار ثابت.برای فهم بهتر این موضوع، بیایید نگاهی به دنیای فناوری بیندازیم. وقتی سیستم‌عامل لینوکس اجرا می‌شود، ابتدا بررسی می‌کند که دستگاه چه ویژگی‌هایی دارد. اگر تنها یک پردازنده (CPU) داشته باشد، بخش‌هایی از کدی که مخصوص سیستم‌های چندپردازنده‌ای است، به‌طور کامل از حافظه کنار گذاشته می‌شوند. این کار حتی پیش از آن‌که شرط‌هایی مثل if(numcpus) &gt; 1 بررسی شوند، انجام می‌شود. در واقع، سیستم‌عامل در لحظه اجرا تصمیم می‌گیرد که کدام بخش از برنامه فعال بماند و کدام بخش کنار گذاشته شود؛ بدون آنکه به فایل اصلی برنامه دست بزند. این رفتار را می‌توان نوعی وصله‌زنی زنده یا تنظیم پویای کد در زمان اجرا دانست.در بدن انسان هم فرآیندی مشابه رخ می‌دهد. به‌ویژه در دوران جنینی، ژن‌ها تحت تاثیر عواملی قرار می‌گیرند که تعیین می‌کنند کدام‌یک فعال باشند و کدام غیرفعال بمانند. برای نمونه، هنگام رشد جُفت (یعنی همان بخشی که جنین را به بدن مادر وصل می‌کند) باید بین نیاز جنین به رشد و نیاز مادر به سلامت تعادل ایجاد شود. از دید ژن‌های پدری، هرچه جنین بزرگ‌تر و قوی‌تر باشد، بهتر است. اما از دید بدن مادر، رشد زیاد جنین ممکن است خطرناک باشد و بارداری را تهدید کند. بنابراین، بدن مادر با استفاده از تنظیمات اپی‌ژنتیکی تصمیم می‌گیرد برخی ژن‌های پدری را خاموش یا کم‌فعال کند تا تعادل حفظ شود.به این تنظیمات خاص، نقش‌گذاری ژنی یا ایمپرینتینگ (Imprinting) گفته می‌شود. این فرآیند تنها در بدن مادر انجام می‌شود، چون فقط مادر از وضعیت سلامت خودش آگاه است. ژن‌های پدری، بدون اطلاع از شرایط فیزیکی بدن مادر، نمی‌توانند در این تصمیم‌گیری دخالت کنند.در مجموع، اپی‌ژنتیک نشان می‌دهد که تنها داشتن ژن کافی نیست؛ مهم آن است که ژن‌ها چگونه و در چه زمانی مورد استفاده قرار بگیرند. درست مانند برنامه‌ای که بر اساس شرایط، بخش‌هایی از خود را فعال یا غیرفعال می‌کند، بدن نیز با استفاده از این تنظیمات هوشمندانه، مسیر رشد و سلامت خود را هدایت می‌کند — بی‌آنکه حتی یک حرف از کد ژنتیکی‌اش را تغییر دهد.اثرات وراثتی و نسل‌های آیندهشواهد جدید نشان می‌دهند که وضعیت متابولیکی والدین حتی می‌تواند بر سلامت نوه‌ها نیز اثر بگذارد. به‌عنوان مثال، اگر نسل والدین در محیطی فقیر از نظر غذایی زندگی کرده باشند، ممکن است بدن نوه‌ها برای بقای بهتر، متابولیسم متفاوتی را انتخاب کند.مکانیسم‌های اصلی اپی‌ژنتیک شامل «متیلاسیون» (افزودن گروه‌های متیل به DNA برای خاموش یا روشن کردن ژن‌ها) و همچنین «تغییر ساختار هیستون‌ها» هستند که می‌توانند DNA را به شکل فشرده در آورد و مانع از فعال شدن آن شوند.برخی از این تغییرات اپی‌ژنتیکی به نسل‌های بعدی منتقل می‌شوند، در حالی‌که برخی دیگر تنها بر فرد تأثیر می‌گذارند. این حوزه از علم هنوز در حال رشد و توسعه است، و احتمال می‌رود که درک ما از پویایی DNA و نقش آن در تنظیمات لحظه‌ای زندگی، به‌مراتب پیچیده‌تر از چیزی باشد که پیش‌تر تصور می‌شد.دی‌ان‌ای و ذخیره‌سازی اطلاعات؛ شباهتی عجیب با هارد دیسک!تا این‌جای کار دیدیم که بخش‌های زیادی از DNA مثل کامنت‌ها در کدنویسی هستند. یعنی قسمت‌هایی که مستقیماً نقشی در ساخت پروتئین ندارند. اما یک سوال مهم اینجاست: آیا این بخش‌های به‌ظاهر بی‌استفاده فقط برای نادیده گرفتن هستند؟ یا شاید نقشی پنهانی دارند؟یکی از نظریه‌های جالب برای توضیح این موضوع به چیزی به نام «تمایل به تا شدن» (Folding Propensity) مربوط می‌شود.ما می‌دانیم که رشته DNA خیلی بلند است اما فضای داخل هسته سلول بسیار کوچک است. بنابراین DNA باید به‌شکل خاصی پیچیده و تا شود تا بتواند به طرز مناسب قرار بگیرد. اما همه بخش‌های DNA به یک اندازه برای این تا شدن مناسب نیستند. گاهی لازم است قطعات اضافه‌ای بین بخش‌های اصلی قرار بگیرند تا تا شدن بهتر انجام شود. اینجاست که اینترون‌ها (intron) یا همان «کامنت‌های ژنتیکی» وارد ماجرا می‌شوند.برای اینکه بهتر درک کنیم، بیایید مثالی از دنیای تکنولوژی بزنیم: هارد دیسک کامپیوتر!روی هارد، داده‌ها به‌صورت تغییر در میدان مغناطیسی ذخیره می‌شوند. اما اگر اطلاعاتی مثل &quot;000000&quot; پشت سر هم باشند، چون تغییری اتفاق نمی‌افتد، سیستم نمی‌فهمد که دقیقاً چند صفر پشت‌سر هم آمده. برای حل این مشکل، بین صفرها کدهای اضافه ولی بی‌معنا قرار می‌دهند تا خواندن اطلاعات آسان‌تر و دقیق‌تر شود. این روش را «محدود سازی طول اجرا» (Run Length Limiting یا RLL) می‌نامند.در DNA هم ممکن است اینترون‌ها مثل همین داده‌های اضافی عمل کنند، یعنی به‌عنوان فاصله‌گذار، به راحت‌تر تا شدن و ذخیره شدن DNA کمک کنند.جنگ بر سر اینترون‌ها: از اول بودند یا بعداً اضافه شدند؟در زیست‌شناسی هنوز بحث داغی در جریان است که این اینترون‌ها دقیقاً از چه زمانی وارد DNA شدند و چه‌کاری می‌کنند.دو نظریه اصلی وجود دارد:نظریه‌ی &quot;اینترون‌های زود&quot; (Introns Early): می‌گوید این بخش‌ها از ابتدای کار، بخشی از سیستم ژنتیکی بودند.نظریه‌ی &quot;اینترون‌های دیر&quot; (Introns Late): معتقد است این بخش‌ها در طول زمان و بعداً اضافه شده‌اند.در این بحث‌ها اصطلاحات سنگینی مثل «پتانسیل لوپ ساقه‌ای» یا «تمایل به تا شدن» زیاد استفاده می‌شود. اما برای ما کافی است تا بدانیم که این بحث هنوز به نتیجه نرسیده و دانشمندان همچنان درباره‌اش اختلاف‌نظر دارند.آپدیت ۲۰۱۳: آیا DNA اضافی واقعاً بی‌فایده است؟بعد از سال‌ها بحث، هنوز نتیجه قطعی به دست نیامده. اما بیشتر دانشمندان اکنون قبول دارند که اصطلاح «DNA بی‌استفاده» یا «Junk DNA» درست نیست، چون بخش زیادی از این DNAها احتمالاً وظایف مهمی دارند. ولی اینکه دقیقاً چه وظایفی دارند و چطور کار می‌کنند، هنوز معلوم نیست.اگر تمایل دارید که اطلاعات بیشتری کسب کنید، مقاله‌ای با عنوان &quot;Fighting About Encode And Junk&quot; در این زمینه وجود دارد.آپدیت ۲۰۲۱: داستان همچنان ادامه دارد!از آغاز این بحث‌ها حدود ۱۸ سال گذشته و هنوز هم پایانی برای آن در کار نیست. بسیاری از پژوهشگران اکنون معتقدند که DNA هایی که قبلاً بی‌فایده تصور می‌شدند، حاوی اطلاعات و عملکردهای مهمی هستند.ولی کشف دقیق این عملکردها هنوز ادامه دارد، و تقریباً هر روز اطلاعات تازه‌ای درباره‌ی آن‌ها به‌دست می‌آید. این یعنی DNA بسیار هوشمندتر و پیچیده‌تر از آن است که قبلاً فکر می‌کردیم.لینک توضیحات مربوطه:قسمت اول:https://youtu.be/EcGM_cNzQmE?si=R-qmXRBDUoM8W998قسمت دوم:https://youtu.be/rCdhsN--Mdo?si=zyVzFITEsLJNYnRiراستی!این بخش اول از این مقاله جذاب بود.منتظر قسمت دوم باشید!https://zil.ink/faramatn</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Mon, 02 Jun 2025 10:17:48 +0330</pubDate>
            </item>
                    <item>
                <title>تداکس – ورای یک جامعه‌ عادی!</title>
                <link>https://virgool.io/@faramatn/%D8%AA%D8%AF%D8%A7%DA%A9%D8%B3-%D9%88%D8%B1%D8%A7%DB%8C-%DB%8C%DA%A9-%D8%AC%D8%A7%D9%85%D8%B9%D9%87-%D8%B9%D8%A7%D8%AF%DB%8C-ylexgg4mqwbl</link>
                <description>به قلم مهسا سلمانی، ورودی ۴۰۲ مهندسی کامپیوتر دانشگاه صنعتی اصفهانبازنگری‌شده توسط پارسا شیرکوند، ورودی ۴۰۲ کارشناسی مهندسی کامپیوتر صنعتی اصفهاناولین تد اکس دانشگاه صنعتی اصفهان در سالن سروش شهرک علمی تحقیقاتی اصفهان برگزار شد. ماه‌ها بود که از نزدیک نه، ولی از فاصله‌ کمی مشاهده‌گر تلاش بی‌بدیل بچه‌های دست‌اندرکار بودم ولی در این مقاله قرار نیست روایتگر باشم. در ابتدا هم به قصد نوشتن نقد و مقاله در این رویداد شرکت نکرده بودم، ولی روایت‌های زیبایی شنیدم که حیف بود محدود به یک روز و یک رویداد بمونند و بین جملات دیگه گم بشن.شاید خیلی‌ها بپرسن که اساساً فایده‌ شرکت در رویدادهای این‌چنینی چیه؟ این سوال، شاید سوال خیلی‌ها باشه. من به شخصه فکر می‌کنم که باید از هر فرصتی برای یادگیری استفاده کرد و این فقط شامل مدرسه و دانشگاه نمی‌شه. چه بسا اگر فقط به مدرسه و دانشگاه اکتفا کنیم، در ابعاد دیگه زندگی قطعاً احساس کمبود خواهیم کرد.اما در این رویداد به نتیجه‌ی جدیدی رسیدم که مسیرش از چند هفته پیش در ذهنم شروع شده بود. پژوهشی خونده بودم در حیطه‌ طرحواره درمانی و بعد چند روز بعد مطلبی در نقضش دیدم. از دوستی که در این حیطه تحصیل می‌کنه پرسیدم که آخر کدوم راه برای روان‌درمانی بهتره و چطور از بین این بازار بلبشو راهی رو پیدا کنم که برام مفید باشه؟ اون هم در جواب پاسخ درخوری داد که :«همه‌ی این روش‌های مختلف در روان‌درمانی یک نوع روایت‌گری‌اند؛ در نهایت برای هرکس یک روایت جواب‌گوئه!». به زبان ساده‌تر، همون‌طور که جروم برونر، روانشناس شناختی، اشاره می‌کنه انسان‌ها از طریق روایت‌ها تجربیات خودشون رو معنا می‌کنند و این تجربیات می‌تونه شامل دردها و غم‌ها هم باشه! امروز در تد اکس متوجه شدم که احتمالاً این موضوع رو میشه به چیزهای دیگه در زندگی هم تعمیم داد.شاید به‌‌ صورت‌ کلی شنیدن تجارب آدم‌های دیگه اونقدر ها هم سرگرم‌کننده نباشه، ولی ما نباید انتظار داشته باشیم که مثل یک کلاس درس، هر جمله افراد موفق برای ما یک فرمول باشه! بلکه باید دنبال این باشیم که چه بسا یک جمله از بین هزاران جمله مثل یک جرقه در ذهن ما چشمامون رو به سوی حقیقتی از زندگیمون باز کنه!به‌صورت کلی می‌شه گفت خیلی از کارها و حتی سرگرمی‌هایی که ما در زندگی انجام می‌دیم هم به همین دلیله؛ شاید خودمون هم متوجه نباشیم، ولی وقتی یک رمان می‌خونیم، داریم به جای تک‌تک شخصیت‌های کتاب زندگی می‌کنیم و مسیرشون رو باهاشون طی می‌کنیم. حتی شاید موقع فیلم دیدن هم چیزی شبیه به این رو تجربه کنیم؛ به‌نظر می‌رسه به سبب دیدن پستی بلندی‌های زندگی شخصیت‌های فیلم، که در واقعیت باهاشون روبه‌رو نشدیم، در ذهنمون مسیرهای جدیدی شکل می‌گیره. پس چرا فرصت گوش دادن و ارتباط گرفتن با آدم‌هایی که در واقعیت مسیر و تجارب شنیدنی و الهام‌بخشی داشتن رو از دست بدیم؟!در تد اکس ما به ۹ روایت گوش دادیم ولی من قرار نیست اینجا نقل‌قول کنم. قراره جمله‌هایی که ناگهان حواس من رو دوچندان به سخنرانی جلب می‌کرد به زبان خودم بازگو کنم. هرچند هر کدوم از ما به سبب مسیر متفاوتی که در زندگی طی کردیم، احتمالاً جملات و روایت‌های مختلفی رو جذاب می‌بینیم، ولی من حس کردم بد نباشه تعدادی از اون‌هایی که برام جالب بود رو بنویسم.«من راه آرام کردن ذهن شلوغم رو در خطاطی پیدا کردم.» به‌هم‌ریختگی ذهن که معضل دنیای امروزه است؛ حقیقتا در دنیای پرسرعت و صنعتی امروز که اطلاعات غالبا بیهوده‌ای در هر لحظه از طریق شبکه‌های اجتماعی وارد ذهن ما می‌شن، چه‌طور باید افکار ناآرام و پرسروصدای ذهن‌مون رو مدیریت کنیم؟«باید وقتی راهی رو که بهش علاقه‌مندیم پیدا می‌کنیم، رنج‌هاش رو هم بپذیریم!» این نکته‌ایه که شاید کمتر بهش توجه بشه. خیلی از ماها، از جمله خود من، فکر می‌کنیم وقتی راهی که دوستش داریم رو پیدا می‌کنیم، دیگه باید ادامه‌ مسیر قند و نبات باشه و وقتی مسیر به سر بالایی می‌رسه فکر می‌کنیم که اگر این مسیر مال من بود، احساس سختی و رنج نمی‌کردم. ولی حقیقت اینطور نیست و ما باید با این واقعیت رو به‌رو بشیم که حتی ممکنه با این تفکر رسالت حقیقی زندگیمون رو پیدا کنیم، ولی به راحتی از دستش بدیم!«اگر مسیر جدیدی پیدا می‌کنیم که بهش علاقه‌مندیم و می‌خوایم که واردش بشیم، باید صدمون رو بذاریم و اگر در نهایت به اون نتیجه‌ دلخواه نرسیدیم و خواستیم از اون راه جدا بشیم، اینکه فهمیدیم این مسیری که برای زندگی و موفقیت در ذهن داشتیم، مسیر ما نبوده، خودش یک موفقیته!» در ادامه‌ این جمله، مثال جالبی به ذهن من رسید؛ در دوره‌ی متوسطه یا همون راهنمایی درباره‌ی پژوهش کردن یک نکته‌ جالبی می‌خوندیم:«هیچ پژوهشی منجر به شکست نمی‌شه و وقتی یک دانشمند روی چیزی مطالعه و آزمایش می‌کنه، ولی در نهایت فرضیه‌اش غلط در میاد، این خودش یک نتیجه و موفقیت علمیه برای اینکه مشخص شده اون مسیر غلط بوده.»شاید از همین راه حل بشه برای زندگی هم الهام گرفت. علاقمندی‌ها و گزینه‌های توی ذهنمون رو مرتب می‌کنیم و تک‌تک میریم سراغشون و صدمون رو می‌ذاریم. اگر در نهایت اونی نشد که می‌خوایم، این یک نتیجه مهم به همراه داره، یک گزینه حذف شده و ما به جواب اصلی نزدیک‌تر شدیم. چه بسا در این بین زندگی راه جدیدی برامون باز کنه که هیچ وقت جزو گزینه‌هامون نبود، ولی قسمت مهمی از زندگیمون رو از اون مسیر ادامه بدیم. همونطور که سید امیر سادات موسوی می‌گفت:«وقتی طلای المپیاد نجوم می‌گرفت و فیزیک شریف می‌خوند، وقتی ارشد تاریخ علم می‌گرفت یا وقتی در آموزش و پرورش در نشریه‌های دانش‌آموزی مطلب می‌نوشت، هیچ وقت فکر نمی‌کرد در این برهه‌ی کنونی در زندگیش مسیر مورد علاقه‌اش، تور لیدری و تولید محتوا در فضای مجازی باشه!»شاید باید از پیدا کردن یک مسیر واحد برای زندگی دست برداریم. شاید این باور که ما برای رسالتی متولد شدیم و باید پیداش کنیم، غلط باشه. شاید هم هر برهه‌ای از زندگی ما یک مسیر به‌خصوصی داره و آیا در حقیقت این‌طوری کتاب زندگی هم خوندنی‌تر نمی‌شه؟!</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Sat, 17 May 2025 23:25:30 +0330</pubDate>
            </item>
                    <item>
                <title>خاطراتی که در مغز نفس می‌کشند</title>
                <link>https://virgool.io/@faramatn/%D8%AE%D8%A7%D8%B7%D8%B1%D8%A7%D8%AA%DB%8C-%DA%A9%D9%87-%D8%AF%D8%B1-%D9%85%D8%BA%D8%B2-%D9%86%D9%81%D8%B3-%D9%85%DB%8C-%DA%A9%D8%B4%D9%86%D8%AF-suscxkpyzrbn</link>
                <description>به قلم محمد حسین شاهپوری، ورودی ۴۰۱ کارشناسی مهندسی کامپیوتر صنعتی اصفهانبازنگری‌شده توسط محمد متین حیدرنژاد، ورودی ۴۰۲ کارشناسی مهندسی کامپیوتر صنعتی اصفهانشاید هیچ چیز به‌اندازۀ خاطرات عاشقانه در ذهن انسان زنده و ماندگار نباشد. یک رایحۀ آشنا، یک ترانۀ ساده یا حتی نور غروب از پنجره‌ای خاص می‌توانند دریچه‌ای به لحظاتی باشند که گمان می‌کردیم از یاد رفته‌اند. اما چرا؟ چرا خاطراتی که با عشق گره خورده‌اند، تا این اندازه روشن و پررنگ باقی می‌مانند؟برای یافتن پاسخ، باید سفری به ژرفای مغز داشته باشیم؛ جایی که عشق، نه صرفاً احساسی لطیف، بلکه پدیده‌ای عصبی و پیچیده است و حافظه، نه یک صندوقچۀ خاموش، بلکه فرایندی زنده و پویاست.حافظه، یکی از شگفت‌انگیزترین توانایی‌های مغز انسان است؛ قابلیتی برای ذخیره، بازیابی و حتی بازآفرینی تجربه‌هایی که گاه تنها چند لحظه دوام داشته‌اند. وقتی از خاطرات عاشقانه سخن می‌گوییم، در حقیقت به ترکیبی از تصاویر، صداها، احساسات و واکنش‌های بدنی اشاره داریم که همگی در شبکه‌ای پیچیده از نورون‌ها رمزگذاری شده‌اند.دو بخش کلیدی در مغز، نقشی اساسی در ثبت و پردازش این خاطرات دارند: هیپوکامپ (hippocampus) و آمیگدال (amygdala). هیپوکامپ در تبدیل خاطرات کوتاه‌مدت به بلندمدت مؤثر است، در حالی‌که آمیگدال با هیجانات شدید، به‌ویژه عشق، ترس و شادی، در ارتباط مستقیم قرار دارد. همکاری این دو ساختار عصبی موجب می‌شود خاطراتی با بار احساسی بالا – همچون خاطرات عاشقانه – با قدرت بیشتری در ذهن ما باقی بمانند.برخلاف تصور رایج، عشق صرفاً احساسی لطیف و شاعرانه نیست؛ بلکه فرایندی زیستی و دقیق در مغز است که با فعال شدن مجموعه‌ای از نواحی عصبی و ترشح ترکیبی از مواد شیمیایی همراه می‌شود. زمانی‌که فردی عاشق می‌شود، نواحی‌ای مانند قشر پیش‌پیشانی (prefrontal cortex)، هستۀ دم‌دار (caudate nucleus) و هستۀ اکومبنس (nucleus accumbens) به‌طور قابل‌توجهی فعال می‌شوند. این نواحی بخشی از سیستم پاداش مغز را تشکیل می‌دهند؛ همان سیستمی که هنگام خوردن غذای دلخواه، شنیدن موسیقی محبوب یا رسیدن به موفقیت، فعال می‌شود.عشق با ترشح هورمون‌هایی مانند دوپامین، اکسی‌توسین و سروتونین همراه است. دوپامین، هورمون لذت و انگیزه، در این دوران افزایش یافته و حالتی از سرخوشی ایجاد می‌کند. اکسی‌توسین، که به «هورمون پیوند» معروف است، حس نزدیکی و صمیمیت را تقویت می‌کند. در عین حال، کاهش سطح سروتونین می‌تواند منجر به بروز رفتارهای وسواس‌گونه و تمرکز بیش‌ از اندازه بر معشوق شود.جالب آن‌که مکانیسم مغز در مواجهه با عشق، شباهت‌هایی با مکانیسم اعتیاد دارد. نه از سر ضعف، بلکه به‌دلیل شدت تأثیر عشق بر سیستم‌های عصبی و پاداش. مغز ما، در مواجهه با عشق، همان‌گونه واکنش نشان می‌دهد که در برابر محرک‌هایی مانند مواد اعتیادآور یا موفقیت‌های بزرگ؛ با تمایل به تکرار، تعلق و دلبستگی.همۀ خاطراتی که در ذهن انسان نقش می‌بندند، از نظر مغز ارزش یکسانی ندارند. آنچه برخی لحظات را ماندگار می‌کند، شدت بار هیجانی آن‌هاست. خاطرات عاشقانه، به‌سبب همین شدت، با وضوح و جزئیاتی فراتر از حد معمول در ذهن باقی می‌مانند. این خاطرات غالباً در شرایطی شکل می‌گیرند که مغز درگیر اوج هیجان و ترشح هورمون‌هایی چون دوپامین و آدرنالین است؛ عناصری که به تقویت فرایند رمزگذاری خاطره در مغز کمک می‌کنند.در چنین موقعیت‌هایی، آمیگدال – مرکز پردازش احساسات – با فعالیتی مضاعف وارد عمل می‌شود و با همکاری هیپوکامپ، به مغز هشدار می‌دهد که «این لحظه ارزشمند است، آن را حفظ کن». شاید به همین دلیل است که نخستین نگاه، آخرین واژه یا حتی یک جملۀ ساده، تا سال‌ها در ذهن انسان زنده می‌ماند.افزون بر این، خاطرات عاشقانه با حواس ما پیوند می‌خورند؛ بویی خاص، صدایی آشنا یا حتی لمس یک بافت، می‌توانند جرقه‌ای برای زنده شدن دوبارۀ یک خاطره باشند. این پیوند چندحسی، قدرت بازخوانی خاطرات را افزایش می‌دهد و آن‌ها را به تجربه‌هایی تکرارشونده در زندگی روزمره‌مان تبدیل می‌کند.بنابراین، ماندگاری خاطرات عاشقانه تنها به اهمیت احساسی آن‌ها مربوط نمی‌شود، بلکه ناشی از سازوکارهای دقیق و حساس مغز در مواجهه با لحظات عاطفی شدید است.خاطرات عاشقانه صرفاً داده‌هایی در نورون‌ها نیستند؛ آن‌ها بخشی از «ما» هستند. مغز انسان نه‌تنها لحظات را ثبت می‌کند، بلکه آن‌ها را بازسازی و گاه حتی بازآفرینی می‌کند. خاطره‌ای عاشقانه می‌تواند در گذر زمان، زیباتر، روشن‌تر یا حتی اندوه‌بارتر از واقعیت اولیه‌اش بازتاب یابد.این پدیده نشانه‌ای از ضعف نیست؛ بلکه گواهی است بر پیوند ژرف میان عاطفه و ادراک. وقتی به گذشته‌ای عاشقانه می‌اندیشیم، مغز تنها تصاویر را بازنمی‌گرداند؛ بلکه حس همان لحظه را دوباره خلق می‌کند. به همین دلیل است که یک ترانه، یک بو یا نوری خاص از عصر می‌تواند ما را ناگهان به لحظه‌ای دور بازگرداند.پژوهش‌ها نشان می‌دهد این بازسازی‌های احساسی، نقشی کلیدی در معنا دادن به تجربه‌ها دارند. انسان، با خاطره زندگی می‌کند، و عشق یکی از پررنگ‌ترین رنگ‌های این خاطره‌نگاری است. ما تنها برای لحظۀ اکنون عاشق نمی‌شویم؛ بلکه برای آن‌که روزی چیزی برای بازگشتن یا برای زنده ماندن در ذهن داشته باشیم.شاید به همین دلیل است که حتی خاطرات تلخ عشق را هم گاه نمی‌خواهیم فراموش کنیم؛ چون آن‌ها نشانه‌های لحظاتی‌اند که در آن‌ها عمیقاً حس کرده‌ایم: زنده‌ایم.عشق تنها یک احساس زودگذر یا رویدادی شاعرانه در زندگی انسان نیست؛ بلکه پدیده‌ای است که ساختارهای مغزی، هیجانات و هویت ما را درگیر می‌کند. حافظه، به‌ویژه در لحظات عاشقانه، نه یک دفترچۀ بی‌طرف، بلکه آینه‌ای است که احساسات را در خود منعکس و حتی بازآفرینی می‌کند.وقتی به خاطرات عاشقانه فکر می‌کنیم، در حقیقت به بخشی از خویشتن خویش بازمی‌گردیم. مغز، با ترشح هورمون‌ها و فعال‌سازی مسیرهای عصبی خاص، نه‌تنها لحظه‌ها را ثبت می‌کند، بلکه آن‌ها را درون ما زنده نگه می‌دارد؛ گویی عشق در حافظه‌مان نفس می‌کشد.این پیوند میان مغز و عشق، چیزی بیش از یک تعامل زیستی است؛ تجسمی از آن است که چگونه انسان، موجودی است خاطره‌ساز، معناجو و عاشق.ما خاطرات عاشقانه را نه‌فقط به‌خاطر آن‌که «اتفاق افتاده‌اند»، بلکه به‌خاطر آن‌که «ما را ساخته‌اند» به خاطر می‌سپاریم. شاید به همین دلیل است که هنوز، با شنیدن یک ترانۀ قدیمی، دلمان می‌لرزد.منابع:Bartels, A., &amp; Zeki, S. (2000). The neural basis of romantic love. NeuroReport, 11(17), 3829–3834.Eysenck, M. W., &amp; Keane, M. T. (2015). Cognitive Psychology: A Student’s Handbook (7th ed.). Psychology Press.Fisher, H. E., Aron, A., &amp; Brown, L. L. (2006). Romantic love: A mammalian brain system for mate choice. The Journal of Comparative Neurology, 493(1), 58–62.LeDoux, J. E. (1998). The Emotional Brain: The Mysterious Underpinnings of Emotional Life. Simon &amp; Schuster.McGaugh, J. L. (2004). The amygdala modulates the consolidation of memories of emotionally arousing experiences. Annual Review of Neuroscience, 27, 1–28.Phelps, E. A. (2004). Human emotion and memory: interactions of the amygdala and hippocampal complex. Current Opinion in Neurobiology, 14(2), 198–202.</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Tue, 13 May 2025 09:21:26 +0330</pubDate>
            </item>
                    <item>
                <title>پرواز یک پنگوئن</title>
                <link>https://virgool.io/@faramatn/%D9%BE%D8%B1%D9%88%D8%A7%D8%B2-%DB%8C%DA%A9-%D9%BE%D9%86%DA%AF%D9%88%D8%A6%D9%86-jjtnunzompom</link>
                <description>به قلم ملیکا فتوحی و شیرین بهنامی‌نیا، ورودی ۹۹ مهندسی کامپیوتر دانشگاه صنعتی اصفهانگاهی تاثیرگذارترین اختراعات بشر به طور تصادفی شکل می گیره! این بار قراره داستان یک انقلاب اتفاقی رو مرور کنیم و ببینیم که چه‌طور «لینوکس» از یک پروژه تفریحی، تبدیل شد به یکی از محبوب‌ترین سیستم عامل‌های دنیا. سیستم‌عاملی که اگر باهاش کار هم نکرده باشید، قطعا اسمش رو زیاد شنیدید.تاریخچه لینوکسسال ۱۹۷۳ در شرکت &quot;تلفن و تلگراف آمریکا‌&quot; (AT&amp;T)سیستم‌عامل جدیدی پا به عرصه وجود گذاشت و خیلی زود جهان تکنولوژی رو متحول کرد. اولین سیستم‌عاملی که به زبانی غیر از زبان اسمبلی نوشته شده بود و به خاطر انطباق‌پذیری بالایی که داشت، به سرعت در عرصه تجارت و آموزش گسترش پیدا کرد. یونیکس به جنگ یکی از بزرگترین چالش های برنامه‌نویس‌ها رفته بود. اون زمان کامپیوترها معماری پیچیده‌ای داشتن و کاملا از هم مجزا بودند. بنابراین اگر شما می‌تونستین با یک کامپیوتر کار کنید، الزاما دلیل نمی‌شد که بتونید با یه کامپیوتر دیگه هم کار کنید. این‌طوری بود که سیستم‌عامل یونیکس تونست با فلسفه خاص خودش، گام مهمی رو در جهت تکامل سیستم‌عامل‌ها برداره؛ اما در این میان مشکلی وجود داشت!شرکت AT&amp;T پس از مدتی لایسنس خاصی رو تعریف کرد که بر اساس اون شرکت‌ها برای استفاده از یونیکس باید هزینه پرداخت می‌کردند و علاوه بر اون، کد و سیستم‌عامل هم در اختیار دیگران قرار نمی‌گرفت. بخش عظیمی از مردم از پس این هزینه بالا برنمی‌اومدن و اینجا بود که ایده اولیه سیستم‌عامل گنو-لینوکس، فکر یک دانشجوی جوان رو مشغول کرد.10 سال گذشته بود و ریچارد استالمن هنوز به اون جرقه فکر می‌کرد. این هکر 30 ساله آمریکایی تفکری عجیب و نو در سر داشت. او مخالف وجود محدودیت در استفاده از نرم‌افزارها بود، به عبارت دیگه استالمن باور داشت که کاربران یک نرم‌افزار باید آزادی لازم برای به اشتراک گذاشتن اون رو با بقیه داشته باشن و یا در صورت نیاز، بتونن قسمت‌هایی از برنامه رو مطابق با خواسته خودشون تغییر بدن.فوریه ۱۹۸۴، ریچارد استالمن در دانشگاه MIT هنوز به اون جرقه فکر می‌کرد. این هکر ۳۰ ساله آمریکایی تفکری عجیب و نو در سر داشت. او مخالف وجود محدودیت در استفاده از نرم‌افزارها بود. به عبارت دیگه استالمن باور داشت که کاربران یک نرم‌افزار باید آزادی لازم برای به اشتراک گذاشتن اون رو با بقیه داشته باشن و یا در صورت نیاز، بتونن قسمت‌هایی از برنامه رو مطابق با خواسته خودشون تغییر بدن.در یک کلام ریچارد استالمن طرفدار &quot;آزادی نرم‌افزار&quot; بود. در همون سال‌ها سیستم‌عامل‌ها خصوصی شدن و کاربر در زمان خرید، متعهد می‌شد تا سیستم‌عاملی که خریده رو در اختیار دیگران قرار نده. نرم‌افزارها هم مدتی بود که به صورت بسته ارائه می‌شدن و امکان دیدن یا تغییر کد اون‌ها وجود نداشت. همه این‌ مسائل برای استالمن انگیزه مضاعفی ایجاد کرد تا ایده‌ای که توی سرش بود رو اجرا کنه.او در پی این اتفاقات و تفکری که داشت، اعلام کرد که می‌خواد پروژه ای به نام «گنو» رو شروع کنه. به همین خاطر، کارش رو در دانشگاه MIT رها کرد و این پروژه جاه‌طلبانه رو هدف اصلی خودش قرار داد.در نهایت سیستم‌عاملی آزاد و سازگار با یونیکس به نام «GNU» توسط استالمن معرفی شد. نام گنو یک اصطلاح مخفف بازگشتی به معنی «GNU&#x27;s Not Unix» است. جالب اینجاست که چون استالمن به دلایل کپی‌رایت نمی‌تونست مستقیما در نام‌گذاری سیستم‌عاملش به اسم یونیکس اشاره کنه، از این شیوه استفاده کرد :)انگیزه استالمن، طراحی یک سیستم‌عامل شبیه یونیکس اما در عین حال متفاوت با اون بود. این نکته که گنو با یونیکس سازگاری زیادی داره، ممکنه بعضی‌ها رو به این اشتباه بندازه که گنو بر پایه یونیکس ساخته شده و هسته اون یونیکسه.در صورتی که این‌طور نیست و تیم گنو سیستم‌عامل رو از پایه نوشتن و اصلا به کدهای یونیکس دسترسی نداشتن. در واقع یونیکس یک سیستم‌عامل خصوصی بود که شما به عنوان یک کاربر اجازه به اشتراک‌ گذاشتن اون رو با بقیه نداشتین، اما در گنو این محدودیت‌ها رفع شده بود و یک سیستم‌عامل آزاد به شمار می‌رفت.تقریبا همه چیز برای کامل شدن پروژه گنو آماده بود به جز هسته سیستم‌عامل! هسته سیستم‌عامل وظیفه برقراری ارتباط بین نرم‌افزار و سخت‌افزار و مدیریت اجرای برنامه‌ها رو داره. طراحی هسته به عنوان یکی از مهم‌ترین و پیچیده‌ترین بخش‌های سیستم‌عامل کار خیلی دشواری بود و روند کندی داشت. اما در گوشه دیگری از دنیا، تکه گم‌شده پازل استالمن در حال ساخت بود.در همان حول و حوش و در پایتخت فنلاند، لینوس توروالدز به طور مستقل و به تنهایی در حال توسعه هسته سیستم‌عاملی بود که امروز با نام لینوکس می‌شناسیم. اون کد سیستم‌عاملش رو با کامپایلر C گروه گنو و در سیستم‌عامل «minix» توسعه داده بود که یک سیستم‌عامل شبه یونیکس محسوب می‌شه. به گفته خودش، اون این پروژه رو صرفا برای سرگرمی انجام می‌داد و ناگهان متوجه شد که به طور اتفاقی هسته یک سیستم‌عامل کامل رو نوشته.در نهایت برنامه‌های نرم‌افزاری گروه گنو به سیستم‌عامل اضافه شدن و نتیجه این همکاری با نام گنو-لینوکس به دنیا عرضه شد. همونطور که قابل حدسه نام لینوکس از ترکیب نام لینوس و حرف X به نشانه یونیکس ساخته شده.جالب این‌جاست که هم‌زمان در دانشگاه کالیفرنیا در برکلی، سیستم‌عامل مشابه دیگه‌ای در حال توسعه بود و جالب‌تر این که محققان دانشگاه از وجود سیستم‌عامل‌ مشابه بی‌خبر بودند. این سیستم‌عامل در حال حاضر توسط «اپل» و خیلی از کمپانی‌های دیگه مثل «سیسکو» و «vmware» (وی‌ام ویر) استفاده می‌شه. اسم این سیستم‌عامل freeBSD هست که احتمالا با وجود شهرت کمپانی‌هایی که گفته شد، خیلی کم به گوشمون خورده.سوالی که پیش می‌آد اینه که این تفاوت از کجا سرچشمه می‌گیره؟ راز موفقیت و بقای گنو-لینوکس در چیه و چه‌طور تونسته این‌قدر محبوب باشه؟لاینس توروالدز یکی از بزرگ‌ترین برنامه‌نویس‌هاییه که جهان به خودش دیده. اون به تنهایی کاری رو انجام داد که بسیاری از گروه‌های بزرگ برنامه‌نویسی از انجامش عاجزن و تا حالا هم خودش بر به‌روزرسانی هسته لینوکس نظارت می‌کرده؛ اما جواب سوال ما در پشتیبانی خوب توروالدز از لینوکس نیست. بلکه در فلسفه عمیق استالمن نهفته است.فلسفه آزادیبنیاد فلسفه استالمن، مفهوم آزادیه. حقیقتی که در عین سادگی، پیچیده‌ است و هنوز هیچ فیلسوفی نتونسته توضیح دقیقی براش ارائه بده. همون‌طور که در ادامه می‌بینیم، فلسفه آزادی در سیستم‌عامل‌ها، خیلی شبیه فلسفه آزادی در سیاسته. همون آزادی‌ای که قرن‌ها در انقلاب‌های جهان فریاد زده می‌شد، این بار در جهان مدرن راهش رو به سیستم‌عامل‌ها باز کرد و انقلاب جدیدی شکل گرفت.نرم افزار آزاداستالمن برای حفاظت از آزادی نرم‌افزارهای گنو، لایسنس جدیدی به نام «GPL» رو منتشر کرد که در مقابل سیاست‌های کپی‌رایت قرار داشت. نرم‌افزاری که تحت گواهی GPL منتشر می‌شه، آزادی‌هایی رو برای استفاده کننده‌ها به همراه میاره که استالمن اون‌ها رو به درجات آزادی ۰ تا ۳ تقسیم کرد. بنا به این گواهی، کاربر باید بتونه نرم‌افزار رو به هر منظور و هرطور که می‌خواد اجرا کنه.در درجه بعد باید بتونه عملکرد برنامه رو مطالعه کنه و اگر خواست تغییراتی در اون به وجود بیاره که لازمه‌اش، دسترسی کاربر به کد اصلی برنامه است. کاربر می‌تونه آزادانه کپی‌هایی از برنامه رو منتشر کنه و اگر خواست، آزاده که برنامه رو بهبود بده و حتی با نام جدیدی منتشر کنه؛ البته مشروط به اینکه نرم‌افزار جدید هم تحت گواهی GPL باشه.لایسنس GPL پروانه جامع و کاملی بود که اولین پروانه «کپی‌لفت» محسوب می‌شد. کپی‌لفت یه جور بازی با کلمه کپی‌رایته که عملا از قانون کپی‌رایت در خلاف جهت اصلی استفاده می‌کنه و از انحصاری شدن اثر جلوگیری می‌کنه.شباهت جالبی وجود داره بین آزادی‌هایی که در گواهی GPL مشخص شدن و آزادی‌هایی که ایدئولوژی‌های فلسفی به اون پرداختن. ردپای این ایده‌ها به سادگی دیده می‌شه. مثلا در مکتب سوسیالیسم، هدف، ایجاد یک نظام اجتماعیه که همه طبقه‌های جامعه سهم یکسانی در سود نهایی داشته باشن. روشنه که در سیستم‌عامل گنو-لینوکس هم ایده مشابهی وجود داره و همین مشارکت همگانی باعث شده صدها توزیع از لینوکس توسعه داده بشه.یا از طرف دیگه مکتب آنارشیسم معتقده که تمام سلسله‌مراتب قدرت باید از بین بره و قدرت نباید در یک نقطه متمرکز بشه. دقیقا مشابه چیزی که در لینوکس می‌بینیم. هیچ‌کس در جامعه نرم‌افزارهای آزاد به شما نمی‌گه باید چه کاری انجام بدید. شما آزادید از سیستم‌عاملتون هر استفاده‌ای که دلتون خواست، بکنین :)استالمن با این کار نام خودش رو به عنوان پیشگام جنبش نرم‌افزار آزاد در تاریخ ثبت کرد. اون در ادامه بنیاد نرم‌افزارهای آزاد رو تاسیس کرد تا از این جنبش و به ویژه سیستم‌عامل گنو-لینوکس حمایت کنه.فلسفه نرم‌افزار آزاد مخالفانی هم داشت. به طوری که بعدها شاخه‌ای از این جنبش جدا شد که امروز با نام کمپین «Open Source» می‌شناسیم. این کمپین، نه به فلسفه آزادی، که صرفا به داشتن یک نرم‌افزار قدرتمند فکر می‌کنه و متن باز بودن رو روش بهینه‌ای برای این منظور می‌دونه.کاربردهای لینوکسلینوکس با انعطاف‌پذیری زیادی که داره، به سرعت تونسته جای خودش رو در دنیای تکنولوژی پیدا کنه. به دلیل اوپن سورس بودن این سیستم‌عامل، افراد بسیار زیادی به طور مداوم روی امنیت اون کار می‌کنن و مشکلاتی مثل باگ، حفره‌های ناامن و نقص‌های سامانه توسط این توسعه‌دهندگان در بروزرسانی‌ها رفع می‌شه.لینوکس در شبکه و اینترنت کاربردهای چشم‌گیری داره به طوری که گفته می‌شه از هر ۱۰ شرکت هاستینگ، ۵ شرکت از لینوکس در سیستمشون استفاده می‌کنن و ۷۰ درصد فایروال‌های موجود هم از این نوع سیستم‌عامل هستن.از لینوکس در زیرساخت نرم‌افزارهای معروفی با میلیون‌ها کاربر مثل MySQL, Apache, PHP, Python و خیلی از نرم‌افزارهای دیگه استفاده شده که نشون دهنده نقش پررنگ این سیستم‌عامل در جهانه. همچنین طبق آخرین آمار، از میان ۵۰۰ ابر کامپیوتر برتر دنیا، ۸۸ درصد اون‌ها از لینوکس به عنوان سیستم‌عامل خودشون استفاده می‌کنن!جالبه بدونین که توی ایستگاه فضایی بین‌المللی هر چیزی از یک نسخه لینوکس استفاده می‌کنه و همه سیستم های این ایستگاه در سال ۲۰۱۳ از ویندوز به لینوکس مهاجرت کردن. تیم فنی این ایستگاه ادعا کرده که اونا به یک سیستم‌عامل پایدار و قابل اعتماد نیاز دارن که بتونن اون رو کنترل کنن و هر موقع که بخوان تغییرات دلخواه و مورد نیازشون رو روش اعمال کنن.دلیل همه این‌‌ها، هزینه‌ بسیار پایین، سرویس‌های ایمن، نیاز به منابع بسیار کم سخت‌افزاری، توسعه‌ سریع توسط میلیون‌ها برنامه‌‌نویس و از همه مهم‌تر پایداری، آزاد و متن باز بودن لینوکسه.جمع بندیاین بود داستان یک سیستم‌عامل! سیستم‌عاملی که زیرساخت‌های قانونی و فلسفی جدیدی به دنیا عرضه کرد. اگر این زیربنا وجود نداشت، لینوکس هرگز در معنای امروز نمی‌تونست وجود داشته باشه.هر سیستم‌عاملی پشت خطوط کدش، یه فلسفه مشخص داره. از این به بعد وقتی با سیستم‌تون کار می‌کنین، به اون فلسفه هم فکر کنین :)راستی!در جهت خرسندی هرچه بیشتر شما، این نسخه از نشریه فرامتن، در قالب یه پادکست توسط اعضای انجمن علمی دانشگاه صنعتی اصفهان هم ارائه شده که می‌تونین از طریق صفحه «رادیو فرامتن» در کست‌باکس و کانال تلگرام فرامتن بهش دسترسی داشته باشین.همچنین اگه احساس می‌کنین که این نسخه براتون سودمند بود، با معرفی ما به دوستان‌تون می‌تونید برای ادامه راه ما رو یاری کنین :)به امید دیدار!</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Sat, 03 May 2025 23:54:29 +0330</pubDate>
            </item>
                    <item>
                <title>ازدواج پایدار؛ مسئله‌ای ساده اما عمیق</title>
                <link>https://virgool.io/@faramatn/%D8%A7%D8%B2%D8%AF%D9%88%D8%A7%D8%AC-%D9%BE%D8%A7%DB%8C%D8%AF%D8%A7%D8%B1-%D9%85%D8%B3%D8%A6%D9%84%D9%87-%D8%A7%DB%8C-%D8%B3%D8%A7%D8%AF%D9%87-%D8%A7%D9%85%D8%A7-%D8%B9%D9%85%DB%8C%D9%82-dmibx4mcpkvl</link>
                <description>به قلم عتید خدایی، ورودی ۴۰۰ مهندسی کامپیوتر دانشگاه صنعتی اصفهانبازنگری‌شده توسط پارسا شیرکوند و سارا چترایی، ورودی ۴۰۲ و ۴۰۰ کارشناسی مهندسی کامپیوتر صنعتی اصفهاندر این مطلب، قصد داریم درباره‌ی یک مسئله‌ی جالب ریاضی صحبت کنیم که درک آن نیازی به دانستن مشتق، انتگرال یا حتی ریاضیات دبیرستان ندارد؛ مسئله‌ی ازدواج پایدار!تصور کنید دو گروه هم‌اندازه  دختر و پسر داریم.هر فرد در هر گروه، اولویت‌های خاص خود را برای انتخاب شریک زندگی از گروه مقابل دارد. هدف ما این است که یک مجموعه از ازدواج‌های پایدار بر اساس این اولویت‌ها پیدا کنیم. اما اصلاً ازدواج پایدار یعنی چه؟بیایید مفهوم پایداری را بررسی کنیم. فرض کنید هر پسر با یک دختر جفت شده است. حالا اگر در این مجموعه، یک دختر (مثلاً آذر) و یک پسر (مثلاً بابک) وجود داشته باشند که با یکدیگر جفت نشده‌اند، اما هر دو یکدیگر را به همسر فعلی خود ترجیح می‌دهند، آنگاه یک ناپایداری رخ داده است. چنین وضعیتی مطلوب نیست، زیرا ممکن است این دو نفر، زوجیت خود را به هم زده و به سمت یکدیگر متمایل شوند. بنابراین، در یک ازدواج پایدار، هیچ دو نفری نباید وجود داشته باشند که همدیگر را به همسر فعلی‌شان ترجیح دهند.در سال ۱۹۶۲، گیل و شاپلی مقاله‌ای تحت عنوان &quot;College Admissions &amp; The Stability of Marriage&quot; منتشر کردند که در آن، الگوریتمی برای یافتن مجموعه‌ای از زوج‌ها به‌گونه‌ای که هیچ ناپایداری رخ ندهد، معرفی شد.بیایید برای درک بهتر این الگوریتم، یک مثال ساده از مقاله‌ی گیل و شاپلی را بررسی کنیم. فرض کنید چهار پسر به نام‌های آلفا، بتا، گاما و دلتا و چهار دختر به نام‌های A, B, C, D داریم.هر فرد لیستی از اولویت‌های خود را برای انتخاب همسر دارد. این اولویت‌ها را می‌توان در یک ماتریس رتبه‌بندی نمایش داد. در این ماتریس، هر عدد نشان‌دهنده‌ی رتبه‌ای است که یک پسر به یک دختر اختصاص داده است. مثلاً اگر آلفا دختر A را در رتبه‌ی اول و دختر D را در رتبه‌ی آخر قرار دهد، یعنی از نظر او A بهترین گزینه و D نامطلوب‌ترین گزینه است.چگونه ازدواج‌های پایدار را بیابیم؟بیایید ببینیم چگونه می‌توان یک مجموعه از ازدواج‌های پایدار را پیدا کرد. برای این کار، از الگوریتم گیل-شاپلی استفاده می‌کنیم که در آن پسرها به دخترها پیشنهاد ازدواج می‌دهند.۱. مرحله اول پیشنهادهای اولیه ارسال می‌شود. هر پسر به اولین دختری که در لیست اولویت‌هایش قرار دارد پیشنهاد ازدواج می‌دهد.آلفا → Aبتا → Aگاما → Bدلتا → D۲. در مرحله دوم پیشنهادها توسط دختران بررسی می‌شود. هر دختر از میان پیشنهادهایی که دریافت کرده، کسی را انتخاب می‌کند که برایش اولویت بالاتری دارد و بقیه را رد می‌کند:دختر A پیشنهاد آلفا را قبول می‌کند و به بتا پاسخ منفی می‌دهد.دختر B تنها یک پیشنهاد (از گاما) دریافت کرده، پس آن را قبول می‌کند.دختر D تنها پیشنهاد دلتا را دریافت کرده، پس آن را می‌پذیرد.۳. در مرحله سوم درخواست جدید از طرف پسری که رد شده است ارسال می‌شود. یعنی حالا پسری که رد شده است (بتا)، به دختر بعدی در لیست اولویت‌هایش پیشنهاد می‌دهد:بتا → D۴. مجددا درخواست‌ها توسط دختران بررسی می‌شود.دختر D حالا دو پیشنهاد دارد: بتا و دلتا. او کسی را انتخاب می‌کند که در لیست اولویت‌هایش جایگاه بالاتری دارد. بتا را انتخاب می‌کند و دلتا را رد می‌کند.دلتا که رد شده است، حالا به اولویت بعدی خودش درخواست می‌دهد:دلتا → B۵. چرخه ادامه پیدا می‌کند.دختر B حالا دو پیشنهاد دارد: دلتا و گاما. او دلتا را ترجیح می‌دهد و گاما را رد می‌کند.گاما که رد شده است، به اولویت بعدی‌اش درخواست می‌دهد:گاما → Aدختر A حالا دو پیشنهاد دارد: آلفا و گاما. او گاما را انتخاب می‌کند و آلفا را رد می‌کند.آلفا که رد شده است، به اولویت بعدی‌اش درخواست می‌دهد:آلفا → Bدختر B هنوز پسر دلتا را ترجیح می‌دهد، پس آلفا را رد می‌کند.آلفا که باز هم رد شده است، به اولویت بعدی‌اش درخواست می‌دهد:آلفا → Cدختر C تا این لحظه هیچ پیشنهاد دیگری دریافت نکرده است، بنابراین پیشنهاد آلفا را می‌پذیرد.بعد از این مراحل، همه‌ی افراد با یک زوج مطابق با الگوریتم جفت شده‌اند و دیگر هیچ پسر یا دختری نیست که کسی را خارج از این مجموعه ترجیح دهد که او هم متقابلاً همان احساس را داشته باشد. بنابراین، این یک مجموعه ازدواج پایدار است.کاربردهای الگوریتم ازدواج پایدار در دنیای واقعیالگوریتم گیل-شاپلی فقط یک مسئله‌ی ریاضی نیست؛ بلکه در سیستم‌های مختلفی برای تخصیص منابع و ایجاد مچینگ‌های بهینه مورد استفاده قرار می‌گیرد. در اینجا دو نمونه‌ی مهم از کاربردهای این الگوریتم را بررسی می‌کنیم: پذیرش دانشجو در دانشگاه‌ها ، مدیریت شبکه‌های کامپیوتری، اقتصاد، زیست‌شناسی و پایداری جوامع میکروبی و…..۱. سیستم پذیرش دانشگاه‌ها و دانشجویانهمان‌طور که اشاره کردیم، موضوع اصلی مقاله‌ی گیل و شاپلی در واقع اختصاص بهینه‌ی دانشجو به دانشگاه‌ها بود. در دهه‌ی ۱۹۶۰ و ۱۹۷۰، سیستم پذیرش دانشجو دچار مشکلات جدی بود. الگوریتم‌های سنتی مچینگ دانشجو و دانشگاه فقط در مقیاس‌های کوچک کارآمد بودند، اما زمانی که تعداد دانشجویان زیاد می‌شد، فرآیند پذیرش پیچیده و سردرگم‌کننده می‌شد. برای مثال، تصور کنید یک دانشکده در هر ترم مجبور بود تقاضای ۵۰۰ دانشجو را بررسی کند، در حالی که فقط ۵۰ نفر را می‌توانست بپذیرد. این فرآیند نه‌تنها برای دانشجویان، بلکه برای دانشگاه‌ها نیز چالش‌برانگیز بود.راه‌حل گیل و شاپلی؛ الگوریتم آن‌ها باعث شد که فرآیند تخصیص دانشجو به دانشگاه‌ها به‌صورت خودکار و بهینه انجام شود. در این روش، دانشجویان بر اساس اولویت‌هایشان دانشگاه‌ها را انتخاب می‌کنند و دانشگاه‌ها نیز بر اساس اولویت‌های خود دانشجویان را پذیرش می‌کنند. در نهایت، این فرآیند به شکلی پیش می‌رود که همه‌ی پذیرش‌ها پایدار باشند و هیچ دانشجویی دانشگاهی را که به او پیشنهاد نداده ترجیح ندهد.جالب است بدانید که سیستم پذیرش دانشجو در ایران نیز بر اساس همین الگوریتم کار می‌کند! زمانی که دانش‌آموزان انتخاب رشته می‌کنند، سامانه‌ی سازمان سنجش با استفاده از همین روش، دانشجویان را به دانشگاه‌های مختلف اختصاص می‌دهد.۲. مدیریت شبکه‌های کامپیوتری (کلاینت و سرور)حالا بیایید به دنیای کامپیوتر و اینترنت سر بزنیم. شاید فکر کنید این الگوریتم فقط در مسائل انسانی به کار می‌رود، اما واقعیت این است که یکی از مهم‌ترین کاربردهای آن در مدیریت شبکه‌ها و ارتباطات دیجیتالی است.فرض کنید شما یک سرور هستید!سرور در دنیای کامپیوتر، یک کامپیوتر مرکزی است که به درخواست‌های کاربران پاسخ می‌دهد. حالا تصور کنید که سه کاربر هم‌زمان به شما درخواست‌هایی ارسال می‌کنند:کاربر اول: می‌خواهد یک ایمیل ارسال کند.کاربر دوم: در حال تماشای یک مسابقه‌ی فوتبال به‌صورت آنلاین است.کاربر سوم: در حال مکالمه‌ی ویدیویی با دوستش است.سؤال مهم این است که کدام درخواست باید اول پردازش شود؟ شما به‌عنوان یک سرور، نمی‌توانید به‌صورت هم‌زمان به همه‌ی درخواست‌ها پاسخ دهید، بنابراین باید آن‌ها را بر اساس اولویت پردازش کنید.الگوریتم اولویت‌بندی سرور: سرور درخواست‌ها را بر اساس میزان اهمیت و حساسیت زمانی آن‌ها مرتب می‌کند:مکالمه‌ی تصویری: بالاترین اولویت را دارد، چون اگر بسته‌های داده با تاخیر ارسال شوند، کیفیت تماس کاهش پیدا می‌کند و کاربران تجربه‌ی بدی خواهند داشت.تماشای مسابقه‌ی فوتبال: اولویت کمتری دارد، چون چند میلی‌ثانیه تاخیر ممکن است مشکل بزرگی ایجاد نکند.ارسال ایمیل: کمترین حساسیت زمانی را دارد، زیرا اگر چند ثانیه دیرتر فرستاده شود، معمولاً مشکلی به وجود نمی‌آید.در نتیجه، سرور ابتدا درخواست کاربر سوم را پردازش می‌کند، سپس درخواست کاربر دوم را انجام می‌دهد، و در نهایت، ایمیل کاربر اول را ارسال می‌کند.۳. اقتصاد و تخصیص پایدار منابعاقتصاد، علمی است که به تخصیص منابع محدود به افراد نیازمند می‌پردازد. از همین تعریف ساده می‌توان فهمید که مسئله ازدواج پایدار می‌تواند در اقتصاد نقش کلیدی داشته باشد. جالب است بدانید که جایزه نوبل اقتصاد در سال ۲۰۱۲ به طور مشترک به لوید شاپلی و الوین روث برای تحقیقاتشان در زمینه‌ی &quot;تخصیص پایدار و طراحی بازار&quot; اهدا شد.در اکثر بازارهای اقتصادی، تعادل بین عرضه و تقاضا با مفهوم قیمت (پول) سنجیده می‌شود. اما برخی از بازارها چنان دارای محدودیت‌های اخلاقی و قانونی هستند که نمی‌توان معاملات را تنها بر اساس پول انجام داد. یکی از بارزترین مثال‌ها بازار پیوند عضو، به‌ویژه تبادل کلیه است.فرض کنید بیمار ۱ نیازمند کلیه است، و شخص ۲ داوطلب اهدای کلیه به اوست، اما کلیه‌ی شخص ۲ با بدن بیمار ۱ سازگار نیست.از طرف دیگر، بیمار ۳ نیازمند کلیه است، و شخص ۴ قصد دارد کلیه‌اش را به او اهدا کند، اما تطابق وجود ندارد.اما اگر کلیه‌ی شخص ۲ با بیمار ۳ سازگار باشد و کلیه‌ی شخص ۴ با بیمار ۱، می‌توان این جابجایی را انجام داد و دو زندگی را نجات داد.این همان مفهوم &quot;پایداری&quot; در پیوند عضو است که شباهت زیادی به مسئله ازدواج پایدار دارد و امروزه در بسیاری از برنامه‌های تطبیق اهدای عضو از آن استفاده می‌شود.۴. کاریابی و مچینگ کارفرما و کارجودر بازار کار، ارتباط میان کارفرماها و کارجویان دقیقاً مشابه مسئله‌ی ازدواج پایدار است. کارفرماها لیستی از اولویت‌های خود برای جذب نیرو دارند و کارجویان نیز اولویت‌هایی برای انتخاب شغل مناسب. یک مثال جالب از این کاربرد در چین اتفاق افتاد. در سال ۲۰۱۶، به دلیل سیاست‌های جدید فرزندآوری، تقاضا برای پرستار بچه ۴۷٪ افزایش یافت.&quot;لویین وانگ&quot; با استفاده از الگوریتم گیل-شاپلی، پلتفرم ORSB را طراحی کرد که خانواده‌ها و پرستاران کودک را به شیوه‌ای بهینه و پایدار به یکدیگر متصل کند. این پلتفرم روند استخدام را آسان‌تر و مطمئن‌تر کرد.امروزه بسیاری از سایت‌های کاریابی آنلاین نیز از این الگوریتم برای تطبیق بهترین کارجویان با بهترین فرصت‌های شغلی استفاده می‌کنند.۵. فیزیک و مکانیک آماریاین الگوریتم حتی در فیزیک و مدل‌های پیچیده‌ی مکانیک آماری هم وارد شده است.در مکانیک آماری، یکی از موضوعات مهم، بررسی پایداری سیستم‌های فیزیکی در شرایط اولیه‌ی مختلف است. الگوریتم گیل-شاپلی می‌تواند برای حل مسائل بهینه‌سازی انرژی در سیستم‌های فیزیکی استفاده شود، جایی که هر ذره تمایل دارد در حالت بهینه‌ی خود قرار بگیرد، درست مانند جفت شدن پایدار در مسئله ازدواج پایدار.۶. حل جدول سودوکوحتی حل پازل‌هایی مثل سودوکو می‌تواند با الهام از مسئله‌ی ازدواج پایدار انجام شود!مقاله‌ای با عنوان &quot;The Stable Matching Problem &amp; Sudoku&quot; نشان داده که می‌توان نوع جدیدی از سودوکو را با این الگوریتم حل کرد، به این صورت که هر عدد در جدول به عنوان یک زوج احتمالی در نظر گرفته شود و مسئله را مانند یک مچینگ پایدار بررسی کرد.۷. زیست‌شناسی و پایداری جوامع میکروبیحتی جوامع میکروبی نیز می‌توانند از مدل ازدواج پایدار برای توضیح نحوه‌ی تعامل گونه‌های مختلف در یک اکوسیستم استفاده کنند.جوامع میکروبی از هزاران گونه‌ی مختلف از باکتری‌ها و میکروارگانیسم‌ها تشکیل شده‌اند. هر گونه‌ی میکروبی، اولویت‌های غذایی خاص خود را دارد و وقتی منابع غذایی در محیط تغییر می‌کنند، باکتری‌ها ابتدا غذای مورد علاقه‌شان را مصرف می‌کنند و سپس به گزینه‌های بعدی می‌روند.این فرایند مشابه مدل‌سازی پایداری در ازدواج پایدار است، جایی که هر میکروب یک انتخاب بهینه دارد و تعاملات آن با سایر میکروب‌ها یک مجموعه‌ی پایدار ایجاد می‌کند.۸. آموزش ریاضی در مدارسیک کاربرد جالب دیگر از این الگوریتم در آموزش ریاضی دبیرستان است.در یک پایان‌نامه‌ی منتشر شده در سال ۲۰۱۵ با عنوان &quot;The Stable Marriage Problem &amp; Its Application In The High School Classroom&quot;، اشاره شده که آموزش الگوریتم گیل-شاپلی در کلاس‌های درس می‌تواند انگیزه‌ی دانش‌آموزان را برای یادگیری نظریه گراف و طراحی الگوریتم افزایش دهد. از آنجایی که بسیاری از دانش‌آموزان دبیرستانی به روابط عاطفی علاقه‌مند هستند، استفاده از این مسئله می‌تواند روشی جذاب برای تدریس ریاضیات باشد!می‌توان در پایان گفت الگوریتمی که دنیا را تغییر داد:الگوریتم گیل-شاپلی بود؛ در نگاه اول ممکن است یک مسئله‌ی ساده‌ی ریاضی به نظر برسد، اما همان‌طور که دیدیم، کاربردهای گسترده‌ای در دنیای واقعی دارد. از پذیرش دانشجو و کاریابی گرفته تا مدیریت شبکه‌های کامپیوتری، بهینه‌سازی در فیزیک، مدل‌سازی جوامع میکروبی و حتی آموزش ریاضیات، این الگوریتم یکی از پرمصرف‌ترین و پرکاربردترین الگوریتم‌های ریاضی در دنیای مدرن است.دفعه‌ی بعد که به پذیرش دانشگاه، یافتن شغل، یا حتی حل سودوکو فکر کردید، به یاد بیاورید که در پشت صحنه‌ی این فرآیندها، یک الگوریتم ریاضی هوشمند در حال کار است!</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Mon, 21 Apr 2025 00:11:34 +0330</pubDate>
            </item>
                    <item>
                <title>تولدهای غافلگیرکننده (احتمالات گیج‌کننده)</title>
                <link>https://virgool.io/@faramatn/%D8%AA%D9%88%D9%84%D8%AF%D9%87%D8%A7%DB%8C-%D8%BA%D8%A7%D9%81%D9%84%DA%AF%DB%8C%D8%B1%DA%A9%D9%86%D9%86%D8%AF%D9%87-%D8%A7%D8%AD%D8%AA%D9%85%D8%A7%D9%84%D8%A7%D8%AA-%DA%AF%DB%8C%D8%AC-%DA%A9%D9%86%D9%86%D8%AF%D9%87-qwppd4xzvqci</link>
                <description>به قلم امیرارسلان یاوری، ورودی 98مهندسی کامپیوتر دانشگاه صنعتی اصفهانبازنگری‌شده توسط پارسا شیرکوند، ورودی 402 کارشناسی مهندسی کامپیوتر صنعتی اصفهاناگه تو یه کلاس ۷۵ نفره نشسته باشین و استادتون جلسه اول بیاد داخل کلاس و بگه کسی حاضره که با من شرط ببنده که اگه حداقل ۲ نفر روز تولد یکسانی در سال داشته باشن از شما ۲ نمره کم کنم اما در غیر این صورت به شما ۲۰ بدم، شما حاضرین این شرط رو باهاش ببندین؟ (فرض کنین هیچ‌ کدوم از ۷۶ نفر داخل کلاس هم تاریخ تولد هیچ کسی رو نمی‌دونن).یا اگه کلاس ۲۳ نفره بودین و استادتون می‌گفت اگه حداقل دو نفر تاریخ تولد یکسان داشتن ۴ نمره کم می‌کنم ازتون و در غیر این صورت ۴ نمره بهتون اضافه می‌کنم چطور؟حالا اگه استادتون یه سکه گرفته باشه دستش و بگه من سکه رو می‌ندازم اگه رو اومد ۲ نمره کم می‌کنم ولی اگه پشت اومد ۲ نمره بهتون میدم چی؟ بازم حاضرین شرط ببندین؟خب راستش همه‌مون همون شرط اول رو می‌پذیریم و احتمالا با خودمون می‌گیم ببین تو ۳۶۵ روز سال واقعا احتمالش خیلی کمه که دو نفر تو یه روز به دنیا اومده باشن. حتی تو دومی می‌گیم دیگه محال ممکنه که از ۲۳ نفر ۲ نفر تو یه روز از سال بدنیا اومده باشن پس حتما شرط رو ببندم که استاده میخواد ۴ نمره مفتی بهم بده. احتمالا هم همه‌ی ما فکر می‌کنیم شرایط دو شرط اولیه نسبت به اون شرطی که با سکه بسته می‌شه خیلی بهتره و مادامی که شرط اول و شرط دوم هست اصلا چرا به شرط سوم فکر کنیم. خب خبر بد ماجرا اینه که ما اشتباه فکر می‌کنیم :) حالا داستان چیه؟داستان اینه که شرط دوم (یعنی اونی که ۲۳ نفر باشین) یه مسئله‌ معروفه به اسم &quot;Birthday Paradox&quot; که می‌گه تو چنین شرایطی با احتمال بیش از یک دوم دو نفر تاریخ تولد یکسانی خواهند داشت؛ احتمالا هنوز هم پذیرفتنش براتون سخته؛ پس بیاید با هم دیگه احتمالش رو حساب کنیم. احتمال اینکه تاریخ تولد حداقل دو نفر در یک روز باشه، در واقع می‌شه ۱ (احتمال کل) منهای این که تمامی افراد در روز‌های متفاوتی به دنیا اومده باشن. پس داریم:برای نفر اوّل ۳۶۵ حالت مختلف وجود داره؛ پس 365/365 ام احتمال داره برای نفر دوم چون قراره تو روز دیگه‌ای متولد شده باشه پس ۳۶۴/۳۶۵ ام حالت هست و به همین ترتیب برای نفر i ام ۳۶۵ منهای i به روی ۳۶۵ احتمالش خواهد بود. عدد حاصله رو از یک که کم کنیم احتمال نقیض P محاسبه شده (یعنی احتمال اینکه تاریخ تولد تمامی افراد متفاوت نباشد محاسبه شده). این توضیحی که دادیم در واقع همون فرمول بالاست. خب دیگه قضیه خیلی راحت شد! فقط کافیه عبارت بالا رو یک بار برای ۲۳ و یک بار برای ۷۵ حساب کنین که اون وقت می‌بینین برای ۲۳ احتمال ۰/۵۰۷۳ و برای ۷۵ برابر ۰/۹۹۹۷ هست :)خب حالا چرا احتمالش اینطوری می‌شه؟ اگه شهود احتمالی خوبی داشتین، همون خط اول این متن متوجه این موضوع شاید می‌شدین ولی ما آدما اصولا حتی اگه خیلی منطقی هم باشیم به آمار و احتمال مسلط هم باشیم گاهی وقتا حسی تو ذهن‌مون فکر می‌کنیم. ماجرا اینه که همه‌ی ما می‌دونیم ضرب هر عددی در صفر برابر صفر می‌شه؛ در واقع توی این سلسله‌ضرب‌ها ما در حال ضرب کردن یه عدد کسری‌ (حتی می‌شه ۱ در نظرش گرفت) در یه عدد کم‌تر هستیم(چون رفته‌رفته صورت کسر کوچیک‌تر می‌شه) و در نتیجه، مقدار حاصل‌مون هم مرحله‌ به مرحله کمتر می‌شه.من تکه کد پایتونی زیر رو هم براتون گذاشتم که اگه دوست داشتین با تغییر متغیر n بتونین برای هر تعداد احتمالش رو به دست بیارین:خب حالا این رو فهمیدیم که نباید اون شرط‌ها رو با استادمون ببندیم چون تو اولی که یه جورایی قطعا بازنده‌ایم و توی مورد دوم هم احتمال پیروزی‌مون توی شیر یا خط کردن با سکه بیشتر از شانس‌‌مون توی این شرطه :)حالا مسئله اصلی اینه که این مسئله در کجای زندگیمون کاربرد داره؟ مثلا اگه درس ساختمان داده رو گذروندین و با مبحث توابع Hash آشنایی دارین (توابع Hash توابعی هستن که هر ورودی با هر سایزی رو به یک خروجی با سایز معین تبدیل می‌کنن). برای یادآوری کوتاه میتونین به عکس زیر دقت کنین. هر ورودی که از تابع Hash می‌گذره و مپ می‌شه به یه سطر از جدول خروجی.خب همون‌طور که می‌دونین ما انتظار داریم که Collision توی خروجی تابع Hashمون کم باشه تا بتونیم از O(1) بهش دسترسی داشته باشیم (مثلا اگه تمامی خروجی‌های تابع Hash ما در یک خانه قرار بگیرن بعدا در زمان دسترسی بهشون باید از O(n) زمان مصرف کنیم). خب تا اینجا براتون واضحه که اگه یه تابع Hash داشته باشیم و خروجیش یه جدول ۳۶۵ تایی باشه بعد از چه تعداد با چه احتمالی ممکنه Collision رخ بده :) پس برای یک تابع Hash نمی‌تونیم فقط به Randomness اعتماد کنیم.بگذریم؛تو مبحث امنیت هم ما یک نوع حمله داریم که اسمش &quot;Birthday Attack&quot; هست و بر اساس همین مسئله &quot;Birthday Paradox&quot; تعریف شده و از طریق Collision توابع Hash حمله صورت می‌گیره. مثلا فرض کنین یک تابع Hash داریم که خروجیش ۱۰۰۰ تایی باشه؛ بعد از ۱۰۰ تا مقدار، احتمالا ۵ تا Collision خواهیم داشت و حتی بعد از ۲۵۰ تا، به ۳۱ Collision خواهیم رسید که آمار بدیه (منطقیه تعداد Collision به صورت نمایی با افزایش تعداد نمونه‌ها افزایش پیدا می‌کنه). آقای Wang و همکارانش در سال ۲۰۰۵ روی همین مسئله تحقیق کردن و نشون دادن که SHA1 و MD5 برای توابع Hash ضعیف هستن؛ چرا که شما اگه 2¹²⁸ حالت ممکنه داشته باشین با 2⁶³ تا حالت می‌تونین یک Collision پیدا کنین و به همین دلیل فضای سرچ رو به میزان خیلی قابل توجهی کاهش دادین. حالا اصلا چرا Collision مهمه؟ فرض کنین قراردادی صورت می‌گیره و Hash فایل قرارداد به عنوان تضمین قرار داده می‌شه؛ بعدا قرارداد با یک نسخه‌ی جعلی که Hash یکسانی با قرارداد اصلی داره، جایگزین بشه و کلاه‌برداری صورت بگیره :دی.خب اگه بیشتر بگردین احتمالا به مسائل جالب‌تری هم تو این حوزه برسین. (مثلا تو رفرنس سوم چند تا مثال دیگه هم هست که دوست داشتین بخونین‌شون) اما من درکل دلم می‌خواست هم با مسئله‌ &quot;Birthday Paradox&quot; آشنا بشیم، هم حواسمون به Multiplicative Sequences Limit Behavior باشه و بر همین اساس از این به بعد سعی کنیم ذهن‌مون احساسی به مسئله نگاه نکنه. (مثلا اگه یه تاس رو ۱۰ بار انداختیم و ۶ نیومده پس توی ذهنمون نگیم چون ۱۰ بار ۶ نیومده پس دیگه این‌ سری باید ۶ بیاد؛ آخه متغیرمون مستقله و حتی اگه ۱۰۰۰ بار هم ۶ نیومده باشه برای بار ۱۰۰۱ ام احتمال ۶ اومدن ⅙ هستش :دی)منابع:https://betterexplained.com/articles/understanding-the-birthday-paradox/https://arishs.medium.com/the-birthday-paradox-and-collisions-in-a-hashtable-e32ce611f5chttps://builtin.com/articles/birthday-paradoxhttps://eprint.iacr.org/2007/474.pdf</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Sat, 08 Mar 2025 21:20:10 +0330</pubDate>
            </item>
                    <item>
                <title>What’s the Internet and how we use it?</title>
                <link>https://virgool.io/@faramatn/whats-the-internet-and-how-we-use-it-lgyhjtucwles</link>
                <description>❤️In the name of who connects hearts to each other❤️compiled by Ali Najjarzadegan, CE student 1402 at IUTrevised by Cessa IUT Network GroupResearch coverIntroduction:This research has been prepared solely for increasing personal awareness and is suitable for those who know nothing about networks and the process of connecting to and using the internet. Here, we have tried to use a simple, everyday process to demonstrate what the internet we use is and how it works. The main source for this research came from the *Computer Networking: A Top-Down Approach* book, and for some supplementary and more detailed content, other sources like YouTube and ChatGPT have been used.About the front cover:The phrase “for dummies” has become synonymous with making learning accessible. With over 2,500 titles and more than 200 million copies sold worldwide, the For Dummies series has helped millions of readers grasp complex topics in a simple and approachable way. These books aim to break down barriers to learning, ensuring that anyone can gain new knowledge, no matter their starting point. At the end of the line, it’s all for fun!Introducing a Daily Action, but Sophisticated:You decide to send a “Merry Christmas” greeting to your friend via Telegram. After connecting your phone to the internet and typing the message in their chat window, you press the send button. The message is sent to Telegram. It undergoes the necessary processing, including storage, encryption, and data analysis. A single checkmark appears, indicating the message has been uploaded to the system and sent to your friend. The internet must then find your friend, deliver the message from Telegram&#x27;s servers to their phone, and make the necessary changes on their device. This involves a signal containing the message and some instructions. This process happens every day, but we rarely notice its complexity. In this article, we aim to break down this process layer by layer and deepen our understanding of network communication.What is the internet (1st step)?At its core, the internet is a massive global network of interconnected computers that can communicate with each other to share information. It’s a collection of millions of smaller networks (like those in homes, businesses, data centers, universities) all linked together.1. Network of Networks:The internet is often described as a &quot;network of networks.&quot; It connects various networks—home WiFi, corporate networks, mobile networks, and massive data centers—so they can communicate with each other.These networks are connected using physical infrastructure, like fiber-optic cables, satellites, undersea cables, and wireless technologies (like 4G/5G or WiFi).2. Data Transfer Using Protocols:The internet works by transferring data (like text, images, and videos) between devices using a set of agreed-upon rules called protocols.The most important protocol is TCP/IP (Transmission Control Protocol/Internet Protocol). These protocols break the data into small packets, send them across the network, and then reassemble them at the destination.IP addresses are unique identifiers for devices on the internet (like your phone or a server). Every device connected to the internet has an IP address, so it can be found and communicated with.3. The Role of ISPs (Internet Service Providers):To access the internet, you need an ISP (Internet Service Provider). Your ISP connects your home or mobile device to the broader internet.ISPs use routers, switches, and fiber-optic cables to send and receive data between your device and other networks. These ISPs link you to the global internet backbone.4. Servers and Clients:The internet is made up of clients(like your phone, laptop, or browser) and servers (computers that store and serve content like websites, apps, or data).When you browse a website, your device (the client) sends a request to the website’s server, which then responds by sending the content (the web page) back to your device.Servers are often housed in large data centers and are responsible for storing and managing data. Services like Google, Amazon, or Netflix use massive server networks to provide content.5. How the Internet Routes Data:When you send or request information (like sending a message on Telegram or watching a video), the data is divided into packets. These packets are sent from your device through your ISP and across various routers and switches on the internet until they reach their destination.Routers decide the best path for these packets to travel to reach their destination efficiently. Think of it like a delivery service deciding the best route to deliver packages.The packets don’t always travel together; they might take different paths and get reassembled when they reach the destination.6. Websites and the World Wide Web:One of the most common uses of the internet is accessing the World Wide Web (or just &quot;the web&quot;). The web is a collection of websites and web pages that use the HTTP (Hypertext Transfer Protocol) to transfer information.Websites are stored on servers, and when you type a URL (like www.google.com) into your browser, it sends a request to the server that stores that website. The server then sends the web page back to your browser.7. Other Internet Services:Besides the web, the internet supports many other services:o Email (using protocols like SMTP, IMAP).o Messaging apps (like Telegram, WhatsApp).o Video streaming (like Netflix, YouTube).o Voice over IP (VoIP) services (like Skype, Zoom).o Cloud computing (services that store and process data remotely, like Google Drive, AWS).8. Physical Infrastructure:Undersea cables are critical to the internet, connecting continents across the ocean. These fiber-optic cables carry massive amounts of data across the globe.On land, the internet relies on fiber-optic and copper cables, wireless towers, satellites, and data centers to move data around.9. Simple Analogy:Think of the internet like a postal system:The &quot;letters&quot; (data) are sent in small &quot;envelopes&quot; (packets).The &quot;addresses&quot; are the IP addressesthat help deliver these letters to the right place.The &quot;post office&quot; is the network of routers and ISPs that direct and sort the letters along the way.The servers are like houses where the letters (websites, emails) are stored.What is the internet (2nd step)?In networking, the concept of layers helps break down the complex process of communication into manageable pieces. The most widely recognized model for explaining network layers is the OSI (Open Systems Interconnection) Model. Another commonly used model is the TCP/IP (Transmission Control Protocol/Internet Protocol) Model, which is more aligned with how the modern internet works.1. OSI Model (7 Layers)The OSI Model breaks down network communication into 7 layers, with each layer responsible for specific tasks. The layers communicate with the layer above and below them, but each layer operates independently.Layer 1: Physical LayerFunction: This layer is responsible for the physical transmission of raw data bits over a communication medium (like cables, fiber optics, or radio waves).Examples:Cables (Ethernet, fiber optics)WiFi signalsPhysical hardware like switches and hubsLayer 2: Data Link LayerFunction: The data link layer handles the node-to-node communication and organizes raw data bits into frames for error-free delivery across the physical link. It also handles MAC addressing (Media Access Control), ensuring that the data is directed to the right device.Examples:Ethernet (wired LAN)WiFi (wireless LAN)MAC addresses (unique identifiers for network interfaces)Layer 3: Network LayerFunction: This layer is responsible for routing the data packets across multiple networks and determining the best path for data to reach its destination. This is where IP addressing and packet forwarding take place.Examples:IP (Internet Protocol)IPv4 and IPv6Layer 4: Transport LayerFunction: The transport layer manages end-to-end communicationand ensures that data is transmitted reliably and in the correct sequence. It handles error correction and flow control. Two common protocols here are TCP (reliable, connection-oriented) and UDP (unreliable, connectionless).Examples:TCP (Transmission Control Protocol)UDP (User Datagram Protocol)Layer 5: Session LayerFunction: This layer establishes, manages, and terminates sessions(communication between two devices). It maintains these connections and ensures proper synchronization.Examples:Sessions in web applications (logging into a website)Remote desktopLayer 6: Presentation LayerFunction: The presentation layer is responsible for data translation, encryption, and compression. It ensures that data sent from the application layer of one system can be understood by the application layer of another system.Examples:Data encryption (e.g., SSL/TLS)Data compression (e.g., JPEG, MP3)Character encoding (e.g., ASCII, Unicode)Layer 7: Application LayerFunction: This is the closest layer to the user. It provides interfaces and protocols for applications to access network services, such as web browsing, email, or file transfer.Examples:HTTP/HTTPS (for web browsing)FTP (File Transfer Protocol)SMTP (Simple Mail Transfer Protocol) for emailDNS (Domain Name System)2. TCP/IP Model (4/5 Layers)The TCP/IP Model is simpler and more directly aligned with how the internet functions. It has 4 layers, but they roughly correspond to the OSI layers. Here’s a comparison with the OSI model.Layer 1: Link Layer (OSI Layers 1 &amp; 2)Function: Combines the functions of the OSI Physical and Data Link layers. This layer handles physical network hardware and the transmission of data within a single network segment (e.g., your home WiFi).Examples:Ethernet, WiFiARP (Address Resolution Protocol)Layer 2: Internet Layer (OSI Layer 3)Function: Corresponds to the OSI Network Layer. This layer is responsible for routing packets across networks. It’s where IP addresses are used to send data from one device to another across the internet.Examples:IP (Internet Protocol)ICMP (Internet Control Message Protocol) for error reportingLayer 3: Transport Layer (OSI Layer 4)Function: Equivalent to the OSI Transport Layer. It ensures that data is reliably transmitted from one device to another. It uses protocols like TCP for reliable transmission and UDP for faster, but less reliable, transmission.Examples:TCP (Transmission Control Protocol)UDP (User Datagram Protocol)Layer 4: Application Layer (OSI Layers 5-7)Function: This combines the Session, Presentation, and Application layers of the OSI model. It’s responsible for protocols that allow applications to communicate across the network.Examples:HTTP/HTTPS (web browsing)SMTP (email)FTP (file transfer)3. How the Layers Work Together:When you send a message (like a web request or an email), it moves down through the layers, from the Application layer (where the request is created) to the Physical layer (where it’s turned into electrical signals and sent across a network).When data reaches the destination, it moves upthe layers, from the Physical layer back to the Application layer, where the message is received and displayed.Connecting to Internet via Sim card planWhen you turn on your mobile data, your phone is connecting to your mobile service provider’s network, which allows you to access the internet using data from your SIM card plan. Here&#x27;s what happens in that moment:Phone Contacts the Nearest Cell Tower: When you enable mobile data, your phone sends a signal to the nearest cell toweroperated by your service provider. This is like your phone &quot;announcing&quot; its presence and saying, &quot;I&#x27;m ready to access the internet.&quot;Authentication &amp; Connection Setup: The cell tower communicates with your service provider’s network to verify your SIM card and that you have a valid data plan. It checks your account to see if you have enough credit for mobile data.Assigning an IP Address: Your phone is assigned a temporary IP address by the mobile network. This IP address is like your phone&#x27;s identifier on the internet, which it uses to send and receive data. This makes your phone a part of the internet, ready to communicate with other devices or services (like Telegram&#x27;s servers).Data Route Established: The mobile network establishes a data route, allowing your phone to send and receive internet traffic. It connects you to the wider internet through gateways that link the mobile network to the global internet.Connecting to Internet via Wi-Fi and Hotspot planWhen you enable Wi-Fi, your phone starts scanning the air for nearby Wi-Fi signals. It looks for Wi-Fi access points (like your home modem/router) that broadcast their SSID (the Wi-Fi network name). Your home modem broadcasts this signal so your phone can detect it.Phone and Modem Handshake: Once you select your home Wi-Fi network and enter the password (if required), your phone and the modem perform a handshake. This handshake involves:Authentication: The modem checks whether the password entered matches its stored credentials. If it’s correct, your phone is allowed to connect.Encryption Setup: A secure, encrypted connection is established between your phone and the modem (using protocols like WPA2). This ensures that data exchanged over the Wi-Fi connection is protected.IP Address Assignment (DHCP): Once connected, your modem acts as a local network gateway. It assigns your phone a local IP address using a system called DHCP (Dynamic Host Configuration Protocol). This IP address is used within your home network to identify your phone, and it helps route data to and from your device within the local Wi-Fi.Routing to the Internet: After your phone is assigned a local IP, the modem routes your internet traffic to your ISP (Internet Service Provider). This process involves converting data from your local Wi-Fi network into a form that can travel across the internet. Your modem has a public IP addressassigned by your ISP, and it uses a process called NAT (Network Address Translation) to map the private local IP (your phone’s) to the public IP, allowing your phone to access websites and services like Telegram.Connection Established: Once your modem connects your phone to the internet, your apps (like Telegram) can begin communicating with their respective servers. Telegram checks for updates, syncs messages, and prepares to send/receive data, just like when you used mobile data.Connecting to Internet via other waysIn any other way you connect to the internet, something similar to the two scenarios mentioned above happens. Whether it&#x27;s Internet Tethering or Satellite Internet, by examining the same conditions, they facilitate the process for us and allow access.We give an example from the reference book to better understand the working details of the Internet:Packet-switched networks (which transport packets) are in many ways similar to transportation networks of highways, roads, and intersections (which transport vehicles). Consider, for example, a factory that needs to move a large amount of cargo to some destination warehouse located thousands of kilometres away. At the factory, the cargo is segmented and loaded into a fleet of trucks. Each of the trucks then independently travels through the network of highways, roads, and intersections to the destination warehouse. At the destination warehouse, the cargo is unloaded and grouped with the rest of the cargo arriving from the same shipment. Thus, in many ways, packets are analogous to trucks, communication links are analogous to highways and roads, packet switches are analogous to intersections, and end systems are analogous to buildings. Just as a truck takes a path through the transportation network, a packet takes a path through a computer networkHow the Network (Cell Tower) Finds You1. Phone Constantly Communicates with Cell Towers:Your phone is always “checking in” with nearby cell towers, even when you’re not actively using it. This is called cell tower registration or location updating.Every phone has a unique identifier called an IMSI (International Mobile Subscriber Identity), stored in the SIM card. This identifier tells the network which SIM card (and therefore which phone) is connected.As you move around, your phone constantly searches for the nearest, strongest cell tower signal. Once it finds a nearby tower with a strong signal, it connects to that tower.2. Location Areas (LAs) and Tracking Areas (TAs)The mobile network divides the region into Location Areas (in 2G/3G networks) or Tracking Areas (in 4G/5G networks). Each area covers multiple cell towers.When your phone moves between different location areas or tracking areas, it registers its new location with the network. This process is called a Location Update.If the network needs to send data (like a call or mobile internet) to your phone, it knows which area your phone is in and which tower to use to reach you.3. Paging: Finding You for Calls or DataWhen someone calls you or when mobile data needs to be sent to you, the network uses a process called paging. Paging is when the network sends a signal to all cell towers in the area to “ask” which one has your phone connected.Your phone responds to the tower it’s connected to, telling the network, “I’m here!”After that, the cell tower knows your exact location and establishes a connection with your phone to route the call or data (like mobile internet) to you.4. What Happens When You Move Around?As you move through different areas (like driving through the city), your phone will continue to switch between different cell towers, a process called handover (or handoff in the US).The network ensures that as you move, your phone stays connected to the nearest, strongest cell tower. This way, you can stay on your call or use mobile data without interruption.5. What About Mobile Data?When you use mobile data, the process is similar to a call. Your phone communicates with the nearest cell tower to send and receive data. The data travels from your phone to the tower, and the tower routes it to the wider internet via your mobile network provider.How the Cell Tower Knows Your Location1. Cell Tower Location Areas:When your phone is idle (not actively making a call or using data), it&#x27;s still connected to the nearest cell tower. The network knows your phone is within the coverage area of that tower, which could be several kilometres wide, depending on the area (urban vs rural).The network does not need to know your precise location all the time. Instead, it tracks your Location Area (LA)(in older networks) or Tracking Area (TA) (in newer 4G/5G networks). Your phone only updates its position when it moves from one area to another.2. Signal Strength &amp; Cell Sectors:Signal strength plays a key role in determining which tower you are connected to. Your phone will generally connect to the tower with the strongest signal, which is usually the nearest one.Cell towers typically have multiple sectors(antennas pointing in different directions), which divide the area around the tower into slices, like pieces of a pie. By knowing which sector your phone is connected to, the network can estimate the direction your phone is in from the tower (but not the exact distance).3. Approximate Distance (Timing Advance):In 2G/3G networks, the network can estimate how far away you are from the tower using a technique called Timing Advance. This measures the delay in signals between your phone and the tower, giving a rough idea of your distance from the tower.The network doesn&#x27;t have your exact distance, but it knows you&#x27;re within a certain range from the tower.4. No Exact Coordinates:The network does not typically have your exact GPS coordinates. Instead, it knows:· Which cell tower you&#x27;re connected to.· Which sector of the tower you&#x27;re in (to estimate your direction).· A rough idea of your distance from the tower using signal delay.This gives the network a general ideaof your location but not a precise one. It&#x27;s enough for tasks like routing calls and mobile data but not for something like finding your exact position.Factors Affecting Cell Tower Capacity1. Technology Used (2G, 3G, 4G, 5G):2G (GSM): This older technology can typically handle fewer users, usually in the range of hundreds of users per cell tower. Each phone is allocated a specific time slot for communication.3G (UMTS): 3G increased the capacity and can handle a few hundreds to a thousand devices per tower, depending on how much spectrum (bandwidth) the operator has.4G (LTE): 4G LTE towers can support 1,000 to 4,000 simultaneous devices. It uses more efficient methods of spectrum utilization, allowing more devices to communicate simultaneously.5G: The capacity for 5G towers is much larger than previous generations, supporting tens of thousands of devices in some cases. This is because 5G uses more spectrum, more advanced technologies like beamforming, and can operate in high-frequency bands (millimetre waves), which can support a massive number of users in a smaller area.2. Frequency Spectrum:Different cell towers operate on different frequency bands. Higher frequencies can support more bandwidth and more users, but their coverage area is smaller.Towers in urban areas (where there are more people) might use higher-frequency bands to handle more simultaneous connections.Towers in rural areas tend to use lower frequencies, which cover larger areas but may support fewer users.3. Number of Sectors:A cell tower is divided into sectors, typically three to six. Each sector has its own capacity, so a tower with more sectors can handle more phones.4. Bandwidth per User:The total capacity of a tower is shared among all users connected to it. If each user is consuming more bandwidth (e.g., video streaming), the number of users the tower can support decreases. Conversely, if many users are just on standby (like phones that aren&#x27;t actively using data), the tower can accommodate more devices.5. Real-World Example of Tower Capacity:A 4G LTE tower in a densely populated city could accommodate around 1,000 to 2,000 active users at a time, though the exact number can vary based on traffic load, signal quality, and spectrum allocation.5G towers, particularly those using millimetre-wave technology in cities, can support 10,000 to 100,000 connections within a small area because of higher frequencies and more efficient use of bandwidth.6. Paging and Connection Limits:The paging process, where the network finds your phone for calls or data, uses very little bandwidth. Even when a large number of phones are connected to a tower but not actively using data or making calls, the network can handle these devices in a sort of &quot;standby&quot; mode.The challenge comes when many users are actively consuming data (streaming, video calls, etc.). The tower can get congested, leading to slower speeds or dropped connections.Conclusion:After extensive research, I have found the answer to a simple question: How is it that my friend can continue to communicate with me while I am driving and moving simultaneously? Did I miss any signals in the process? This question led me to join the CESSA network group in order to deepen my understanding. I am grateful to my friends for introducing me to the &quot;Top-Down&quot; book, Season 1, which ultimately provided me with the insights I was seeking.Through this journey, I gained a comprehensive understanding of the internet, how it operates, how data is transferred, how it locates users, and how it delivers specific data to them.Furthermore, this exploration opened new perspectives on how ISPs or governments might have the ability to access devices, monitor communications, track phone counts in specific areas, and access data transmission. However, in this context, such capabilities were not relevant or applicable.Thanks for your attention!&quot;Learn and teach, inspire and reach.&quot;This research has been compiled by Ali Najjarzadegan the student, which was in order of Network groupCE Department – IUT2024-12-17📧Gmail: alinajarzadegan1383@gmail.com 🎬Aparat: https://www.aparat.com/A.Najjar_TB💡LinkedIn: Ali Najjarzadegan🗿GitHub: https://github.com/anjrzdgn</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Tue, 24 Dec 2024 19:25:54 +0330</pubDate>
            </item>
                    <item>
                <title>همه دروغ می‌گویند… حتی شما دوست عزیز!</title>
                <link>https://virgool.io/Faramatn/%D9%87%D9%85%D9%87-%D8%AF%D8%B1%D9%88%D8%BA-%D9%85%DB%8C-%DA%AF%D9%88%DB%8C%D9%86%D8%AF-%D8%AD%D8%AA%DB%8C-%D8%B4%D9%85%D8%A7-%D8%AF%D9%88%D8%B3%D8%AA-%D8%B9%D8%B2%DB%8C%D8%B2-vyfclfnxb1rq</link>
                <description>به قلم زهرا صرامی، ورودی 1400 کارشناسی مهندسی کامپیوتر صنعتی اصفهان  بازنگریشده توسط زهرا صرامی، ورودی 1400 کارشناسی مهندسی کامپیوتر صنعتی اصفهاندر شرایط زمانه ما که دروغ مرتباً تولید و بازتولید می شود و این چرخه گردان، تمام زندگی ما را چه آگاهانه و چه ناآگاهانه در برگرفته است، پیدا کردن روزنه هایی از حقیقت می تواند نجات بخش باشد. تجربه و بررسی های بسیاری نشان داده اند که نتایج به دست آمده از نظرسنجی ها و پیمایش ها، به اندازه ای که انتظار داریم صادقانه نیستند. در واقع مردم به نزدیک ترین افراد زندگیشان، به دوستان و خانواده شان، به مصاحبه گر ناشناس پشت فرم نظرسنجی و حتی خودشان دروغ می گویند. گویا انسان ها بیشتر متمایلند آنچه را که درست است و باید باشد، بیان کنند و انتشار دهند تا آنچه که واقعاً در افکار و زندگیشان می گذرد.در حقیقت ما به همه چیز و همه کس می توانیم دروغ بگوییم به جز آنچه جستوجو می کنیم. عمل روزمره تایپ کردن مجموعه ای از کلمات در کادر سفید گوگل، ردپای کمرنگی از حقیقت به جا می گذارد که وقتی میلیون ها بار تکرار شود، در نهایت به رمزگشایی از واقعیاتی ژرف می انجامد. حجم داده تولیدشده در یک روز معمولی در قرن بیست و یکم، حدود ۲.۵ هزار میلیارد بایت است و این حجم عظیم داده های جمع شده، اطلاعات غافلگیرکننده ای از رفتارهایمان به ما می دهد. البته که ارزش جستوجوهای گوگل در حجم بالای آنها نیست، بلکه در صداقتی است که مردم در جستوجوها نشان می دهند.مزیت بزرگ دیگر گوگل در ترغیب مردم به گفتن حقیقت، وجود انگیزه در آنهاست. اگر از جوک های قومیتی و نژادپرستانه خوشتان می آید، هیچ انگیزه ای ندارید این واقعیت که نوعی بینزاکتی سیاسی[1] است را در پیمایش ها اعلام کنید ولی انگیزه دارید جدیدترین آنها را در گوگل پیدا کنید و بخوانید. همچنین ممکن است بارها در گوگل درباره گریه های بی امان و زندگی دشوارتان جستوجو کرده باشید، در حالی که پیش دیگران و حتی خودتان معترف نیستید که از افسردگی رنج می برید.در واقع برخی از منابع آنلاین، مردم را به اعتراف به چیزهایی وا می دارند که در هیچ جای دیگر به آن اعتراف نمی کنند و گویی عملکرد این منابع چیزی شبیه &quot;اکسیر حقیقت دیجیتال&quot; است.البته که ما نمی توانیم تمام منابع کلان داده را فارغ از سوگیری مطلوبیت اجتماعی[2] در نظر بگیریم. برای مثال داده های منتشرشده در فیسبوک را می توان بیشتر نماد &quot;پُز زندگی خوب&quot; دانست تا حقیقت.ظاهراً در فیسبوک یک آدم معمولی ازدواج موفقی دارد، تعطیلاتش را در جزایر کارائیب می گذراند و مطالب نشریه فرهیختگان را دنبال می کند، در حالی که داده های گوگل اطلاعات متفاوتی از سبک زندگی آدم ها به ما می دهند. در جدول زیر، بیشترین ترکیبات به کاررفته برای توصیف کلمه &quot;همسرم&quot; را در دو منبع کلان داده بررسی میکنیم:مقایسه بیشترین ترکیبات به کاررفته برای توصیف کلمه &quot;همسرم&quot; در فیسبوک و گوگلداده های بالا نشان می دهد که ما غالباً درباره تعداد زنانی که همسر خود را عالی ترین می دانند، اغراق می کنیم. پی بردن به اینکه ما در تشویش خاطر و رفتارهای شرم آور تنها نیستیم، خود یکی از نتایج تحلیل کلان داده هاست.در جدول زیر، تیراژ دو مجله The Atlantic (ماهنامه ای معتبر و فاخر) و National Enquirer (ماهنامه ای جنجالی و شایعه پراکن) با میزان محبوبیت آنها در فیسبوک مقایسه شده است:مقایسه نسبت محبوبیت دو مجله در حالت فیزیکی، گوگل و فیسبوک  در ارزیابی محبوبیت واقعی هر مجله، تعداد تیراژ فیزیکی آن حکم حقیقت عینی را دارد و داده های گوگل تا حد خوبی به آن نزدیک است. اما داده های فیسبوک علیه نشریه زرد و مهمل سوگیری دارد (کاربران فیسبوک تمایل ندارند علاقه شان را به نشریات زرد به دیگران نشان دهند) و همین فیسبوک را به منبعی نامعتبر تبدیل می کند.در ۵ سپتامبر ۲۰۰۶، زمانی که فیسبوک با ۹.۴ میلیون کاربر در دوران اوج خود به سر می برد، به روزرسانی مهمی را برای صفحه ی خانه خود انجام داد و اجازه داد که افراد با کلیک روی گزینه جدید به نام &quot;خبرخوان&quot; از همه فعالیت هایی که دوستانشان بر روی فیسبوک انجام می دادند باخبر شوند.این به روزرسانی جنجالی حواشی زیادی به دنبال داشت. بلافاصله کاربران اعتراض کردند که از خبرخوان متنفرند، در عرض چند روز ۷۰۰ هزار نفر به عضویت گروه مخالفان خبرخوان درآمدند و عده ای آن را بزرگترین بحرانی که فیسبوک با آن مواجه شده است، خواندند. اما در آن زمان نشانه هایی از نگرانی در زاکربرگ دیده نمی شد زیرا به اکسیر حقیقت دیجیتال دسترسی داشت.فارغ از اینکه مردم در صفحات مجازی خود چه چیزی ادعا می کردند، از خبرخوان خوششان می آمد به طوری که بازدید آنها از ۱۲ میلیون در ماه به ۲۲ میلیون رسید و متوسط زمانی که در فیسبوک می گذراندند، بیشتر شد. اما این تنها مدرک زاکربرگ نبود. حتی محبوبیت و فراگیری گروه فیسبوکی &quot;مخالفان خبرخوان&quot; هم نشان دهنده قدرت خبرخوان بود و به این دلیل توانست با چنین سرعتی رشد کند که شمار زیادی از افراد با چک کردن خبرخوان دوستانشان از وجود آن مطلع شدند و به آن پیوستند.در واقع، همان کسانی که در تجمعات مخالفان خبرخوان شرکت می کردند، دقایقی بعد صفحه خبرخوان دوستانشان را برای فهمیدن جزئیات زندگیشان چک می کردند.پیتر تیل (یکی از سرمایه گذاران فیسبوک) [3] معتقد است که بهترین کسبوکارها بر اساس رازها بنا شده اند؛ رازهایی درباره ی جهان، طبیعت و مردم.نتفلیکس هم در اوایل راه اندازی اش درس مشابهی گرفت: به کاری که مردم می کنند توجه کن و نه آنچه که می گویند.نتفلیکس در اوایل راه اندازی اش به کاربرانش اجازه می داد لیستی از فیلم هایی بسازند که می خواهند در آینده ببینند ولی فعلا فرصتش را ندارند و در طی یک بازه زمانی، لیستشان را به آنها یادآوری می کرد. اما نکته عجیب آنجا بود که مردم به ندرت روی فیلم های لیست خود کلیک می کردند، زیرا لیستشان پر بود از فیلم های آرمانگرا و فرهنگی. با این حال بعد از چند روز هنوز هم دلشان می خواست همان فیلم هایی را ببینند که معمولاً به سراغشان می روند: کمدی های آبکی یا فیلم های رمانتیک.در واقع مردم مدام به خودشان درباره سلایقشان دروغ می گفتند. در پاسخ به این تناقض، نتفلیکس به جای پرسیدن از مردم، بر مبنای میلیون ها کلیک و بازدید کاربران مشابه، الگوریتمی ساخت که به کاربران لیستی از پیشنهادهای کلان داده ارائه می داد که اتفاقاً نتیجه بخش هم بود. به قول خاویر آماترین[4] (متخصص کلان داده در نتفلیکس) باید گفت: «الگوریتم ها شما را بهتر از خودتان می شناسند.»ارزش بی نظیر بی اعتنایی به حرف مردم مثال های گفته شده در بالا تنها بخش کوچک و محدودی از قدرت کلان داده و صداقت بی مانند آن را به ما نشان می دهد. واقعیات موجود در جستجوهای گوگل، داده های پورن[5] و اینکه چه کسی روی چه چیزی کلیک می کند، روزنه ای منحصر به فرد به تاریک ترین گوشه های ذهن و روان انسان باز می کند و احتمالاً زمانی که با این حقایق دیجیتال مواجه می شوید، با خودتان نمی گویید «چه عالی! حالا می توانیم بفهمیم واقعاً که هستیم.» بلکه احتمالاً فکر می کنید «چه افتضاح! حالا واقعاً می توانیم بفهمیم که هستیم.»پذیرش این حقایق در گام اول دشوار است، اما جمع آوری داده های پر و پیمان درباره مشکلات دنیا نخستین گام در مسیر حل آنهاست.پ.ن: آنچه که خواندید، برداشت کوچکی بود از کتاب &quot;همه دروغ می گویند&quot; نوشته ی ست استیونز و دیوید ویتس. کتابی جامعه شناسی و داده محور که به ما نشان می دهد جامعه انسانی فراتر از آن چیزی است که پیش از این می دیدیم و به بررسی نقاط ضعف و قوت کلان داده در کمک به علوم دیگر می پردازد. باشد که این علم نوین، کمک حالی باشد برای بهبود حال بیمار این جامعه بشری.پاورقی ها:politically incorrectSocial Desirability Bias: این سوگیری تحت تاثیر هنجارهای اجتماعی روی می دهد؛ به این صورت که اغلب پاسخ دهنده ها به پرسشنامه به شیوه ای به سوالات پاسخ می دهند که مطلوبیت اجتماعی خود را حفظ کنند یا بهبود دهند در نتیجه صداقت کافی در پاسخدهی از خود نشان نمی دهند.Peter Thiel : او یکی از مؤسسین پی پال و اولین سرمایه گذار حرفه ای در فیسبوک بوده است.Xavier Amatrinدر دوران ماقبل دیجیتال مردم افکار شرم آور خود را از دیگران پنهان می کردند ولی امروزه با وجود داده های پورن هاب و جستجوی گوگل و با کمک علم تحلیل کلان داده ها، به بررسی نظریه های روانشناسی و جامعه شناسی پرداخته می شود که پیش از این قابل بررسی نبوده اند. فصل دوم کتاب با عنوان &quot;آیا فروید حق داشت؟&quot; به بیان و تحلیل برخی از مباحث بررسی شده در این حوزه می پردازد.Seth Stephens-Davidowitzتصویر کتاب «همه دروغ می گویند».</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Tue, 17 Dec 2024 19:01:12 +0330</pubDate>
            </item>
                    <item>
                <title>دنیای موازی: جهانی پر از پردازش‌های موازی!</title>
                <link>https://virgool.io/Faramatn/%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D9%85%D9%88%D8%A7%D8%B2%DB%8C-%D8%AC%D9%87%D8%A7%D9%86%DB%8C-%D9%BE%D8%B1-%D8%A7%D8%B2-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D9%87%D8%A7%DB%8C-%D9%85%D9%88%D8%A7%D8%B2%DB%8C-srmqdsqtndbc</link>
                <description>به قلم نوید نصیری، ورودی 1402 ارشد مهندسی کامپیوتر صنعتی اصفهان بازنگری‌شده توسط مهدی قاسمی، ورودی 99 کارشناسی مهندسی کامپیوتر صنعتی اصفهانتصویر ساخته شده توسط هوش مصنوعیمقدمهدنیا، دنیای پردازشه! پردازش‌ها هم روز به‌ روز دارن سنگین‌تر میشن! پردازش سنگین یعنی زمان‌بر شدن. زمان‌بر شدن یعنی صبر و حوصله برای انسان عجول و بی‌حوصله امروزی تا بتونه یه پردازش‌ رو انجام بده و نتیجش رو ببینه. اما انسان امروزی، دست رو دست نمیذاره و میره سراغ بالا بردن سرعت پردازش به کمک هر روشی!بله درسته به هر روشی. اول که یه هسته پردازنده داشته، شروع میکنه به بالا بردن سرعت کلاک و طراحی الگوریتم‌هایی در سطح معماری و مدار منطقی (مثل الگوریتم Carry Look Ahead که سرعت جمع دو عدد رو بسیار افزایش داد) که بتونه محاسبات و پردازش خودش رو سریع‌تر انجام بده. بعد می‌بینه فایده نداره، میاد چند تا هسته پردازشی میذاره کنار هم تا باهم کار کنند و پردازش انجام بدن. ولی به همینجا ختم نمیشه و هنوز سرعت بالاتر میخواد. کامپیوتر‌های چند هسته‌ای رو کنار هم میذاره و با تشکیل کلاستر، بر روی چندین پردازنده قوی روی چندین کامپیوتر، پردازش خودش رو انجام میده! اینجاست که اهمیت پردازش موازی مشخص میشه.مگه میشه حرف از پردازش موازی بشه و سخنی از gpu نیاد وسط! اگر الان روی یه لپ‌تاپ که گرافیک RTX داشته باشه دارین این متن رو میخونین، احتمالا حدود ۶۰۰۰ تا هسته پردازشی روی گرافیکتون هست که دارن همشون باهم صفحه نمایش و گرافیک لپ‌تاپتون رو پردازش می‌کنن!توی این متن، میخوایم یکم درباره انواع روش‌هایی که میشه در پردازش موازی داشت و چالش‌هاش، یه توضیحی بدیم و یکم عملی کار کنیم و چند تا ابزار معرفی کنیم. در آخر هم چند تا مثال از برنامه‌نویسی‌ موازی بزنیم و مسیر‌های پیش رومون رو بررسی کنیم.چیا موازی میشن؟خب دیگه مقدمه بسه!همین اول کار یه آب پاکی بریزم رو دستتون که فکر نکنین الان دیگه هروقت بخوایم سرعت پردازش‌مون بره بالاتر، بیایم یه هسته به پردازنده یا یه کامپیوتر به کلاستر، اضافه کنیم و بگیم دو برابر شد سرعت! نخیرررر. اول اینکه باید برنامه‌ای که میخوایم موازی کنیم خودش اصلا قابلیت موازی‌شدن رو داشته‌باشه! یعنی اینطور نباشه که هر دستوری در اون کاملا به دستور‌های قبل خودش وابسته باشه و نیاز داشته باشه که دستور‌های قبلیش اجرا بشن تا بتونه اجرا بشه. پس در گام اول، باید خود تسکی که میخوایم انجام بدیم، بتونه موازی اجرا بشه. علاوه‌بر این سخت‌افزاری که روش داریم برنامه رو اجرا می‌کنیم باید از این نوع پردازش پشتیبانی کنه و زیاد کردن تعداد پردازنده، باعث افت زیاد کارایی نشه.هسته‌ها چطور با هم حرف می‌زنند؟توی پردازش موازی، بالاخره چند تا هسته دارن با هم کار انجام میدن پس منطقیه که گاهی نیاز داشته باشند که با هم ارتباط بگیرن و روی یه دیتای مشترکی کار کنند. ممکنه تابعی که توی یکی از هسته‌ها داره انجام میشه نیاز به متغیری داشته باشه که توی یه هسته دیگه مقدارش محاسبه شده یا اینکه نیاز داره چند مقدار از هسته‌های مختلف داشته باشه. برای این کار دو تا روش مرسومه:الف) حافظه مشترک‌ (Shared Memory)توی این حالت بین اون تعداد از پردازنده‌ها که میخوان با هم ارتباط داشته باشن، یه متغیر مشترک در یک حافظه مشترک تعریف میشه که با استفاده از اون، با هم داده رد و بدل می‌کنند.Shared Memoryفهمیدیم که برای موازی اجرا کردن، نیاز هست که موازی کد زده بشه! یعنی یه طوری کد زده بشه که هم سیستم‌عامل و هم سخت‌افزار متوجه اون بشه! خب برای این کار یک‌سری ابزار‌ها و کتابخونه‌هایی هستند که بهمون کمک می‌کنند. یکی از کتابخونه‌ها که اتفاقا به روش Shared Memory ارتباط بین هسته‌ها رو فراهم می‌کنه، OpenMP هست. با این کتابخونه می‌تونین تجربه کد زدن موازی به این روش رو توی زبان‌های C و C++ پیدا کنین.ب) ارسال پیام (Message Passing)توی کامپیوتر‌های موازی و کلاستر‌ها، مدل Message Passing کاربرد داره. توی این مدل فرض بر اینه که پردازنده‌ها و کامپیوتر‌ها کاملا مستقل از هم هستند و هیچ اشتراکی توی حافظه و فضای آدرس بین اونا وجود نداره و متغیر‌های محلی هر پردازنده، مستقل از بقیه پردازنده‌هاست و در دسترس بقیه نیست. در این حالت نیاز هست که روش تبادل اطلاعات، مستقل از یک حافظه مشترک باشه. Message Passing همونطور که از اسمش پیداست، بر پایه ارسال و دریافت پیام بر روی بستر ارتباطی بین پردازنده‌ها است.Message Passingبرای این حالت از کد‌نویسی موازی هم کتابخونه‌هایی توی C و C++ هست که استفاده می‌شن. یکی از معروف‌ترینشون کتابخونه MPI هست. با این کتابخونه میشه از یک هسته پردازشی به هسته دیگه پیام مورد نظر رو انتقال داد. به این صورت که هر زمان که پردازنده دریافت‌کننده نیاز به گرفتن داده از یک پردازنده دیگه داره، منتظر گرفتن داده از پردازنده مورد نظر می‌مونه و بعد از دریافت پیام، به کار خودش ادامه میده و از اون داده استفاده می‌کنه. البته این کتابخونه توی همین داد و ستد ساده پیام، کلی قابلیت جالب بهمون میده که می‌تونین توی مستنداتش بخونین.چقدر سریع‌تره؟و اما زمانی که میایم سراغ پردازش‌های موازی،‌ نیاز هست که علاوه‌بر مواردی که تا الان گفته شد، الگوریتمی‌ که میخوایم ازش استفاده کنیم هم قابل موازی شدن باشه. بعضی از الگوریتم‌ها ماهیتا متوالی هستند و قابل موازی شدن نیستند چون انجام هر بخش از اون نیازمند انجام کامل بخش قبلش هست، پس نمیشه به صورت موازی اجراش کرد. الگوریتم‌های موازی با استفاده‌ از روش‌های خلاقانه، قابلیت موازی‌سازی برنامه‌ رو ایجاد می‌کنه و سعی می‌کنه تا جایی که ممکنه، برنامه به صورت موازی انجام بشه. این قسمت‌ها معمولا وابستگی کمی به هم دارند و یا اصلا وابستگی ندارند اما در صورت وجود وابستگی، داده‌ها بین پردازنده‌ها قابل انتقال هست. کارایی الگوریتم‌ها معمولا با زمان اجرا و منابع پردازشی مورد استفاده‌شون سنجیده می‌شن. یکی از الگوریتم‌هایی که توی پردازش موازی کاربرد داره و احتمالا باهاش آشنا هستین، الگوریتم تقسیم و غلبه ( Divide and Conquer ) هست. این الگوریتم برای راحت‌تر شدن مسئله، اون رو به بخش‌های کوچیک‌تر تقسیم می‌کنه و بر روی اون‌ قسمت‌ها، عملیات مورد نظرش رو انجام می‌ده و در نهایت قسمت‌های کوچیک‌ رو با هم ادغام می‌کنه. یک مثال خیلی ساده بخوام بزنم، اگر n عدد رو به صورت متوالی بخوایم جمع بزنیم، پیچیدگی زمانی n داره. درحالی که اگر با الگوریتم تقسیم و غلبه و به صورت موازی بخوایم این کار رو انجام بدیم، می‌تونیم توی زمان log n این کار رو انجام بدیم. (چرا؟ :)) همچنین می‌تونین برای مسائل Binary Sort, Quick Sort, Merge Sort, Integer Multiplication, Matrix Inversion, Matrix Multiplication هم الگوریتم‌های موازی رو بررسی کنین.جمع n عدد به صورت موازیاما سرعت بالا هزینه داره! :(به قول یه استادی، هیچ چیزی مجانی نیست…:)تونستیم با هسته‌های بیشتر سرعت بعضی‌ کار‌ها رو خیلی خیلی ببریم بالا ولی به چه قیمتی؟ خب اولیش که بدیهیه برامون هزینس. هزینه استفاده از چند پردازنده زیاده. اما کار به همینجا ختم نمیشه و تازه چالش‌های پردازش‌های موازی خودشون رو نشون میدن. اینجا چند مورد از چالش‌ها رو صرفا اشاره می‌کنم که توی بازدهی پردازش موازی تاثیر زیادی دارن و هنوز هم به عنوان زمینه‌های تحقیقاتی و مقاله، بازار داغی دارن :)استفاده از Cache توی پردازنده‌ها می‌تونه در ارتباط بین هسته‌ها موثر باشه؟زمان پردازنده‌ها چطور با هم هماهنگ باشه؟ارتباط بین پردازنده‌ها به چه صورتی باشه تا بازدهی بالاتری داشته‌باشن؟پردازنده‌ها چه زمانی نیاز دارن که با هم در ارتباط باشند و چه زمانی نیاز ندارن؟هسته‌ها چطور به صورت همزمان عمل می‌کنن؟چطور از محاسبه‌های تکراری توسط هسته‌ها جلوگیری بشه؟بار پردازشی چطور به بهترین صورت بین پردازنده‌ها تقسیم بشه؟و در کل چه راه‌هایی هست که بالاترین بازدهی رو بتونیم با کمترین هزینه، از این موازی‌سازی داشته باشیم؟و …یکم کد بزنیم!؟یکی از کتابخونه‌هایی که بالا‌تر هم معرفی شد و میشه باهاش برنامه نویسی موازی رو تجربه کرد، OpenMP هست. این کتابخونه رو می‌تونین با یه سرچ ساده نصبش کنین و توی زبان C و C++ خیلی راحت استفاده کنین. با این کتابخونه میتونیم مشخص کنیم که کدوم بخش کدمون با چند تا پردازنده به صورت موازی اجرا بشه. مثلا توی نمونه کد پایین، بخش داخل حلقه، با دو تا ترد اجرا میشه. خروجی کد چیه؟ و چرا خروجی کد اینطوریه؟ #include &lt;stdio.h&gt;
 #include &lt;mpi.h&gt;
 #include &lt;omp.h&gt;
 int main()
 {
         int th_id, num;
         omp_set_num_threads(2);
         #pragma omp parallel for
         for (int i=0; i &lt; 10 ; i++)
         {
                 num = omp_get_num_threads(); 
                 th_id = omp_get_thread_num(); 
                 printf(&quot;thread Id : %d/%d Threads, Assigned Loop Index: %d\n&quot;, th_id, num, i);
 }
 return 0;
 }با کتابخونه MPI هم بالاتر آشنا شدیم. نمونه کد پایین با این کتابخونه زده شده که می‌تونین بعد از نصبش که به سادگی قابل انجامه، اجرا کنین. این کد چه میکنه؟ #include &lt;stdio.h&gt;
 #include &lt;mpi.h&gt;
 int main( int argc, char **argv )
 {
 int rank, buf;
 int val = 0;
 MPI_Status status;
 MPI_Init(&amp;argv, &amp;argc);
 MPI_Comm_rank(MPI_COMM_WORLD, &amp;rank);
 /* Process 0 sends and Process 1 receives */
 if ( rank == 0 )
 {
         buf = 123456;
         MPI_Send(&amp;buf, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
         MPI_Recv(&amp;val, 1, MPI_INT, 1, 1, MPI_COMM_WORLD, &amp;status);
         if ( buf * 9 + 7 == val )
         {
                 printf(&quot;Calculation is correct :)))\n&quot;);
         }
         else
         {
                 printf(&quot;Calculation is not correct :(((\n&quot;);
         }
         printf(&quot;\nRecieved Number from Id 1 is : %d\n&quot;, val);
  }
 else if ( rank == 1 )
 {
         MPI_Recv(&amp;buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &amp;status);
         printf(&quot;Received number from rank 0 : %d\n&quot;, buf);
         val = buf * 9 + 7;
         MPI_Send(&amp;val, 1, MPI_INT, 0, 1, MPI_COMM_WORLD);
 }
 MPI_Finalize();
 return 0;
 }کلام آخر:)و در آخر برای اینکه این سرنخ‌هایی که دادم رو ادامه بدین، میتونین یه نگاه به مستندات این کتابخونه‌ها بندازین و با هم مقایسشون کنین و چند تا کد جذاب دیگه هم بزنین. همچنین حیفه درباره CUDA که برای برنامه‌نویسی گرافیک‌های Nvidia استفاده میشه نخونین. و در آخر چند تا کتاب در این زمینه معرفی میکنم که خواستین بخونین و جواب سوالایی که ایجاد شد براتون رو توش پیدا کنین:).An Introduction to Parallel Programming with OpenMPOpenMP Application Programming Interfaceمنابع:https://en.wikipedia.org/wiki/Shared_memory&amp;amp;amp;amp;amp;amp;lt;br/&amp;amp;amp;amp;amp;amp;gt;https://www.researchgate.net/figure/Message-Passing-Model_fig1_281270827https://www.openmp.org/https://www.openmp.org/wp-content/uploads/openmp-4.5.pdfhttps://www.open-mpi.org/doc/v3.1/</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Tue, 12 Nov 2024 22:44:55 +0330</pubDate>
            </item>
                    <item>
                <title>مدل زبانی بزرگ[1] چجوری یاد میگیره و حرف میزنه؟ یه راهنمای ساده</title>
                <link>https://virgool.io/Faramatn/%D9%85%D8%AF%D9%84-%D8%B2%D8%A8%D8%A7%D9%86%DB%8C-%D8%A8%D8%B2%D8%B1%DA%AF1-%DA%86%D8%AC%D9%88%D8%B1%DB%8C-%DB%8C%D8%A7%D8%AF-%D9%85%DB%8C%DA%AF%DB%8C%D8%B1%D9%87-%D9%88-%D8%AD%D8%B1%D9%81-%D9%85%DB%8C%D8%B2%D9%86%D9%87-%DB%8C%D9%87-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D8%B3%D8%A7%D8%AF%D9%87-p0iubbrugcyg</link>
                <description>به قلم محدثه احمدی، ورودی 1400 ارشد مهندسی کامپیوتر صنعتی اصفهان بازنگری‌شده توسط مسیح تنورساز، ورودی 1400 کارشناسی مهندسی کامپیوتر صنعتی اصفهانبه لطف مدل‌های زبانی بزرگ یا به اختصار LLM، هوش مصنوعی به شکل خیلی گسترده‌ای توجه همه رو به خودش جلب کرده. ChatGPT؛ معروف‌ترین مدل زبانی بزرگ؛ به دلیل رابط کاربری بسیار روان و راحتش به سرعت محبوب شده. همین موضوع، پیشرفت‌های اخیر هوش مصنوعی رو برای عموم مردم ملموس‌تر کرده و باعث شده بیش از پیش ازش استفاده کنن. با این حال، نحوه عملکرد LLM ها هنوز به طور گسترده‌ قابل درک نیست، مگر اینکه شما یک متخصص علوم داده یا فردی با نقش مرتبط با هوش مصنوعی باشید که تا حدودی با ابزار‌های این حوزه آشنا باشید.متاسفانه، اکثر مقالاتی که در موردشون نوشته می‌شه، تو یکی از این دو دسته قرار می‌گیرن: یا خیلی فنی هستن و نیاز به دانش قبلی زیادی دارن، یا اونقدر ساده هستن که در نهایت چیزی رو به خواننده آموزش نمی‌دن. این مقاله قراره بین این دو رویکرد تعادل برقرار کنه. بهتر بگم، قراره شما رو با نحوه‌ی آموزش مدل‌های زبان بزرگ و اینکه چرا اینقدر خوب کار می‌کنن آشنا کنه و این کار رو با برداشتن تکه‌های پازل در ادامه‌ی مسیر انجام می‌دیم. البته باید بگیم که قرار نیست وارد جزئیات خیلی ریز بشیم و فقط می‌خوایم درک شهودیمون (و نه درک ریاضیمون) رو بیشتر کنیم.اگه بخوایم به صورت سلسله مراتبی جایگاه مدل‌های زبانی بزرگ رو در هوش مصنوعی بگیم، باید در نظر داشته باشیم که این مدل‌ها در حقیقت، بخشی از یادگیری عمیق هستن که بر روی داده‌های بدون ساختار از جمله متون و تصاویر متمرکزن. همچنین، هدف اصلیشون توسعه و بهبود شبکه‌های عصبی هستش. شبکه‌های عصبی بهبودیافته و پیچیده برای فهم، تولید و پردازش زبان‌های طبیعی مثل فارسی و دیگر داده‌های پیچیده، مورد استفاده قرار می‌گیرن. مدل‌های یادگیری عمیق بر پایه شبکه‌های عصبی مصنوعی و الهام گرفته از عملکرد مغز طراحی می‌شن. یادگیری ماشین، مادر شبکه عمیق هستش و به طور خاص بر روی تشخیص الگو در داده‌ها تمرکز داره و با استفاده از اون الگو، مشاهدات جدیدی رو بر روی داده‌ها اعمال می‌کنه. هر دوی این روش‌های یادگیری سعی دارن مشکلات مختلفی رو با شناسایی یکسری الگوها در دیتا حل کنن. مدل‌های زبانی به دلیل اینکه هم اندازشون به نسبت مدل‌های قبل خیلی بزرگ‌تره و هم اینکه روی داده‌های خیلی بیشتری آموزش داده شدن، یکی از قوی‌ترین شبکه‌های عصبی موجود هستن. تمام این بخش‌ها قسمت کوچکی از یک مفهوم بزرگ‌تر به نام هوش مصنوعی‌ان که به صورت کلی با ماشین‌های هوشمند در ارتباطه.جایگاه مدل‌های زبانی بزرگ از نظر سلسله مراتب شیرجه به سمت مدل زبانی بزرگخب ما می‌دونیم که برای فهم زبان نمی‌شه فقط به توکنایز(Tokenize) کردن تکیه کرد. روش کلی توکنایز اینه که اول داده متنی با یکسری روش شکسته می‌شه به اجزاء کوچک‌تر که حالا این اجزاء می‌تونن شامل حروف، کلمات یا مجموعه‌ای از کلمات اون متن باشن. بعد از این مرحله مدل باید یاد بگیره که معنی هر جزء چیه. مدل‌های قبل این مشکل رو داشتن که هر جزء رو مستقل از بقیه اجزاء می‌دیدن ولی اینجا سعی می‌شه روابط استخراج بشه.مثلا شما در نظر بگیرید جمله &quot;چه صبح خوبی!&quot; رو نمی‌شه به صورت دقیق گفت که این جمله کنایه آمیز نیست و لازمه به جملات قبل و بعدش توجه بشه . پس برای الگو پیدا کردن، اون شیوه خیلی راحت یادگیری ماشین دیگه کاربردی نداره و باید از مدل پیچیده‌تری استفاده بشه. اینجاست که شبکه عمیق عصبی به دادمون می‌رسه و علاوه بر کلمات، ساختار جمله و هم‌نشینی کلمات کنار هم رو به عنوان ورودی در نظر می‌گیره. البته باید بگم که کار ساده‌ای نیست و احتیاج به یک مدل خیلی پیچیده با تعداد پارامتر زیاد داره (به همین دلیل ما به این مدل زبانی می‌گیم مدل زبانی بزرگ!) به عنوان مثال چت جی پی تی عزیز، 176 میلیارد پارامتر داره. یعنی تقریبا 20 پارامتر به ازای هر انسان روی کره زمین!خب حالا که دلیل استفاده از مدل زبانی بزرگ رو فهمیدیم، بهتره توضیح دادن درباره این مدل رو شروع کنیم:برای شروع بیاین مسئله ساده رو در نظر بگیریم: چطور می‌تونیم کلمه بعدی از یک دنباله لغت رو پیش‌بینی کنیم؟به صورت واضح ورودی شبکه عصبی دنباله‌ای از کلمات هستند و خروجی هم طبیعتا لغت بعدی خواهد بود. در حقیقت این موضوع یک نوع مسئله طبقه بندی[2] هست و تنها تفاوتش در اینه که به جای دو یا تعداد کمی کلاس، ما تعداد خیلی زیادی (شاید حدودا 50 هزارتا) کلاس داریم.حالا که تسک ما تعریف شد، می‌دونیم که به لطف اینترنت و مراجع چاپی، حتی اگه دیتاست نداشته باشیم می‌تونیم خودمون درست کنیم. علاوه بر این که به دیتاست آماده احتیاجی نداریم، نیازی به برچسب‌گذاری هم نیست چون برچسب مشخصه، لغت بعدی. بد نیست بدونین که به این روش می‌گن یادگیری خود نظارتی[3].تمام کاری که باید بکنیم به صورت خلاصه، تعلیم شبکه عصبی(همون LLM) برای پیش‌بینی کلمه بعد هست و اهمیتی نداره که جمله بلنده یا کوتاه، زبونش انگلیسیه یا فارسی و اصلا یک رشته توئیته یا یک فرمول ریاضی، چون تفاوتی در مسئله ایجاد نمی‌کنه. زمانی که تونستیم کلمه بعد رو پیش‌بینی کنیم به عنوان دیتای جدید اون لغت رو به دیتا اضافه می‌کنیم و حالا با احتساب کلمه جدید، لغت بعدی رو حدس می‌زنیم و این روش رو به همین شکل ادامه می‌دیم.روش‌های توکنایز یک جمله بر اساس ساختارهای متنی متفاوت ChatGPT یا ChatLLM ؟ممکنه براتون سوال پیش اومده باشه که چرا اسم چت جی پی تی، chat LLM نشد؟ جوری که مشخصه انگار مدل‌سازی زبان، آخر داستان نیست و در حقیقت شروع ماجراس. پس GPT از کجا میاد؟این کلمه رو در زبان فارسی به شکل تحت الفظی ازش به عنوان &quot;مدل مولد تبدیل کننده از پیش آموزش دیده&quot; یاد می‌کنن. اما خب این ترجمه به فارسی سخته، فارسی راحت‌ترش می‌شه توضیحی که در ادامه می‌دیم:اولین بخش : پیش آموزشدرباره اولین گام کمی صحبت کردیم، در این مرحله مقدار زیادی داده به شبکه تزریق میشه تا مدل نه تنها استاد گرامر بشه بلکه دانش خوبی درباره جهان و ادغام کلمات کنار هم بگیره اما مشکل اصلی اونجایی پیش میاد که مدل یاد نگرفته که مشاور خوبی باشه و به سوالات شما پاسخ بده و هنوز تا رسیدن به هوش مصنوعی فاصله داره. مثلا در جواب &quot;اسمت چیه؟&quot; ما می‌خوایم بگه &quot;ChatGPT&quot;.در این مرحله، اصطلاحا مدل با اهداف انسانی همسو نیست. همسویی برای مدل‌های زبانی بزرگ موضوع مهمیه و ما یاد خواهیم گرفت که چجوری می‌تونیم این موضوع رو تا حد زیادی اصلاح کنیم. خوشبختانه مدل‌های زبانی بزرگ از پیش آموزش‌دیده شده، کاملاً قابل هدایت هستند. بنابراین، اگرچه اونا در ابتدا به خوبی به دستورات پاسخ نمی‌دن، اما می‌شه به اونا یاد داد که این کار رو انجام بدن.دومین بخش : آموزش مدل برای تنظیم دقیق ساختار و RLHFتا اینجا داده‌های از قبل آموزش داده شده با مدل زبانی بزرگ رو داریم و اساسا همون کاری رو انجام می‌دیم که قبلاً انجام می‌دادیم، یعنی یادگیری پیش‌بینی تک‌به‌تک کلمات و کنار هم قرار دادنشون. اما حالا این کار فقط با استفاده از جفت‌ پرسش و پاسخ‌های باکیفیت به عنوان داده‌های آموزشی شکل می‌گیره.به این ترتیب، مدل یاد می‌گیره که صرفاً یک تکمیل‌کننده متن نباشه و به یک دستیار کارآمد تبدیل بشه. همچنین مدل یادمی‌گیره به گونه‌ای به نیاز کاربر پاسخ بده که با هدف کاربر همسوتر باشه. اندازه‌ این مجموعه داده آموزشی، معمولاً بسیار کوچک‌تر از مجموعه پیش‌آموزشه. دلیلشم هزینه هست! بالاخره ایجاد جفت‌های سوال-پاسخ باکیفیت گرونه، چرا که انسان باید بسازتشون.یک مرحله سوم هم وجود داره که بعضی از مدل‌های زبانی بزرگ مثل ChatGPT طی می‌کنن، که «یادگیری تقویتی از بازخورد انسانی» (RLHF) نامیده می‌شه. ما در اینجا وارد جزئیات نمی‌شیم، اما هدف اون تنظیم دقیق ساختار مطابق میل انسانه. RLHF به هم‌سویی کمک می‌کنه و تضمین می‌کنه که خروجی مدل زبانی بزرگ، ارزش‌ها و ترجیحات انسانی رو منعکس کنه. تحقیقات اولیه نشون داده که این مرحله برای رسیدن یا فراتر رفتن از عملکرد سطح انسانی بسیار مهمه. در واقع، ترکیب زمینه‌های یادگیری تقویتی و مدل‌سازی زبان، به طور ویژه‌ای امیدوارکننده به نظر می‌رسه و احتمالاً منجر به پیشرفت‌های عظیمی در مقایسه با مدل‌هایی می‌شه که در حال حاضر داریم.همونطور که اشاره شد، دستیار بودن مدل از طریق استانداردسازی ساختار و RLHF انجام می‌شه. حالا این سوال پیش میاد که اگه مدل زبانی بزرگ جواب رو ندونه چیکار می‌کنه؟ گویا این مدل یه رگ ایرونی داره و بلد نیستم تو معرفتش نیست و بالاخره یک جوابی برمی‌گردونه که به این فرایند به اصطلاح hallucination می‌گن که مدل یک سری حقایقی رو درست می‌کنه که نباید!سومین بخش : ترانسفورمر یا همان مبدلدر مدل‌های GPT، بخش ترانسفورمر مثل یک خواننده‌ی فوق‌العاده متمرکز عمل می‌کنه که توانایی ویژه‌ای به نام «توجه به خود» داره.ترانسفورمر در مدل‌های GPT متفاوت عمل می‌کنه. در ادامه تعدادی از کارهایی که انجام می‌ده رو میاریم:تمرکز روی بخش‌های مهم: به جای اینکه فقط به ترتیب کلمات نگاه کنه، ترانسفورمر می‌تونه توجه بیشتری به کلمات مهم‌تر برای درک کلمه‌ی فعلی داشته باشه. چیزی شبیه خط کشیدن زیر بخش‌های کلیدی جزوه.در نظر گرفتن زمینه: می‌تونه به سایر کلمات جمله نگاه کنه و ببینه که اونا با کلمه‌ی فعلی چه ارتباطی دارن.با استفاده از مکانیزم«توجه به خود»، ترانسفورمر در مدل‌های GPT می‌تونه روابط بین کلمات در یک جمله رو بسیار بهتر درک کنه.چهارمین بخش: تولید کلمهتولید کلمه، آخرین هدف و آخرین مرحله مدل‌های GPT هست که پس از آموزش و تبدیل، انجام می‌شه و در این مرحله پاسخ نهایی درست می‌شه. هنگام ایجاد فرمت‌های جدید متن، مدل می‌تونه از درک خود از زبان برای تولید متن منسجم‌تر و از نظر گرامری، صحیح‌تر استفاده کنه.مراحل آموزش یک مدل زبانی بزرگ برای تولید کلمه انواع مدل‌های زبانی بزرگحالا که تا اینجای نوشته اومدید، بد نیس با چندتا از محبوب‌ترین و جالب‌ترین مدل‌های زبانی بزرگ آشنا بشیم:برت: مدل مبتنی بر رمزگذاربرت ( به انگلیسی Bert ): مدل معرفی‌شده توسط گوگل در سال ۲۰۱۸ است که مبتنی بر ترنسفورمره و می‌تونه یک توالی‌ از داده رو به توالی‌ دیگه‌ای از داده تبدیل کنه(seq2seq). معماری برت شامل مجموعه‌ای از رمزگذارهای ترنسفورمر و دارای ۳۴۲ میلیون پارامتره. برت بر روی حجم عظیمی از داده، آموزش دیده و سپس برای انجام وظایف خاصی مانند استنتاج زبان طبیعی و شباهت متن جمله‌ها تنظیم شده.فالکون: مدل زبانی ساده و سریعفالکون (به انگلیسی: Falcon ): یک زبان برنامه‌نویسی متن باز، ساده، سریع، قدرتمند و با یادگیری آسونه که از مدل‌های برنامه‌نویسی دستوری[4]، برنامه‌نویسی تابعی[5] و برنامه‌نویسی شیءگرا[6] پشتیبانی می‌کنه. فالکون دو نسخه کوچیک‌تر داره به نام‌های فالکون 1 و فالکون 7 (با ۱ میلیارد و ۷ میلیارد پارامتر) که به‌صورت رایگان در GitHub موجوده.جیمنی: قوی‌ترین دستیار هوش مصنوعی گوگلجیمنی (به انگلیسی : Gemini) : مجموعه‌ای از مدل‌های زبانی گوگله که چت‌بات هم‌نام این شرکت رو پشتیبانی می‌کنه. این مدل جایگزین پالم و لاندا در قدرت‌دهی به چت‌بات شد که پس از تغییر مدل، از بارد به جیمنی تغییر نام پیدا کرد. جیمنی یک مدل چند‌وجهیه، یعنی می‌تونه علاوه بر متن، با تصاویر، صوت و ویدیو هم کار کنه. جمینی در اکثر معیارهای ارزیابی‌شده، از GPT-4 عملکرد بهتری رو از خودش نشون داده.لاندا: اولین دستیار هوش مصنوعی با احساسلاندا ( به انگلیسی Lambda) : مجموعه‌ای از مدل‌ها با معماری Seq2Seq که توسط Google Brain در سال ۲۰۲۱ معرفی شد. لاندا از یک مدل زبان ترانسفورماتور فقط با رمزگشا استفاده می‌کنه و روی حجم عظیمی از متن، پیش‌آموزش داده شده. در سال ۲۰۲۲، لاندا با ادعای داشتن احساس توسط یکی از مهندسان گوگل به نام بلیک لموین توجهات زیادی رو به خودش جلب کرد و حتی بعضی از کاربراش هم این ادعا رو تایید کردن.سخن آخرواضحه که مدل‌های زبانی بزرگ بسیار مفیدن و دانش و توانایی‌های چشمگیری رو از خودشان تا الان نشون دادن. اما اینکه تا چه حد به هوش انسان شباهت دارن، هنوز مشخص نیست. تنها چیزی که مشخصه اینه که جهان دوباره نمی‌تونه به قبل از گسترش دستیارهای هوش‌مصنوعی برگرده، پس چه بهتر که درباره این فناوری دانش خودمون رو بیشتر کنیم و با موج همراه بشیم.امیدوارم که این مقاله به شما کمک کرده باشه تا مدل‌های زبانی بزرگ و هیجان جاری پیرامون اونها رو درک کرده باشید و اگر هم نقد یا نظری داشتین می‌تونین با ما در میون بذارین.برای کسب اطلاعات بیشتر بد نیست به این منابع هم یه سری بزنید:https://medium.com/data-science-at-microsoft/how-large-language-models-work-91c362f5b78fhttps://aws.amazon.com/what-is/gpt/#:~:text=The%20GPT%20models%20are%20transformer,language%20processing%20(NLP)%20tasks.پانویس‌ها:[1] Large language model[2] Classification[3] Self-supervised learning[4] Imperative programming[5] Functional programming[6] Object-oriented programming</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Sat, 21 Sep 2024 14:39:14 +0330</pubDate>
            </item>
                    <item>
                <title>جنگ برنچ‌ها؛ نبردی برای کنترل کد;</title>
                <link>https://virgool.io/Faramatn/%D8%AC%D9%86%DA%AF-%D8%A8%D8%B1%D9%86%DA%86-%D9%87%D8%A7-%D9%86%D8%A8%D8%B1%D8%AF%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%DA%A9%D8%AF-oi2zo3squeg4</link>
                <description>به قلم امیرارسلان یاوری، ورودی 98 مهندسی کامپیوتر صنعتی اصفهانبازنگری‌شده توسط مهدی قاسمی، ورودی 99 کارشناسی مهندسی کامپیوتر صنعتی اصفهانفرض کنین تو یه روز گرم و تقریبا تابستونی، همینطور که رو صندلیتون نشستین و دارین به بدبختیاتون فکر می‌کنین، یهو تصمیم می‌گیرین پروژه‌ی فلان درس رو شروع کنین. قطعا به کرّات از سال بالاییاتون شنیدین که بهتره از یه ورژن کنترلر[1] استفاده کنین و بهترینشون هم گیته؛ اگه استفاده می‌کنین که چه عالی؛ اگه نه، چند تا پروژه بزنین تا متوجه بشین چقدر لازمه ازش استفاده کنین :).خب حالا مبنا رو بر این می‌ذاریم که شما قراره از گیت هم استفاده کنین ولی استراتژی شما برای پیشبرد پروژه‌تون چیه؟ اگه فردی بخواین پروژه رو بزنین چیکار می‌کنین؟ اگه گروهی بخواین بزنین چی؟ تا انتهای این متن با ما همراه باشین تا با استراتژی‌های مختلف Branching از جمله Git Flow ،Feature و Trunk آشنا بشیم.‏‏‏Solo[2] Development:خب اگه بخواین تنهایی پروژه رو بزنین تقریبا کارتون راحته؛ روی سیستمتون گیت رو راه‌اندازی یا یه ریپازیتوری گیت توی گیت‌هاب یا هر جای دیگه می‌سازین و کارتونو شروع می‌کنین؛ بعد از هربار اضافه یا تغییر کد هم یه کامیت می‌زنین. این استراتژی، مبتدیانه‌ترین استراتژی هستش و فقط هم یه برنچ[3] داریم (البته یکی از دوستان میگه تنهایی هم بخوای دو تا فیچر بزنی بهتره دو تا برنچ بسازی و حرفشم درسته ولی استفاده از یک برنچ هم براتون نسبت به توضیحاتی که در ادامه میدم، اونقدر مشکل‌ساز نمیشه).در واقع توی این سناریو، شما فقط یه برنچ دارین و همه کارهاتون رو روی همون انجام میدین (خیلی هم عالی و قوی). اما سوالی که پیش میاد اینه که اگه قرار بود دو، سه یا حتی n نفری یه پروژه رو بزنین چیکار می‌کنین؟ بازم قراره فقط یه برنچ داشته باشین و همتون با هم روی همون کار کنین؟ اگه تجربه‌ی چنین موردی رو داشته بوده باشین می‌دونین چقدر خوب نیست و چقدر ممکنه کانفلیکت[4] بخورین (برطرف کردن کانفلیکت برای اونایی که گیت بلدن هم نسبتا کار سختیه). علاوه بر این فرض کنین شما چند نفری دارین روی یه برنچ به طور مداوم پوش می‌کنین و یهو می‌فهمین یکیتون یه خرابکاری کرده و باید کدتون رو به چند کامیت قبل‌تر برگردونین. دیگه به این راحتی نمیشه بگیم اصغر سه تا کامیت آخرش باید از بین بره و برگردیم به سه تا کامیت‌ قبل‌ترش؛ چون در همین حین، دوستای اصغر هم کلی کامیت دیگه زدن و کلی فیچر و امثالهم اضافه کردن. پس با برگشتن به سه کامیت قبل‌تر اصغر، همه‌ی اون‌ها رو هم از دست خواهیم داد (برای اینکه از دست ندیم باید زحمت بکشیم و کمی دردسر داره :) ). علاوه بر این تا مادامی که توسعه‌مون تموم نشه یه نسخه‌ی پایدار و قابل استقرار نداریم، چون همیشه ممکنه کدمون هنوز کامل نباشه. خیلی طولانیش نکنم، خودتون فکر کنین کلی مشکل دیگه هم پیدا می‌کنین که می‌تونین حتی اگه موضوع جالبی به ذهنتون خورد، توی کامنت‌های این پست بنویسین. خب بگذریم، استراتژیتون برای یه تیم چند نفره چیه؟‏‏Feature Based Branching:مدل دومی که ممکنه به ذهنتون بیاد، اینه که برای هر فردی یه برنچ بسازیم و هر کسی توی برنچ خودش کد یه فیچری رو بزنه و در نهایت این کدها رو با هم ادغام[5] کنیم (البته اگه قرار باشه یک فیچر توسط n نفر زده بشه نیازه برنامه‌نویس‌ها باید با هم سینک باشن مثلا به حالت Pair Programming[6] کار کنن؛ اما باز هم توصیه برنچ جداگونه برای هر توسعه‌دهنده است). این استراتژی، خیلی از مشکلات استراتژی قبلی رو برطرف می‌کنه و در خیلی از تیم‌های نرم‌افزاری هم استفاده میشه. تو این روش از کدی که دارن، یک یا چند برنچ جدید می‌سازن و اون فیچر یا فیچرهای مدنظر رو توسعه میدن و در نهایت با کد اصلی ادغام می‌کنن.خب ولی واسه استارت پروژه چیکار می‌کنین؟ همتون به یه کد اولیه نیاز دارین، در واقع اول باید سریع یه چیز کلی بالا بیارین تا همتون بتونین روی اون کار کنین (البته این مشکل نیست و عمدتا به یه کد اولیه برای ادامه‌ی توسعه نیاز داریم). خب اما مشکل چیه؟ مشکل یه مشکل بزرگه به اسم Merge Hell.اینطوری فرض کنین که اگه اصغر توی یه برنچ داشته روی فیچری کار می‌کرده و دوستش هم توی یه برنچ دیگه داشته روی یه فیچر دیگه کار می‌کرده، ولی برای هر دوی این فیچرها، فایل‌ یا فایل‌های یکسانی داشته عوض میشده؛ اینجا هرکی زودتر ادغام کنه به نفعشه چون نفر دوم کلی کانفلیکت خواهد خورد :)ولی از شوخی که بگذریم مشکل پیش اومده مشکل تیمه، پس خیلی خوشحال‌کننده نیست! حالا فرض کنین به جای دو تا فیچر، قراره n تا فیچر زده بشه و کلی برنچ تو طول t ماه اضافه بشن و با کد اصلی ادغام بشن. حالا قراره اون برنچی که یه فیچری داشته رو بعد t ماه با برنچ اصلی ادغام کنیم که واقعا فاجعه‌ی بزرگی پیش میاره. خب حالا چی؟ دقیقا چه ایده‌ی دیگه‌ای دارین؟‏‏Git Flow Branching:برای اینکه مشکل Merge Hell رو بتونیم برطرف کنیم، کاری که به نظر منطقی میاد اینه که با هر بار ادغام شدن یه فیچر با کد اصلی، کد اصلی با برنچ‌های فیچرهای دیگه هم ادغام بشه (rebase بشه) … در واقع بازم مشکل کانفلیکت پیش میاد ولی اگه n تا برنچ باشن و در طول t ماه یا T سال مکررا ادغام شده باشن، کد ما هم توی برنچ n+1 ام به مرور با سینک شدن با برنچ اصلی بعد هر بار ادغام، هی کانفلیکت‌های کوچیک کوچیک ازش برطرف‌ شده و یهویی بعد t ماه یا T سال با یه دریایی از کانفلیکت مواجه نمیشیم. مثلا توی عکس زیر می‌بینین که وقتی برنچ Feature A با برنچ Develop ادغام شده همون موقع برنچ Develop هم با برنچ Feature B که هنوز در دست توسعه‌ست سریعا ادغام شده.خب حالا که این ایده‌ها رو داریم پس بذارین با Git Flow آشنا بشیم؛ از اونجایی که اگه بخواین هی کد بزنین و با برنچ اصلیتون (main یا master) ادغام کنین همون مشکل عدم وجود یه کد پایدار برای استقرار، که توی Solo Development هم بهش اشاره کردیم رو داریم. خب پس توصیه می‌شه از روی برنچ اصلی یه برنچ با اسم dev یا develop ساخته بشه و این ماجرا روی این برنچ اتفاق بیوفته تا مادامی که تصمیم بگیریم وضعیت develop به جایی رسیده که با برنچ اصلی ادغام بشه (یعنی کد ما به وضعیت قابل استقرار رسیده). در این حالت یه شاخه جدید به اسم release ایجاد می‌کنیم، بررسی نهایی و باگ‌فیکس‌هایی که لازمه رو انجام میدیم، تگ می‌زنیم و با برنچ‌های main و develop ادغامش می‌کنیم و عمر شاخه‌ی release ایجاد شده همینجا تموم میشه.مطابق عکس بالا برنچ release فقط بوجود اومده تا برنچ develop رو با برنچ main ادغام کنیم و هر تغییری در این برنچ انجام شد بر روی برنچ develop هم اعمال بشه.حالا اگه چیزی که روی برنچ main داریم، خدایی نکرده باگی براش پیدا بشه و چیزی که داریم روی پروداکشن استفاده می‌کنیم مشکل‌دار باشه سریع از شاخه main یه شاخه جدید به اسم hot fix ایجاد می‌کنیم و باگ رو برطرف و دوباره با برنچ‌های موجود ادغامش می‌کنیم. خب همه چیز خیلی خوب شد تا اینجا، اما مشکلی که همچنان داریم اینه که برنچ‌ها توی Git Flow به اصطلاح Long-live هستن و ممکنه همونطور که گفتیم و تو شکل زیر، برنچ Feature B رو می‌بینین، عمر یه برنچ ممکنه T سال طول بکشه. این موضوع گفته شده با [CI[7 در تناقضه چون برنچ اصلیتون دیر به دیر به‌روز می‌شه و برنچ dev هم مناسب نیست که روی پروداکشن[8] بره؛ خب حالا چیکار کنیم؟علاوه بر مورد فوق استراتژی‌های Github Flow و Gitlab Flow رو هم داریم ولی چون حوصله سر بر میشه ترجیحم اینه خودتون برین بخونینشون (ایده‌ی اصلیشون همینه ولی کمی تعداد برنچ‌ها رو کم و زیاد کردن که ماجرا با ساختار Github و Gitlab سازگارتر باشه)‏‏Trunk Based Branching:یکی از مسائلی که کلا توی فضای توسعه نرم‌افزار شاهدش هستیم اینه که یه سری از تیم‌های نرم‌افزاری خیلی علاقه‌مندن که هر فیچری که می‌زنن، سریع قابل دسترس باشه و حتی فرآیند استقرارشون رو هم اتوماتیک می‌کنن که این مسئله هرچه بهتر انجام بشه. از طرفی هم مشکل بخش قبلی رو داشتیم؛ این شد که Trunk[9] Based Branching به وجود اومد. توی این مدل از برنچینگ، برای کوچک شدن کانفلیکت‌ها، کدها زود به زود با شاخه اصلی ادغام میشن. همینطور توی این مدل از برنچینگ دیگه خبری از شاخه‌ی dev نیست و از برنچ اصلی master یا main یا همون trunk هر بار یه شاخه زده میشه و وقتی با trunk ادغام میشه فرآیند CI هم اتفاق میوفته و اینطوری کدی که توی trunk هستش همیشه آماده‌ی استقراره.توی این مدل از برنچینگ تمرکز روی اینه که شاخه‌ها Short-live باشن برای همین هر برنچ باید تا پایان روز ادغام بشه.حالا سوالی که پیش میاد، اگه کد اون برنچ کامل نشده باشه یا باگ داشته باشه چی میشه؟ مسئله‌ای که هست اینه که نباید به‌خاطر کامل نبودن ادغامش نکنیم. بلکه ادغام می‌کنیم و از Feature Toggle استفاده می‌کنیم. Feature Toggle قابلیتیه که به ما اجازه میده برای فیچرهای مختلف کدمون تصمیم بگیریم؛ مثلا بگیم این فیچر فقط به کاربرهایی نشون داده بشه که در فلان منطقه سرویس دریافت می‌کنن یا این یکی فیچر فقط به کاربرهای پریمیوم داده بشه و… . خب پس ما از همین قابلیت استفاده می‌کنیم تا اگه کدمون آماده نبود اصلا جایی استفاده نشه که مشکلی هم پیش نیاره :). Trunk Based بیشتر به‌ درد تیم‌های کوچیک و محصولات پویا و Git Flow به درد تیم‌های بزرگ که می‌خوان ساختارمند برنامه تولید کنن میخوره.تا اینجا با ۳ مدل مهم برنچینگ آشنا شدیم. بازم مدل‌های دیگه هست مثل Mainline یا Fork Branching ،Release Branching ،Task Branching و … .مثلا Fork Branching رو بیشتر توی توسعه‌ی برنامه‌های متن‌باز می‌بینیم که یه fork از کد اصلی می‌زنه و در نهایت کد پایانی رو با یه pull request با کد اصلی ادغام می‌کنن. خب بیشتر ادامه نمیدم، اگه کنجکاو بودین مابقی استراتژی‌ها رو خودتون سرچ کنین، بخونین و از این به بعد بسته به ابعاد پروژه یا تیمتون استراتژی‌ای رو انتخاب کنین که براتون بهینه‌تره…پانویس‌ها:‏‏[1] Version Controller:یک ابزار یا سیستمیه که توسط اون میتونین نسخه‌های قبلی کدتون رو هم نگه‌ دارین و هر وقت خواستین به هر نسخه‌ای که خواستین کدتون رو بازگردانی کنین.‏‏[2] Solo: به معنی تنها یا انفرادی هستش؛ یعنی کاری رو بدون همکاری بقیه انجام بدین.‏‏[3] Branch:به معنی یک شاخه از کد است که اگر هر تغییری روی این شاخه از کد ایجاد کنید الزاما آن تغییر بر روی شاخه‌های دیگر تاثیری نخواهد داشت.‏‏[4] Conflict:وقتی دو چیز با هم مغایرت داشته باشن.‏‏[5] Merge:همان ادغام کردن یک شاخه با شاخه‌ی دیگری است.‏‏[6] Pair Programming: به حالتی که دو برنامه‌نویس با هم یک کد رو میزنن به طوری که یکی کد میزنه و دیگری داره کد رو میبینه و اگه نظری داره میگه.‏‏[7] CI: مخفف واژه‌ی Continuous Integration و به معنای ادغام مکرر می‌باشد.‏‏[8] Production: به محیط استقرار کد و کارکرد آن به صورت یک برنامه یا سرویس بر روی یک سرور گفته می‌شود.‏‏[9] Trunk:به معنی تنه درخت هستش؛ اسمش هم از اینجا اومده که مثل تنه‌ی درخت یه شاخه‌ی اصلی داریم و مابقی شاخه‌های درخت شاخه‌های فرعی هستن.منابع:https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflowhttps://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Wed, 11 Sep 2024 00:16:58 +0330</pubDate>
            </item>
                    <item>
                <title>دوآپس؛ حلقه گمشده توسعه نرم‌افزار</title>
                <link>https://virgool.io/Faramatn/%D8%AF%D9%88%D8%A2%D9%BE%D8%B3-%D8%AD%D9%84%D9%82%D9%87-%DA%AF%D9%85%D8%B4%D8%AF%D9%87-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-svrqoi6njgfu</link>
                <description>به قلم دانیال خراسانی‌زاده، ورودی ۹۹ مهندسی کامپیوتر صنعتی اصفهانبازنگری‌شده توسط مهشید شیرانی و مهدی قاسمی، ورودی ۱۴۰۱ و ۹۹ کارشناسی مهندسی کامپیوتر صنعتی اصفهانرویداد سی‌تی‌افی که چند‌وقت پیش در دانشگاه برگزار شد، برای من تجربه متفاوتی بود. قبل از این، به عنوان عضوی از تیم اجرایی با رویداد‌ها همراه بودم. اما در سی‌تی‌اف به عنوان یک ناظر خارجی سعی کردم به بچه‌ها کمک کنم. این موقعیت جدید باعث شد چیزهایی رو ببینم که قبلا با این شفافیت نمی‌تونستم ببینم و حتی اگر می‌دیدم، علاوه بر دیدن این مشکلات، حالا با دانشی که از کار و یادگیری‌های یک سال اخیرم کسب کرده بودم، راه‌حل احتمالی اون‌ها رو هم می‌دونستم.اما این مشکلات چه چیزهایی بودن؟ توی این رویداد بچه‌هایی که توی تیم فنی بودن، وقت زیادی رو صرف پیاده‌سازی بخش‌های مختلف کرده بودن و با تمام وجود به بهتر شدن کیفیت اهمیت می‌دادن. اما با وجود این، در فرآیند رسیدن کارهاشون به دست شرکت‌کننده‌ها مشکلات خیلی زیادی مثل ناهماهنگی، دیده‌نشدن و برنامه‌ریزی نشدن کارها از قبل و کندی در استقرار دیده می‌شد.تمام این مشکلات، الگوهایی هستن که خیلی وقته در توسعه نرم‌افزار دیده می‌شه و متخصص‌های این حوزه راه‌حل‌های مختلفی براشون ارائه دادن. یکی از این راه‌حل‌ها فرهنگ دوآپسه. فرهنگی که به ما کمک می‌کنه تیم‌های توسعه، استقرار و کاربرها رو در کنار هم قرار بدیم.دوآپساما دوآپس چیه؟معمولا هرکس تعریف متفاوتی از دوآپس داره، اما اگر تمام این تعاریف رو جمع‌آوری کنیم و نقطه مشترکشون با هم رو پیدا کنیم، این نقطه مشترک، همکاری تیم‌های توسعه و تیم‌های زیرساخت در تمامی چرخه تولید نرم‌افزاره.دوآپس به ما میگه روش‌های قدیمی مدیریت زیرساخت رو کنار بذاریم و در کنار توسعه‌دهنده‌ها و با استفاده از تکنیک‌هایی که خیلی وقته در دنیای نرم‌افزار به عادت تبدیل شده، زیرساخت‌هامون رو توسعه بدیم.اما چرا باید به این روش جدید اعتماد کنیم؟ از کجا معلوم این تغییرات باعث نشن وضعمون از اینی که الان هست هم بدتر بشه؟آمار نشون می‌ده که شرکت‌هایی که فرهنگ دوآپس رو در پیش گرفتن، دویست برابر سریع‌تر به نیازهای جدید پاسخ میدن، سی برابر سریع‌تر تغییرات رو به دست کاربرها می‌رسونن و بر خلاف تصور این کار رو با مشکلات شصت برابر کمتر انجام میدن و در زمان وقوع مشکل، شصت برابر سریع‌تر اون رو حل می‌کنن.همه ما بیش از هر‌چیز به دنبال بهینه‌کردن ساختارهای تولید نرم‌افزار برای رسیدن به محصولاتی هستیم که در عین پایداری، به سرعت خودشون رو با تغییر نیازهای کاربر وفق می‌دن. برای رسیدن به این هدف، ما نیاز به یک راه و سنجه‌هایی برای سنجش عملکردمون داریم و دوآپس دقیقا همین‌هارو در اختیار ما قرار می‌ده.بیاید با مسیری که دوآپس در پیش پای ما قرار می‌ده شروع کنیم.فرهنگاولین توصیه دوآپس به ما ایجاد یک فرهنگ مولده.در یک سازمان مولد، همه افراد روی یک هدف خاص تمرکز دارن و به همین خاطر برای رسیدن به این هدف به هم کمک می‌کنن. در چنین جایی، مسئولیت‌ها به اشتراک گذاشته میشه و کسی به خاطر مشکلات سرزنش نمیشه و به همین‌خاطر افراد بدون ترس از بازخواست‌شدن، ایده‌های جدید رو امتحان می‌کنن و سازمان رو به سمت هدفش پیش می‌برن.در کنار یک فرهنگ مولد، دوآپس با الگوگیری از روش‌های مدیریتی Lean و Agile به ما توصیه می‌کنه که سه چیز رو همیشه به خاطر داشته باشیم:‏1. Systems thinkingبرای رسیدن به یک نرم‌افزار خوب، تلاش افراد و تیم‌های مختلفی نیازه. خیلی وقت‌ها، ما بدون توجه به این کل، سعی می‌کنیم قسمتی از چرخه تولید نرم‌افزار رو بهینه کنیم. این کار معمولا باعث می‌شه که نابهینگی‌های چرخه تولیدمون از یک قسمت، به قسمت دیگه منتقل بشه و در نهایت، در سرعت تولید ارزش برای کاربر تفاوتی ایجاد نشه. دوآپس به ما توصیه می‌کنه که به جای تمرکز روی نقاط مختلف سازمان، دید کل‌نگری داشته باشیم و سعی کنیم که مشکلاتی که در تمام قسمت‌هایی که از ورود ایده کاربر به چرخه تا رسیدن محصول به دست کاربر وجود داره رو در کنار هم ببینیم و بهینه کنیم.‏2. Amplify feedback loopsیکی از مهم‌ترین چیزهایی که برای رسیدن به یک سیستم خوب نیاز داریم، بازخوردهای مداوم و مفیده. چون به خاطر طبیعت پویا و همیشه در حال تغییر نرم‌افزار، فقط بازخورده که می‌تونه به پاسخگویی بهتر به نیازهای کاربر کمک کنه. بیشتر اوقات ما سعی می‌کنیم که یک چرخه بازخورد با کاربر ایجاد کنیم اما در دوآپس این کافی نیست، ما باید بین تیم‌ها و افراد مختلفی که در چرخه تولید ارزش برای کاربر قرار دارن هم چرخه‌های بازخوردی ایجاد کنیم که در صورت بروز مشکل، این مشکل رو برای حل شدن سریع‌تر به بخش‌های دیگه اطلاع بدن.‏3. Continuous experimentationدر نهایت، دوآپس به ما می‌گه که در زمان مشاهده مشکل،‌ نباید از آزمون و خطا بترسیم بلکه باید برای حل مشکل راه‌های مختلفی که در نظر داریم رو امتحان کرده و اگر به پاسخ دلخواهمون نرسیدیم یاد بگیریم که کجای مسیر رو اشتباه رفتیم و با این دانش جدید، دوباره برای حل مشکل تلاش کنیم.اندازه‌گیرییکی از مهم‌ترین کارها در رسیدن به هر‌هدفی، داشتن سنجه‌های دقیق و اندازه‌گیری فاصلمون با هدفه. دوآپس در کنار نشون دادن مسیر، پیشنهاد می‌ده که برای رسیدن به هدف تولید نرم‌افزار خوب از چهار سنجه استفاده کنیم. با توجه به دیدگاه دوآپس، این سنجه‌ها باید دو خصوصیت مهم داشته باشن، اول اینکه باید روی هدف کلی تمرکز کنن و سعی در بهینه کردن یک قسمت خاص نداشته باشن و دوم اینکه به جای اندازه‌گیری حجم کار خروجی، نتایج مفید رو اندازه‌گیری کنن.‏Lead Timeسنجه اولی که به اون می‌پردازیم، فاصله بین تعریف نیاز کاربر تا رسیدن راه‌حل اون نیاز به دستش رو می‌سنجه. کاهش این سنجه در دو مورد به ما کمک می‌کنه.1. در زمان ارائه یک قابلیت جدید به کاربرها، کوتاه‌بودن زمان رسیدن قابلیت به دست اون‌ها، طول چرخه بازخورد رو کاهش می‌ده و به ما کمک می‌کنه که سریع‌تر مسیرمون رو برای رسیدن به خواسته‌هاشون اصلاح کنیم.2. در زمان مشاهده یک مشکل در محصول در دست کاربر، با کاهش زمان رسیدن نرم‌افزار به دست اون، می‌تونیم سریع‌تر از گذشته مشکل رو حل کرده و پچ مورد نیاز رو به دستش برسونیم.‏Deployment Frequencyکاهش اندازه هر یک از خروجی‌های تیم نرم‌افزاری، هزینه‌های برنامه‌ریزی و ریسک ایجاد مشکل در هنگام تغییرات بزرگ رو کاهش می‌ده و میزان بازخوردهای دریافت‌شده رو افزایش می‌ده. اما اندازه‌گیری میزان خروجی یک تیم نرم‌افزاری پیچیده‌ست و به همین خاطر، ما می‌تونیم با اندازه‌گیری تعداد استقرارهای محصول در یک بازه زمانی، و تلاش برای افزایش اون، اندازه هر‌آپدیت نرم‌افزار رو کاهش بدیم.‏Mean time to restoreدو سنجه قبلی که درباره اون‌ها صحبت کردیم، به افزایش سرعت توسعه می‌پردازن. اما افزایش سرعت توسعه نباید به کاهش پایداری محصول منجر بشه و به همین خاطر دو سنجه دیگه رو برای جلوگیری از این اتفاق در نظر می‌گیریم. هیچ نرم‌افزاری بدون باگ نیست و به خاطر پیچیدگی و سرعت توسعه نرم‌افزارهای امروزی، بدون شک زمانی پیش می‌یاد که با قطعی سیستم مواجه بشیم. در چنین مواقعی مهمه که سعی کنیم در حداقل زمان ممکن نرم‌افزارمون رو دوباره به پایداری برسونیم و همواره برای کاهش این زمان تلاش کنیم.‏Change Fail Percentageدومین سنجه‌ای که دوآپس برای افزایش پایداری نرم‌افزار به ما پیشنهاد می‌ده، درصد تغییراتیه که با مشکل مواجه می‌شن. با تلاش برای کاهش مقدار این سنجه، ما می‌تونیم از پایداری بیشتر قابلیت‌های جدیدی که به دست کاربرمون می‌رسه مطمئن بشیم.‏‏‏Continuous delivery‏تا اینجای کار درباره اینکه دوآپس چیه، روی چه چیزهایی تاکید می‌کنه، و چطور سنجیده می‌شه صحبت کردیم. اما چطور باید به دوآپس برسیم؟یکی از چیزهایی که خوبه برای رسیدن دوآپس بهش توجه کنیم، Continuous Delivery هستش. این مفهوم، مجموعه‌ای از روش‌هاست که به ما کمک می‌کنه تغییرات رو به سرعت و با پایداری به دست کاربر برسونیم و با این کار به اهداف دوآپس نزدیک‌تر بشیم. در قلب Continuous Delivery پنج اصل وجود داره:‏1. Build quality inاین اصل به ما می‌گه که در تمامی مراحل تولید نرم‌افزار به کیفیت توجه کنیم. این کار باعث ایجاد چرخه‌های بازخورد کوتاهی می‌شه که به ما کمک می‌کنن مشکلات رو خیلی زودتر از زمانی که به دست کاربر می‌رسن تشخیص بدیم و با هزینه کمتری حل کنیم.‏2. Work in small batchesقبل از این هم به اهمیت کاهش حجم خروجی تیم توسعه در هر مرحله اشاره کردیم، یکی از دلایلی که ما کمتر به سمت این روش می‌ریم و همیشه بعد از انجام تغییرات خیلی بزرگ، محصول رو منتشر می‌کنیم، هزینه ارائه این تغییرات به مراحل بعدی چرخه تولید نرم‌افزار مثل تست و استقراره، که Continuous Delivery سعی می‌کنه با تغییر ساختار تولید نرم‌افزار، این هزینه رو کاهش بده تا در هر تغییر، اون تغییر رو ساده‌تر به مراحل بعدی تولید نرم‌افزار برسونیم و با گرفتن بازخورد سریع‌تر، مشکلات رو کشف و با هزینه کمتر اون‌ها رو رفع کنیم.‏3. Computers perform repetitive tasks; people solve problemsمعمولا افراد مختلفی که در چرخه تولید نرم‌افزار نقش دارند، افراد متخصصی هستن که به خاطر دانش و تواناییشون در حل مشکلات شناخته می‌شن. پس بهتره که بار کارهای تکراری مثل تست‌های در هنگام انتشار نرم‌افزار که به‌راحتی به‌وسیله کامپیوترها انجام می‌شه رو از روی شونه اون‌ها برداریم و حل مسائل مهم‌تر رو به اون‌ها بسپاریم.‏4. Relentlessly pursue continuous improvementبرای بهتر شدن چرخه تولید نرم‌افزار هیچ سقفی وجود نداره، چهارمین اصل Continuous Delivery، ما رو به راضی نشدن به وضعیت موجود و تلاش همیشگی برای بهتر کردن روندها دعوت می‌کنه.‏5. Everyone is responsibleاصل پنجم Continuous Delivery، با تفکر سیستمی و فرهنگ سازمانی مولد ارتباط تنگاتنگی داره. این اصل به ما می‌گه که همه افراد سازمان، باید بدون توجه به نقششون، نسبت به تولید ارزش برای کاربر مسئول باشن و برای رسیدن محصول نهایی به دست کاربر تلاش کنن.شاید پیاده‌سازی دوآپس در یک رویداد دانشجویی کار پیچیده‌ای باشه، اما دوآپس مسیر بی انتهاییه که در هر جایی از اون باشیم، از ده قدم عقب‌تر وضع بهتری داریم و به همین خاطر، به نظرم شناخت و تلاش برای رسیدن به دوآپس در هر جایی می‌تونه به نرم‌افزارهای با کیفیت‌تر در کنار آرامش بیشتر، کمک کنه. از طرف دیگه، رویدادهای دانشجویی زمین بازی خوبی برای امتحان کردن و یادگیری هستن. به همین خاطر به همه توصیه می‌کنم در هر جایی که با تولید نرم‌افزار درگیر هستن، پا در مسیر دوآپس بذارن و برای بهتر شدن نرم‌افزارها تلاش کنن.منابعدر راه رسیدن به دوآپس منابع مختلفی برای استفاده وجود داره و متنی که مطالعه کردید، برداشت و چکیده من از این کتاب‌ها بود. اگر به دوآپس علاقه‌مند شدید، می‌تونید برای آشنایی بهتر با خودش و روش‌های پیاده‌سازیش از این کتاب‌ها استفاده کنید:- Lean Enterprise- Continuous Delivery- DevOps Handbook- Effective DevOps- Accelerate</description>
                <category>نشریه فرامتن</category>
                <author>نشریه فرامتن</author>
                <pubDate>Sat, 29 Jun 2024 17:45:23 +0330</pubDate>
            </item>
            </channel>
</rss>