خوش آمدید به رمان ۹۸ | بهترین انجمن رمان نویسی

رمان ۹۸ با هدف ترویج فرهنگ کتاب خوانی و تقویت قلم عزیزان ایجاد شده است.
هدف ما همواره ایجاد محیطی گرم و صمیمی و دوستانه بوده
برای مطالعه کامل رمان‌ها و استفاده از امکانات انجمن
به ما بپیوندید و یا وارد انجمن شوید.

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
در زیر نمونه‌هایی از زبانهای برنامه‌نویسی محرمانه آورده شده‌است:

Befunge
زبان Befunge و هم خانواده‌های آن به اشاره گر کد اجازه می‌دهند که در جاهای مختلف کد قرار داشته باشند. برای نمونه این برنامه یک برنامه hello world است با قرار دادن برعکس کاراکترها در پشته بعد چاپ آن‌ها به وسیله چاپ ساعت گرد با این کدها [>], [:],و، [_], [,], d [^].

"dlroW olleH">:v
^,_@

Binary Lambda Calculus
به وسیله تئوری داده‌ها الگوریتمیک ابداع شد و دید آن اینگونه است که کد چگال تر با معنای حداقلی طرح ۲۹ بایت خود مترجم و غیره.

Brainfuck
این زبان برای حداقل کردن کد طراحی شده که منجر به ناخوانا شدن کد می‌شود. خروجی این برنامه hello world است.

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+. +++++++

.. +++.>++.<<+++++++++++++++.>. +++. ----. ----.>+.>.

Chef
این زبان پشته گرا توسط David Morgan-Mar برای اینکه برنامه‌ها را مانند دستور آشپزی کند طراحی شده‌است. برنامه‌ها شامل عنوان و مقادیر دادها و لیستی از دستورات پشته‌های پیاده‌سازی شده‌است.

FALSE
این زبان یک زبان بر مبنای پشته با دستورها و مقادیر تک کاراکتری است. برای مثال ۳+۱ می‌تواند به وسیله![+λ x → x + 1)(3): 3[1) محاسبه شود.

INTERCAL
کوتاه شده یک «زبان کامپایلری بدون سرنام» است.

LOLCODE
برای بازسازی [:en:lolcats]طراحی شده‌است. در ذیل یک سثال hello world آورده شده‌است.

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

Malbolge
Malbolge برای زبان‌های بسیار سخت و محرمانه طراحی شده‌است.

کامپیوتر تک دستوری
یک ماشین زبان با فقط یک عملگر است.


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
piet زبانی است که توسط David Morgan-Mar ابداع شد کسی برنامه سازی بیت مپ‌های آن مانند یک هنر انتزاعی است. کامپایل شدن به وسیله یک اشاره گر که در اطراف تصویر حرکت می‌کند برای یک دامنه رنگی ادامه دار تا رنگ بعدی انجام می‌شود. ۲۰ رنگ موجود است که رفتار آن‌ها پیش‌بینی شده‌است. ۱۸ تا از آن‌ها رنگ‌های رنگی هستند که به صورت ۶ رنگ و ۳ طیف روشنایی مختلف مرتب شده‌اند؛ و رنگ سیاه و سفید مرتب نشده‌اند. زمانی که یک رنگ رنگی موجود است و یک رنگ دیگر وارد می‌شود پروسه انجام شده توسط تعداد سطوح رنگ و روشنایی که تغییر کرده‌اند مشخص می‌شود. سیاه نمی‌تواند وارد شود؛ زمانی که اشاره گر سعی می‌کند که به یک ناحیه سیاه وارد شود قوانین انتخاب بلوک بعدی تغییر می‌کند. اگر تمامی قوانین انجام شوند برنامه تمام خواهد شد. سفید عملی را انجام نمی‌دهد فقط به اشاره گر اجازه می‌دهد که عبور کند. رنگ‌های غیر از این ۲۰ رنگ به کامپایلر یا مترجم ارجاع داده می‌شوند. متغیرها در یک پشته به عنوان یک متغیر integer علامت دار ذخیره می‌شوند. بیشتر پروسه‌های مشخص شده مربوط به عملیات پشته خواهد بود. بقیه به وسیله دستورهای ورودی خروجی و به وسیله دستوراهایی که اشاره گر کامپایل در حرکتش مشخص می‌کند مشخص می‌شود.

