سلام
در کتاب ها کلمات foo و bar زیاد دیده میشه
کسی میدونه این کلمات یعنی چی و چرا اینقدر زیاد اشتفاده میشه ؟
با تشکر
سلام
در کتاب ها کلمات foo و bar زیاد دیده میشه
کسی میدونه این کلمات یعنی چی و چرا اینقدر زیاد اشتفاده میشه ؟
با تشکر
سلام
من هم زیاد دیدم.
یک مدت رفتم دنبالش ببینم چیه، دیدم همه سرشون رو انداختند زیر، دور از جون شما مثل گوسفند ازش فقط استفاده می کنند. هیچ کدوم نمی دونند یعنی چی.
این گوگل هم یک ایرادهای اساسی داره. مثلا می خواهید که ببینید معنی foo و bar چیه، حالا باید چی سرچ کنید مثلا؟ کلی result میاره که مثال کد برنامه نویسی هستند. نه معنی.
شما به جای foo و bar می تونید از همون A و B یا class1 و class2 استفاده کنید.
سلام
منشا این کلمات بطور دقیق شناخته شده نیست . این کلمه شاید از کلمه نظامی FUBAR بدست اومده باشه .
بر اساس نظریه بالا FOO مخفف Forward Observation Officer به معنی یک افسر خط مقدم ارتش انگلیس در جنگ جهانی اول می باشد .
صرف و کاوش این واژه در Internet Engineering Task Force (IETF) ما رو به این نتایج میرسونه که این واژه در کارتونهای سال 1930 که کارتونهایی مثل دافی داک و اسموکی استوور و پوگو استفاده شدند و از اینجا به واژه های نظامی تبدیل شدند .
BAR به عنوان واژه دوم در این سری واژه ، احتمالا در الکترونیک توسعه یافته است ، در جاییکه یک سیگنال معرف "روشن" با یک منفی یا شرایط ولتاژ صفر با خط افقی روی سیگنال برچسب شده است . نماد برای یک سیگنال معکوس "Foo" و سپس در مجموع به صورت FOOBAR تلفظ می شود .
به احتمال فراوان استفاده از FOO برای هکر ها و سرانجام در مفاهیم برنامه نویسی از موسسه Tech Model Railroad Club آغاز شده است . برای اطلاع از فعالیت این موسسه به این لینک برید .
منبع
به هر حال از هزار سال پیش که نیومده! جدیدا استفاده میشه. خوب اول از همه کی به کارش برد؟The origins of the terms are not known with certainty
اگه بی رگ و ریشه هست، حالا چرا خیلی ها اصرار دارند که این کلمات بی معنی را به کار ببریم؟ خوب مثلا Fire و Water یا Evil و Angel که خیلی قشنگتره تا این Foo و Bar !
دیکشنری:
نام عمومی برای موارد غیر قابل اندازه گیری و نا معلوم در علوم کامپیوتر.
foo
n. general name used for indefinite items (i.e. computer files, programs etc.)
مشکل اینه که خوب همین کلمه چطور ساخته شده. حتی ساده ترین کلمات از جایی آمده اند.
اون چندین هزار سال پیش که بشر تونست حرف بزنه رو نمی گم. ولی بعدش دیگه همه ی کلمات یک رگ رو ریشه یی داشتند. مثلا اکثر کلمات تک سیلابل با تغییر واج از یک زبان به زبان دیگه رفتند و یک شکل دیگه شدند.
مثلا در زبان انگلیسی به شیر میگند میلک و در آلمانی میگند میلش. یا کتاب یه آلمانی میشه بوخ.
جالبه "مزگت" فارسی چون شکل اسم مکان بود و واقعا هم معنی مکان(عبادتگاه) می داد، عرب ها اومدند ازش ریشه ی سجد رو گرفتند. و بعد کلمه ی مسجد و ساجد و سجاده و ... رو ازش ساختند.
کلمه های دو سیلابلی معمولا از ترکیب تک سیلابلی ها تشکیل شدند. گاهی معنی اون تک سیلابلی ها ممکنه که فراموش بشه اما خود کلمه ی دو سیلابلی همچنان پر کاربرد باشه.
مثلا آسمان بوده: آس + مان
آس مثل آس و پاس
مان مثل مان در گفتمان.
برای همین هم هست که بهش میگند چرخ گردون (چرخ آس و پاس!)
یا آفتاب: افت(افتادن) + تاب(تابش)
جالبه بدونید که کلماتی مثل رحلت و رحیل و رحل قرآن اگر چه به ظاهر بی ارتباط معنایی هستند، اگر دقیق اونا رو ریشه یابی کنیم می بینیم که هم خانواده بودن اونا بی ازتباط یا تصادفی نبوده. (مجال توضیحش اینجا نیست)
یا اینکه چرا کلماتی مثل جنین و جانی و جن و (و عذر می خواهم. گوشتون رو بیارید جلو: جنده) با هم خانواده شدند، تصادفی نبوده و دلیل داره. اگر چه اگر به یک معلم مدرسه بگویید جنین با جانی هم خوانده هست، به دلیل عدم ارتباط معنایی اون رو ممکنه رد کنه(نصف بیشتر معلم های ما بی سوادند. اگه مایل بودید، ثابت می کنم)
در حالی که این چند کلمه عنصر جن که به "مخفی بودن" اشاره داره رو در خود داره. جن آشکار نیست. جنین هم در دل مادر مخفیه. جانی هم همیشه داره قایمکی زندگی می کنه. و ... رو هم که خودتون می دونید!
مثال زیاده. مجالش نیست. خودم رشته م مهندسی برق هست. اما از یک استاد(نه از این استاد های دو زاری) ادبیات بپرسید می تونه کلی مثال بهتون بگه.
حتی کلماتی مثل "خفن" هم از روی هوا نیومدند.
خلاصه اوج بلند جان و eshpilen جان، هیچ واژه یی در دنیا بی معنی نیست. foo و bar هم نمی تونند از این قاعده مستثنی باشند.
من به خود کلمه کار ندارم شاید واقعا ریشهء لغوی داشته باشه (راستی پیدا کردی به منم خبر بده).لاصه اوج بلند جان و eshpilen جان، هیچ واژه یی در دنیا بی معنی نیست. foo و bar هم نمی تونند از این قاعده مستثنی باشند.
بعضی وقتا منظور ما واقعا انتخاب یه چیزی هست که جهتگیری و معنای قابل استنباطی نداشته باشه و صرفا یک Placeholder محض باشه.
مثلا من توی بقیهء فرومها آیدیم رو گذاشتم Folaani، بخاطر اینکه خواستم آیدیم هیچ جهت گیری و معنای سیاسی و عقیدتی و احساسی و غیره نداشته باشه (و خواننده بفهمه این فقط یه آیدی برای حضور و ارتباط هست و نه حامل معنا و گرایش خاصی) چون شاید شخصیت و نظرم در آینده عوض شد، ولی آیدی رو نمیشه براحتی عوض کرد (ولی مثلا امضا رو میشه). بخصوص که اون موقع واقعا نمیخواستم و نمیتونستم ببینم چه چیزی از بین اینهمه چیز بنظرم مهمتر و برام جذابتر هست و میخوام عموم مردم هم ازش مطلع بشن؛ اینطوری اون چیز خاص درنظر بقیه مهمتر و جذابتر بود برای من درحالیکه اونطور نبود و نمیتونستم با یه آدی و چند کلمهء محدود تمام چیزهایی رو که بنظرم بصورت تقریبا برابر مهم و جذاب هستن بیان کنم. بنابراین یه آیدی رو انتخاب کردم که بنظرم هیچ محتوی غیر از روش برای حضور و ارتباط خنثی رو نداشت.
حالا این foo و bar هم نهایتش معنی داشته باشن باید یه چیزی درحد هرچیزی و فلانی و اینطور چیزا باشه!!
و این خیلی فرق میکنه با کلمات معنا دار مثل Fire و Water و غیره. این کلمات بدرد کاربردهای فنی خنثی نمیخورن و معنای خاصی رو به ذهن میرسونن و ذهن خواننده رو منحرف میکنن. ما کلماتی میخوایم که خنثی باشن و فقط بصورت Placeholder برای هرچیزی، بصورت برابر، دیده بشن.
قشنگی دنیا به همون معنادار بودنشه.
آب و آتش هم جهتی به کسی نمیدند ولی معنا دارند.
هر چیزی که معنادار باشه بهتر در ذهن می مونه. شما فرض کن بهتون بگند که این ضرب المثل بی معنی رو در فلان جا به کار ببر:
AAA BBB CCC
خودت باشی این کار رو می کنی؟ با اینکه می دونی معنای ظاهری ضرب المثل اهمیت اصلی رو نداره.
مردم هم از الفاظ بی معنی دوست ندارند استفاده کنند و اگر بخواهیم Place Holder محض داشته باشیم، مثل رباضی به کار بردن x و y هم کافیه.
بله اتفاقا مثل همون ریاضی هست خیلی جاها.
حالا اینکه چرا بجای x و y از foo و bar استفاده میشه و امثالهم، بازم دلیلش بنظر من واضح هست. چون x و y توی برنامه ها متداول هست (مثلا بعنوان مختصات نقاط). foo و bar کاملا متمایز هستن و احتمال اینکه در بخش دیگری از کد و الگوریتم کاربرد و معنای خاصی داشته باشن خیلی کم هست.
بنظر من از قیافه و بی معنایی و خصوصیات این اسم ها، هدف و کاربردشون مشخص هست.
یه چیزایی هستن که در هرجایی بیان کاملا متمایز هستن و جای دیگه کاربرد و معنی ندارن. انتخاب طول 3 کاراکتر هم بنظرم انتخاب بهینه ای هست برای چنین منظوری. چون هم کوتاهه هم تلفظش راحته هم تایپ کردن راحت و در عین حال بقدر کافی متمایز از بقیهء کد و غیرمعمول هست و انتظار نمیره جای دیگه ای با کاربرد و معنای دیگری دیده بشن یا مورد نیاز باشن.
اسم های دو حرفی معمولا خیلی جاها بکار میرن و احتمال برخورد یا شباهت اونها با هم زیاد هست. تک حرفی ها هم که بیشتر اینطور هستن.
البته foo از bar بهتره چون غریب تر و کم مشابه تر هست. bar معنی هایی داره در دیکشنری و در بعضی کدها بعنوان اسم معنا دار بعضی متغییرها و مخفف و سرنام احتمالش بیشتر هست که انتخاب بشه.
بهرحال این دوتا از لحاظ شکل و تلفظ چون تمایز واضحی از همدیگر دارن بعنوان جفت مکمل که نمایندهء دو Placeholder مختلف یک کد مثال باشن به قوارهء همدیگر میخورن!
آخرین ویرایش به وسیله eshpilen : جمعه 23 مهر 1389 در 14:54 عصر
سایت ictzone حسابی ته و توی این قضیه رو در آورده:
http://ictzone.ir/2016/02/03/%D9%85%...DB%8C-foo-bar/
اگر شما در کلاس ها تدریس کنید و مخصوصا اگر شاگردان با کامپیوتر آشنا نباشند متوجه می شوید که چقدر ذهن آنها نسبت به نام گذاری متغیرها سخت گیر است و اگر همیشه x و y بگذارید آنها تصور می کنند که فقط باید متغیر یک حرفی باشد و اگر کلمات معنی دار بگذارید مثلا total و .. آنها فکر می کنند که این کلمات keywordها هستند.
به همین دلیل بهتر است که به صورت واضح به آنها بگویید که هر چیزی می تواند نام یک متغیر یا identifier (نام تابع / کلاس و ...) باشد.
کلمات foo و bar از جلمه این واژه ها هستند و در کتاب ها و منابع پایتون کلمات eggs, spam , ham بکار برده می شود و به اینها اصطلاحا place holder می گویند . یعنی هر کلمه ای می تواند به جای آنها قرار گیرد و این کلمه مهم نیست.
اما پیشنهاد من برای تدریس این است که در ایران از نام هایی مانند زیر استفاده کنیم که کاملا بچه ها / دانش آموزان / دانشجویان بدانند که هر نامی می توانند انتخاب کنند:
ایده از کلمات بی معنی اجی مجی لا ترجی:
aji = 10
maji = 20
if aji > maji:
print('ok')
ایده از اتل متل توتوله:
totoleh = lambda atal , matal: atal + matal
البته مهرتاش (یک دوست برنامه نویس حرفه ای من معمولا از متغیر sosk / سوسک همیشه مثال می زد)
جالب است که بدانید که بچه ها کاملا از این اسامی استقبال می کنند و ترس احتمالی که از دیدن نام متغیرهای انگلیسی (مخصوصا دانش آموزان) دارند مرتفع می گردد. بدیهی است که اگر شما یک متن برای مخاطبین حرفه ای تولید می کنید بهتر است از همان foo و bar و ... استفاده نمایید.
آخرین ویرایش به وسیله farshid_mi : سه شنبه 07 اسفند 1397 در 01:12 صبح