ⓘ جی, زبان برنامه‌نویسی. جِی یکی از زبان‌های برنامه‌نویسی است. زبان برنامه‌نویسی جی، که اوایل دهه ۱۹۹۰ توسط کنت ای آیورسن و Roger Hui شکل گرفت، یک ترکیب از زبان‌ه ..

                                     

ⓘ جی (زبان برنامه‌نویسی)

جِی یکی از زبان‌های برنامه‌نویسی است.

زبان برنامه‌نویسی جی، که اوایل دهه ۱۹۹۰ توسط کنت ای آیورسن و Roger Hui شکل گرفت، یک ترکیب از زبان‌های سطح تابع FP,APL و FL است.

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

علاوه بر این، برای حفظ تجزیه و سادگی زبان و برای جبران کمی تنوع کاراکترهای اسکی، بسیاری از کاراکترهایی که در زبان‌های دیگر نیازمند آن هستند که در تعادل نگه داشته شوند مثل {} " `` or در جی به صورت یک نشانه در نظر گرفته می‌شوند.

جی یک زبان برنامه‌نویسی آرایه‌ای بسیار مختصر است که اغلب برای برنامه‌نویسی‌های ریاضیاتی و آماری مناسب است؛ مخصوصاً هنگامی که بحث عملیات روی ماتریس باشد.

مانند زبان‌های FP/FL، جی از برنامه‌نویسی سطح تابع که همچنین با نام برنامه‌نویسی تابعی سطح بالا شناخته شده از ویژگی‌های برنامه‌نویسی نهان پشتیبانی می‌کند. توجه داشته باشید که برنامه‌نویسی سطح تابع با برنامه‌نویسی تابعی یکسان نیست

برخلاف بسیاری از زبان‌هایی که شیئ گرایی را پشتیبانی می‌کنند، طرح فضای نام سلسله مراتب منعطف جی جایی که اسامی در یک محل مشخص موجودند می‌تواند به‌طور مؤثر به عنوان یک چهارچوب برای هر نوع برنامه‌نویسی شیئ گرا مبتنی بر کلاس و نمونه اولیه مورد استفاده قرار گیرد.

جی یک زبان برنامه‌نویسی فون نیومن نیست، هر چند می‌تواند از سبک برنامه‌نویسی فون نیومن استفاده کرد.

جی قبلاً یک نرم‌افزار منبع بسته بود، اگر چه رایگان و قابل دسترس برای ویندوز و لینوکس بود ولی از مارچ سال ۲۰۱۱، تحت مجوز پروانه عمومی همگانی گنو قرار گرفت.

                                     

1. مثال‌ها

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

برنامه سلام جهان در جی عبارت است از:

!Hello, world

این پیاده‌سازی از سلام جهان یک استفاده سنتی از جی را منعکس می‌کند – برنامه‌ها وارد یک عنصر جی می‌شوند و نتایج عبارات نمایش داده می‌شوند. همچنین ممکن است که از اسکریپت‌های جی به صورت برنامه‌های جداگانه استفاده کرد. اما مکانیزم‌های مرتبط کردن یک اسکریپت با عنصر وابسته به ماشین به گونه‌ای است که در یک سیستم یونیکس دیده می‌شود:

bin/jc/!#!echo Hello, world exit

قبلاً APL از / برای نمایش برابری استفاده می‌کرد؛ بنابراین ۱۲۳/+ برابر با ۳+۲+۱ بود. در همان زمان، تقسیم با همان نماد تقسیم کلاسیک ریاضی نمایش داده می‌شد.÷ که با overstriking یک علامت منفی و یک دو نقطه ساخته می‌شد. از آن جا که اسکی عموماً overstrikeها را در یک روش وابسته به ماشین پشتیبانی نمی‌کند و یک نماد تقسیم را شامل نمی‌شود، جی از % برای نمایش تقسیم به عنوان یک تقریب یا یادآور استفاده می‌کند. آنچه در زیر آمده یک برنامه جی برای محاسبه میانگین لیستی از اعداد است:

#%/+:=avg 1 2 3 4 ۲٫۵