شکسپیر
زبان برنامه‌نویسی شکسپیر طراحی شده‌است که برنامه‌ها را مانند نمایش نامه‌های شکسپیر کند برای مثال دستور زیر مانند یک دستور goto است:

Act I: Hamlet's insults and flattery..

فضای خالی (Whitespace)
این زبان فقط از کاراکتر فضای خالی استفاده می‌کند(space,tabو return). این برخلاف خیلی از زبان‌های برنامه‌نویسی است که تفاوتی بین کاراکترهای فضای خالی نمی‌گذاراند. برنامه‌های با این زبان می‌توانند در سورس کدهای زبان‌هایی مانند c پنهان شوند.


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
در علوم رایانه، زبان عملی زبان برای مشخص کردن سیستم‌های انتقال حالت است و معمولاً برای ایجاد مدل‌های رسمی از اثرات اعمال بر روی جهان استفاده می‌شود. زبان‌های عملی معمولاً در حوزه هوش مصنوعی و رباتیک استفاده می‌شوند، جایی که آنها توصیف می‌کنند چگونه اعمال بر وضعیت سیستم‌ها در طول زمان تأثیر می‌گذارد و می‌تواند برای برنامه‌ریزی خودکار استفاده شود. زبان‌های عملی به دو دسته تقسیم می‌شوند: زبان توصیف عمل و زبان‌های درخواست عمل. نمونه‌هایی از اولی عبارتند از STRIPS, PDDL، زبان A (تعمیم STRIPS؛ بخش گزاره ای ADN Pednault)، زبان B (گسترش A، اضافه کردن اثرات غیر مستقیم، تشخیص قوانین استاتیک و پویا) و زبان C (که اثرات غیر مستقیم را اضافه می‌کند همچنین، و فرض نمی‌کند که هر روانی به‌طور خودکار) باشد. همچنین زبان‌های پرس و جو دو P, Q و R نیز وجود دارد. چندین الگوریتم مختلف برای تبدیل زبان‌های عملی (و به‌طور خاص، زبان عمل C)برای پاسخ دادن به برنامه‌های تنظیم وجود دارند. از آنجاییکه حل کننده‌های پاسخ دهنده مدرن از الگوریتمهای SAT بولین برای مشخص کردن رضایت به سرعت استفاده می‌کنند، این نشان می‌دهد که زبان‌های عملی می‌توانند از پیشرفت در حوزه حل SAT لـ*ـذت ببرند.

تعریف رسمی
تمام زبانهای عمل، تعریف یک سیستم انتقال حالت را با مجموعه ای از F تعریف می‌کنند، یک مجموعه V از مقادیری که ممکن است حالت سلیسی را بگیرد، و یک تابع نقشه‌برداری S × F به V، که S مجموعه ای از حالت‌های یک سیستم تغییر حالت است.


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
برنامه‌نویسی جنبه‌گرا روشی برای برنامه‌نویسی است که پس از برنامه و برای رفع مشکلات آن به وجود آمد. هدف از برنامه‌نویسی جنبه‌گرا، مستقل کردن وظایف (در قالب ماژول‌ها) است به‌طوری‌که کمترین تداخل را در یکدیگر داشته باشند تا نهایتاً بتوان از آن‌ها در برنامه‌های دیگر نیز استفاده نمود. برای مثال؛ وظیفهٔ احراز هویت در یک برنامه را می‌توان به عنوان یک جنبه در نظر گرفت و ماژول جداگانه‌ای برای آن ساخت تا از این پس در تمام پروژه‌های مشابه بتوان از آن استفاده کرد. بیشتر زبان‌های برنامه‌نویسی، از برنامه‌نویسی جنبه‌گرا پشتیبانی خوبی به عمل می‌آورند. می‌توان از آن جمله به جاوا و روش AspectJ اشاره کرد. به عنوان مثال برنامه‌ای را تصور کنید که از ماژول‌های مختلفی تشکیل شده‌است و حال می‌خواهید تمام پرس و جوهای پایگاه داده را در محلی ذخیره نموده و گزارشی تهیه نمایید. بدون استفاده از برنامه‌نویسی جنبه گرا بایستی در هر ماژول توابع جدید افزوده شوند و در تمام ماژول‌ها ممکن است بخشی از کد تکرار شود. اما با استفاده از برنامه‌نویسی جنبه گرا شما می‌توانید بدون اینکه در ماژول‌های دیگر تغییری ایجاد کنید یک ماژول دیگر بنویسید تا به صورت خودکار در ماژول‌های دیگر فراخوانی شده و اجرا شود. در این راستا امکان تنظیم اینکه هر متد در ماژول جدید در کدام قسمت از هر ماژول دیگر اجرا شود وجود دارد. شما می‌توانید بعد از اتمام اجرای بدنه کد، در تمام متدهای ماژول‌های دیگر، متدی با نام LogQuery را از ماژول جدید اجرا نمایید. بدون اینکه کد جدیدی به متدها افزوده شود.

برای برنامه‌سازی جنبه گرا میتوان از زبان‌های عادی مانند C، C++ یا جاوا استفاده کرد و بخش‌هایی را برای مشخص کردن قوانین تلاقی به آن اضافه نمود. این مفاهیم شامل برش نقطه‌ای (Point cut) ، نقاط اتصال (Join point) ، ابلاغیه (Advice) و جنبه (Aspect) هستند.


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
اتوماتای برنامه‌نویسی

برنامه‌نویسی مبتنی بر اتوماتیک
اتوماتای بر اساس برنامه‌نویسی نمونه‌ای از برنامه‌نویسی می‌باشد که برنامه و قسمت‌های مختلف آن سعی بر این دارند تا یک ماشین متناهی را مدل کنند.

برنامه‌نویسی مبتنی بر FSM
برنامه‌نویسی مبتنی بر FSM نیز مانند برنامه‌نویسی مبتنی بر اتوماتیک می‌باشد با این تفاوت که تمامی جنبه‌های ماشین متناهی را پوشش نمی‌دهد.

مشخصه‌های برنامه‌نویسی مبتنی بر اتوماتیک
موارد زیر مشخصه‌های برنامه‌نویسی مبتنی بر اتوماتیک است:

۱-زمان اجرای برنامه به وضوح از مراحل اتوماتا جدا می‌باشد. ۲-ارتباط میان مراحل فقط از طریق رفتن از یک وضعیت به وضعیت دیگر می‌باشد.

تمام مراحل اجرای یک اتومات به‌طور کلی یک چرخهٔ اتوماتا را می‌گویند.


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
برنامه‌ای در زبان C را در نظر که یک متن را از ورودی می‌خواند، خط به خط کلمه اول هر خط را چاپ می‌کند.

روش سنتی برنامه‌نویسی C
برنامه زیر می‌تواند مورد بالا را به روش سنتی برنامه‌نویسی C انجام بدهد:

# include <stdio.h>
int main(void)
{
int c;
do {
c = getchar();
while(c == ' ')
c = getchar();
while(c != EOF && c != ' ' && c != '\n') {
putchar(c);
c = getchar();
}
putchar('\n');
while(c != EOF && c != '\n')
c = getchar();
} while(c != EOF);
return 0;
}


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
روش برنامه‌نویسی مبتنی بر اتوماتیک

همان کاری که برنامه قبل انجام میداد را میتوانیم با ماشین متناهی انجام دهیم.توجه داشته باشید که تجزیه خطوط سه مرحله دارد :

1- عبور کردن از space ها

2- چاپ کردن کلمه

3- گذر از همهٔ حروف کلمه

برنامه به شکل زیر می‌باشد :