علامت # تعداد عناصر یک آرایه را می‌شمارد. /+ عناصر آرایه را باهم جمع می‌کند. % مجموع را بر تعداد عناصر تقسیم می‌کند. چند مثال از استفاده میانگین:

v=:?. ۲۰ $ 100 NB. a random vector v ۴۶ ۵۵ ۷۹ ۵۲ ۵۴ ۳۹ ۶۰ ۵۷ ۶۰ ۹۴ ۴۶ ۷۸ ۱۳ ۱۸ ۵۱ ۹۲ ۷۸ ۶۰ ۹۰ ۶۲ avg v ۵۹٫۲ 4avg\ v NB. moving average on periods of size ۴ ۵۸ ۶۰ ۵۶ ۵۱٫۲۵ ۵۲٫۵ ۵۴ ۶۷٫۷۵ ۶۴٫۲۵ ۶۹٫۵ ۵۷٫۷۵ ۳۸٫۷۵ ۴۰ ۴۳٫۵ ۵۹٫۷۵ ۷۰٫۲۵ ۸۰ ۷۲٫۵ m=:?. ۴ ۵ $ 50 NB. a random matrix m ۴۶ ۵ ۲۹ ۲ ۴ ۳۹ ۱۰ ۷ ۱۰ ۴۴ ۴۶ ۲۸ ۱۳ ۱۸ ۱ ۴۲ ۲۸ ۱۰ ۴۰ ۱۲ avg"1 m NB. apply avg to each rank 1 subarray each row of m ۱۷٫۲۲ ۲۱٫۲ ۲۶٫۴

Rank مفهومی حیاتی در جی دارد. اهمیت آن در جی شبیه به اهمیت "select" در SQL و "while" در سی است. در این جا مرتب‌سازی سریع در زبان جی اجرا می‌شود:

#sel=: adverb def u quicksort=: verb define if. 1>: #y do. y else. quicksort y sel e=.y{~?#y end.

                                     

2. انواع داده و ساختمان‌ها

جی از سه نوع داده‌ای ساده پشتیبانی می‌کند:

  • Boxed: جعبه
  • Numeric عددی
  • Literal Character:حروف کاراکتر

که اولین آن‌ها Numeric بیشترین تنوع را دارد. یکی از انواع داده‌ای عددی در جی، بیت bit است. دو مقدار برای بیت وجود دارد: صفر و یک. به علاوه بیت‌ها می‌توانند در لیست‌ها شکل بگیرند. برای مثال ۱ ۰ ۱ ۰ ۱ ۰ یک لیست از هشت بیت است؛ و قواعد جداکننده جی که با آن‌ها مانند یک کلمه ساده رفتار می‌کند، از لیست‌هایی با طول دلخواه پشتیبانی می‌شود.

افزون بر این‌ها جی ازهمه عملیات دودویی معمول روی این لیست‌ها، مثل AND, OR, XOR، چرخش، شیفت، NOT و غیره پشتیبانی می‌کند.

برای مثال:

1 0 1 0 1 0 +. 0 1 0 1 0 1 0 NB. or ۱ ۰ ۱ ۰ ۱ ۰ 3 |. 1 0 1 0 1 NB. rotate ۱ ۰ ۱ ۰ ۱

توجه کنید که جی همچنین از آرایه‌های مراتب بالاتر بیت‌ها نیز پشتیبانی می‌کند. آن‌ها می‌توانند به صورت آرایه‌های دو بعدی، سه بعدی یا چند بعدی شکل بگیرند. عملیات فوق روی این آرایه‌ها نیز به خوبی کار می‌کند.

انواع دیگر داده عددی شامل اعداد صحیح، اعداد اعشاری، اعداد مختلط، اعداد صحیح بزرگ و کسر گویا است. مانند بیت‌ها این انواع نیز می‌توانند در لیست‌ها یا آرایه‌های چند بعدی دلخواه قرار بگیرند.

لیست بیت‌ها می‌تواند با استفاده از # تبدیل یه یک عدد صحیح شوند. اعداد صحیح نیز می‌توانند با استفاده از #:verb به لیست‌هایی از بیت‌ها تبدیل شوند.