#include <stdio.h>
int main(void)
{
enum states {
before, inside, after
} state;
int c;
state = before;
while((c = getchar()) != EOF) {
switch(state) {
case before:
if(c == '\n') {
putchar('\n');
} else
if(c != ' ') {
putchar(c);
state = inside;
}
break;
case inside:
switch(c) {
case ' ': state = after; break;
case '\n':
putchar('\n');
state = before;
break;
default: putchar(c);
}
break;
case after:
if(c == '\n') {
putchar('\n');
state = before;
}
}
}
return 0;
}


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
اگرچه برنامه طولانی به نظر می‌رسد اما مزیت آن این است که فقط یک دستور خواندن دارد و همچنین تنها یک حلقه در برنامه وجود دارد نه 4 عدد.

کاملاً لازم نیست کد را به گرداننده‌ها ی جدا برای‌ها وضعیت تقسیم کنیم.برنامهٔ زیر همان کار برنامهٔ بالا را انجام می‌دهد با این تفاوت که یک مقدار کوتاه‌تر است.

#include <stdio.h>
int main(void)
{
enum states {
before, inside, after
} state;
int c;
state = before;
while((c = getchar()) != EOF) {
if(c == '\n') {
putchar('\n');
state = before;
} else
switch(state) {
case before:
if(c != ' ') {
putchar(c);
state = inside;
}
break;
case inside:
if(c == ' ') {
state = after;
} else {
putchar(c);
}
break;
case after:
break;
}
}
return 0;
}


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
تابعی جدا برای مرحله ی اتوماتیک
مهمترین ویزگی برنامه قبل این است که کد مرحله اتوماتیک به صورت محلی تعریف شده‌است. با یک تابع جدا برای این قسمت ما بهتر میتوانیم این ویژگی را اثبات کنیم.

#include <stdio.h>
enum states { before, inside, after };
void step(enum states *state, int c)
{
if(c == '\n') {
putchar('\n');
*state = before;
} else
switch(*state) {
case before:
if(c != ' ') {
putchar(c);
*state = inside;
}
break;
case inside:
if(c == ' ') {
*state = after;
} else {
putchar(c);
}
break;
case after:
break;
}
}
int main(void)
{
int c;
enum states state = before;
while((c = getchar()) != EOF) {
step(&state, c);
}
return 0;
}
این مثال به‌طور کامل ویژگی کد مبتنی بر اتوماتا را ثابت می‌کند.


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
جدول انتقال صریح و روشن
یک اتوماتای متناهی می‌تواند به‌طور صریح و روشن توسط جدول انتقال بیان شود. در برنامه زیر جدولی وجود دارد که برای هر ترکیب جدول شامل یک وضعیت جدید و یک پرچم می‌باشد.

#include <stdio.h>
enum states { before = 0, inside = 1, after = 2 };
struct branch {
unsigned char new_state:2;
unsigned char should_putchar:1;
};
struct branch the_table[3][3] = {
/* ' ' '\n' others */
/* before */ { {before,0}, {before,1}, {inside,1} },
/* inside */ { {after, 0}, {before,1}, {inside,1} },
/* after */ { {after, 0}, {before,1}, {after, 0} }
};
void step(enum states *state, int c)
{
int idx2 = (c == ' ') ? 0 : (c == '\n') ? 1 : 2;
struct branch *b = & the_table[*state][idx2];
*state = (enum states)(b->new_state);
if(b->should_putchar) putchar(c);
}

اتوماتا و اتوماسیون برنامه‌نویسی مبتنی بر متن نشان دهندهٔ مطابقت میان برنامه‌نویسی و اتوماسیون می‌باشد.

یک چرخهٔ تولید به‌طور کلی به صورت زیر مدل می‌شود.

1.مجموعه‌ای از مراحل که با ورودی مطابقت دارد.

2.مجموعه‌ای از کارها که با حالت کنونی مطابقت دارد.


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿
shape1
shape2
shape3
shape4
shape7
shape8
بالا