جی همچنین از نوع Literal حروف پشتیبانی می‌کنند. حروف در کوتیشن قرار می‌گیرند. برای مثال: a یا b. لیست حروف نیز همچنین با استفاده از قرار دادن چند حروف در کوتیشن مانند abcdefg پشتیبانی می‌شود. عمدتاً یک تک حرف هشت بیت فضا نیاز دارد اسکی. اما جی همچنین از دیگر حروف یونی کد پشتیبانی می‌کند.

عملیات عددی و منطقی روی حروف تعریف نشده‌اند، اما عملیات‌های مجموعه‌ای مانند چرخش تعریف شده‌اند.

آخرین نوع داده‌ای Boxed جعبه است. اغلب داده به وسیله یک عملگر> بدون هیچ آرگومان سمت چپ در یک Box قرار می‌گیرد. اگر سمت چپ عملگر> آرگومانی وجود داشته باشد، یک عملگر "کوچک‌تر از" خواهد بود این مشابه عملگر& در سی بدون هیچ آرگومان سمت چپ می‌شود. با این حال نتیجه & در سی معنای آدرس دارد، نتیجه> در جی، معنای ارزش می‌دهد.

از دیدگاه یک برنامه‌نویس جی ،> داده را در یک جعبه قرار می‌دهد و به برنامه‌نویس اجازه می‌دهد تا با یک آرایه از جعبه‌ها کار کند. می‌توان آن را با جعبه‌های دیگر سر هم کرد، و/ یا نسخه‌های دیگر از روی یک جعبه ساخته شود. داده‌های نمایش داده شده در جعبه به وسیله جی به گونه‌ای مشابه مدل‌هایی که برخی از مفسرهای SQL جدول نتایج عبارت انتخاب را می‌چیند، است.

                                     
  • شامل همه زبان های برنامه نویسی مهم می باشد. سامانه ای ای زبان برنامه نویسی آباپ زبان برنامه نویسی ای بی سی ای سی سی زبان برنامه نویسی اکشن اکشن اسکریپت
  • والا به انگلیسی: Vala یک زبان برنامه نویسی شئ گرا با مترجم خود میزبان است که کد زبان سی تولید می کند و از سیستم جی آبجکت استفاده می کند. از لحاظ نحو
  • در زیر فهرست زبان های برنامه نویسی بر پایه نوع آمده است: زبان های برنامه نویسی آرایه ای همچنین به عنوان برداری Vector یا چند بعدی Multidimensional
  • سی به انگلیسی: C siː یک زبان برنامه نویسی از نوع همه منظوره کامپایل شونده سطح میانی ساخت یافته دستوری و روندگرا می باشد که در سال توسط
  • هسکل به انگلیسی: Haskell یک زبان برنامه نویسی تابعی خالص به انگلیسی: purely functional استاندارد شده و همه منظوره با نوع داده مستحکم است که به یاد
  • فورترس جرالد جی ساسمن مشارکت در طراحی اسکیم آلن کولمرور خالق پرولوگ ریچ هیکی طراح کلوژر استیون ولفرم سازنده متمتیکا زبان برنامه نویسی مشارکت کنندگان
  • نرم افزار یک زبان برنامه نویسی همه منظوره زبانی است که برای نوشتن نرم افزار در زمینه های متنوع نرم افزاری به کار می رود. زبان برنامه نویسی همه منظوره معمولا
  • پایتون به انگلیسی: Python US: ˈpaɪθɑːn یک زبان برنامه نویسی شیءگرا تفسیری سطح بالا و همه منظوره است که خیدو فان روسوم آن را طراحی کرده است
  • زبان برنامه نویسی ترجمه شده و دارای زباله جمع کن و همروند است که در شرکت گوگل و توسط رابرت گریسیمر راب پایک و کن تامپسون توسعه داده می شود. این زبان
  • جاوا به انگلیسی: Java یک زبان برنامه نویسی شیءگرا است که نخستین بار توسط جیمز گاسلینگ در شرکت سان مایکروسیستمز ایجاد گردید و در سال به عنوان بخشی
  • اف ال اختصار برای مرتبه تابع یک زبان برنامه نویسی است ک در سال توسط جان باکوس جان ویلیامز و ادوارد ویمرز در مرکز پژوهشی آلمادن آی بی ام  en