AMD.POWER
مدیر بازنشسته
برنامه نویسی در اندروید
مدتی است که سیستم عاملهای گوشیهای هوشمند بسیار پیشرفت کردهاند و گل سرسبد این سیستمها هم اندروید یک سیستم عامل مبتنی بر لینوکس و آشناست که بسیاری از کاربران تلفنهای همراه هر روز از آن استفاده میکنند. سوالی که در این زمینه پیش میآید این است که حال که گوشیهایی با CPU های اینچنین قدرتمند وجود دارند و میتوان هسته لینوکس را نیز از طریق آنها به اجرا درآورد، چه کارهای دیگری را میتوان با این گوشیها انجام داد؟ یکی از چیزهایی که نظر مرا جلب کرد، برنامه نویسی بود که ابزارهای فوقالعادهای نیز برای آن پیدا کردم که شرح آنها را بیان میکنم.
در سیستم عاملهای غیر آزاد کارهایی صورت پذیرفته که تنها یکی از آنها برای من بسیار چشمگیر بود و آن، برنامه TouchDevelop ساخته Microsoft Research است. تاچدولپ خود یک زبان و یک برنامه به همین اسم برای اجرای این زبان است. نکته ی خیلی جالب این است که با این که تاچدولپ محصول غول انحصارهای جهان است اما شما برای این که بتوانید برنامهای را منتشر کنید ملزم به این هستید که کد آن را نیز منتشر کنید!!! (تاچدولپ را میتوانید در اینجا پیدا کنید)
اما برنامههای آزاد و متن بازی که شما میتوانید از آنها استفاده کنید به شرح زیر هستند:

SL4A
اولین و شاید بهترین چیزی که تا به حال نوشته شده (از نظر من) SL4A (مخفف: Scripting Layer For Android) یکی از پروژههای متن بازی است که توسط یکی از برنامه نویسان اندروید در گوگل شروع شده است که البته ربطی به گوگل ندارد. این پروژه، یک محیط برای اجرای برنامهها به صورت ترمینالی، یک ویرایشگر، تعدادی API برای ساختن امکانات پایه ای رابط کاربری مثل دیالوگهای درخواست متن و مسیج باکسهاو… و استفاده از امکانات، سنسورها، هسته و… در اندروید و تعداد زیادی مفسر برای زبانهای مختلف به همراه دارد که تعدادی از این مفسرها به صورت پیشفرض نصب هستند و تعداد دیگری را باید خودتان تهیه کرده و به مجموعه اضافه کنید. این برنامه تا به اینجا میتواند زبانهای: Shell, BeanShell 2.0b4, HTML, JavaScript, JRuby, Lua 5.1.4, PHP 5.3.3, Perl 5.10.1, Python 2.6.2 و Rhino 1.7R2 را پشتیبانی کند! عالی نیست؟ این برنامه همچنین امکانات دیگری مانند موتور TTS (نوشته به صدا) و چند ویژگی دیگر برای وب و… را نیز به زبانها اضافه کرده است. همانطور که شما میتوانید برنامهها را با مفسرها اجرا کنید، میتوانید مفسرها را به طور جداگانه نیز اجرا کرده و اسکریپت نویسی لحظهای انجام دهید.
مفسر Python در حال اجرا

Terminal IDE
تقریبا تمام کسانی که مثل ما از سیستم عاملهای شبه یونیکس (به جز Mac) استفاده کردهاند ترمینال را دوست دارند و یا عاشق آن هستند. ابزار خیلی جالبی به نام Terminal IDE در اندروید پیدا کردم که تقریبا همان امکانات ترمینال در سیستم عاملهای شبه یونیکس را با کمی تغییر داراست. همچنین امکاناتی خارقالعاده نیز برای گوشیهایتان به همراه دارد که خیلی دوستش خواهید داشت! برنامههایی که در محیط این ابزار وجود دارند عبارتند از VIM, GNU Nano, GNU Midnight Commander, TMUX, BitchX, GIT و ابزارهای کامپایل جاوا. یک کیبورد مخصوص با دکمههای ناوش (بالا، پایین و…) و CTRL, ALT, TAB,FN و SHIFT به شما توانایی استفاده از این محیط را میدهد. این برنامه همچنین مستندات بسیار کاملی درباره ی کامپایل کردن برنامههای Java, C و ++C دارد. من خودم تا به حال با این برنامه کار نکردم، تنها نکته ی غمانگیز درباره این برنامه دوست داشتنی، عدم وجود GCC در ابزارها است و راستش را بخواهید نصب GCC هم تقریبا مقدور نیست (به خاطر محدودیتهای لایه root) اما به عنوان یک ترمینال برای من ابزاری عالی است. (این برنامه تحت GPL منتشر شده است)
Androidmono
(با برنامه Mono For Android که توسط Xarmin تولید شده اشتباه نشود) اندرویدمونو یک نسخه ی غیر رسمی از runtime معروف مونو میباشد که تقریبا تمامی امکانات مونو را در اختیار کاربر قرار میدهد! شما کافیست این برنامه را اجرا کنید و سپس به ترمینال بروید، حالا فایل EXE خود را که با کامپیوتر یا به وسیله ابزارهای دیگر ساختهاید در ترمینال اجرا کنید. میدانم که این برنامه، ابزار کامپایل نیست و IDE هم نیست اما یک runtime کامل است که به توسعه برنامهها بسیار کمک میکند! این پروژه دیگر توسعه داده نمیشود اما به خاطر اپن سورس بودن آن میتوانید خودتان مشکلاتش را برطرف کنید! متاسفانه من نتوانستم این برنامه را راه بیندازم و این همه آن چیزی بود که من از این برنامه دیدم:

Addi
این برنامه را میتوان نسخه ی پورت شده GNU Octave دانست. به راحتی میتوانید با زبان Matlab اسکریپت کنید و محاسباتتان را انجام دهید، همه چیز بر اساس هسته اصلی اکتاو به خوبی طراحی شده و برنامه میتواند فایلهای M اکتاو را هم پشتیبانی کند. یک نسخه دیگر شبیه به این برنامه به اسم AddiPlot هم توسط شخصی دیگر تولید شده که در آن روی بخش ترسیم گراف و نمودارها بیشتر کار شده و برنامه در این زمینه پایدارتر عمل میکند.
اینها همه آن چیزی بود که من تا به حال پیدا کردهام اما واقعیت این است که همه این ابزارها با وجود تلاش بینظیر سازندگان و کاربرانشان هنوز بسیار ساده و ابتدایی هستند و مشکلات بزرگی در سر راهشان قرار دارد. من هنگامی که وارد دنیای گوشیهای هوشمند شدم از همان ابتدا به دنبال ابزارهای برنامه نویسی روی این گوشیها بودم و برنامههای زیادی را امتحان کردم (این برنامهها تنها برنامههای درست و حسابی و آزاد بودند) اما در تمام این مدت برنامهای پیدا نکردم که قابلیت ساختن UI کامل داشته باشد یا API های خوبی برای شما فراهم کند. همه این پروژهها برای شروع بسیار خوب هستند ولی محدود و کوچکند و شخصا آرزو میکنم روزی امکان نوشتن برنامههای عالی برای تلفنهای همراه و در تلفنهای همراه واقعا وجود داشته باشد!
مدتی است که سیستم عاملهای گوشیهای هوشمند بسیار پیشرفت کردهاند و گل سرسبد این سیستمها هم اندروید یک سیستم عامل مبتنی بر لینوکس و آشناست که بسیاری از کاربران تلفنهای همراه هر روز از آن استفاده میکنند. سوالی که در این زمینه پیش میآید این است که حال که گوشیهایی با CPU های اینچنین قدرتمند وجود دارند و میتوان هسته لینوکس را نیز از طریق آنها به اجرا درآورد، چه کارهای دیگری را میتوان با این گوشیها انجام داد؟ یکی از چیزهایی که نظر مرا جلب کرد، برنامه نویسی بود که ابزارهای فوقالعادهای نیز برای آن پیدا کردم که شرح آنها را بیان میکنم.
در سیستم عاملهای غیر آزاد کارهایی صورت پذیرفته که تنها یکی از آنها برای من بسیار چشمگیر بود و آن، برنامه TouchDevelop ساخته Microsoft Research است. تاچدولپ خود یک زبان و یک برنامه به همین اسم برای اجرای این زبان است. نکته ی خیلی جالب این است که با این که تاچدولپ محصول غول انحصارهای جهان است اما شما برای این که بتوانید برنامهای را منتشر کنید ملزم به این هستید که کد آن را نیز منتشر کنید!!! (تاچدولپ را میتوانید در اینجا پیدا کنید)
اما برنامههای آزاد و متن بازی که شما میتوانید از آنها استفاده کنید به شرح زیر هستند:

SL4A
اولین و شاید بهترین چیزی که تا به حال نوشته شده (از نظر من) SL4A (مخفف: Scripting Layer For Android) یکی از پروژههای متن بازی است که توسط یکی از برنامه نویسان اندروید در گوگل شروع شده است که البته ربطی به گوگل ندارد. این پروژه، یک محیط برای اجرای برنامهها به صورت ترمینالی، یک ویرایشگر، تعدادی API برای ساختن امکانات پایه ای رابط کاربری مثل دیالوگهای درخواست متن و مسیج باکسهاو… و استفاده از امکانات، سنسورها، هسته و… در اندروید و تعداد زیادی مفسر برای زبانهای مختلف به همراه دارد که تعدادی از این مفسرها به صورت پیشفرض نصب هستند و تعداد دیگری را باید خودتان تهیه کرده و به مجموعه اضافه کنید. این برنامه تا به اینجا میتواند زبانهای: Shell, BeanShell 2.0b4, HTML, JavaScript, JRuby, Lua 5.1.4, PHP 5.3.3, Perl 5.10.1, Python 2.6.2 و Rhino 1.7R2 را پشتیبانی کند! عالی نیست؟ این برنامه همچنین امکانات دیگری مانند موتور TTS (نوشته به صدا) و چند ویژگی دیگر برای وب و… را نیز به زبانها اضافه کرده است. همانطور که شما میتوانید برنامهها را با مفسرها اجرا کنید، میتوانید مفسرها را به طور جداگانه نیز اجرا کرده و اسکریپت نویسی لحظهای انجام دهید.
مفسر Python در حال اجرا

Terminal IDE
تقریبا تمام کسانی که مثل ما از سیستم عاملهای شبه یونیکس (به جز Mac) استفاده کردهاند ترمینال را دوست دارند و یا عاشق آن هستند. ابزار خیلی جالبی به نام Terminal IDE در اندروید پیدا کردم که تقریبا همان امکانات ترمینال در سیستم عاملهای شبه یونیکس را با کمی تغییر داراست. همچنین امکاناتی خارقالعاده نیز برای گوشیهایتان به همراه دارد که خیلی دوستش خواهید داشت! برنامههایی که در محیط این ابزار وجود دارند عبارتند از VIM, GNU Nano, GNU Midnight Commander, TMUX, BitchX, GIT و ابزارهای کامپایل جاوا. یک کیبورد مخصوص با دکمههای ناوش (بالا، پایین و…) و CTRL, ALT, TAB,FN و SHIFT به شما توانایی استفاده از این محیط را میدهد. این برنامه همچنین مستندات بسیار کاملی درباره ی کامپایل کردن برنامههای Java, C و ++C دارد. من خودم تا به حال با این برنامه کار نکردم، تنها نکته ی غمانگیز درباره این برنامه دوست داشتنی، عدم وجود GCC در ابزارها است و راستش را بخواهید نصب GCC هم تقریبا مقدور نیست (به خاطر محدودیتهای لایه root) اما به عنوان یک ترمینال برای من ابزاری عالی است. (این برنامه تحت GPL منتشر شده است)
Androidmono
(با برنامه Mono For Android که توسط Xarmin تولید شده اشتباه نشود) اندرویدمونو یک نسخه ی غیر رسمی از runtime معروف مونو میباشد که تقریبا تمامی امکانات مونو را در اختیار کاربر قرار میدهد! شما کافیست این برنامه را اجرا کنید و سپس به ترمینال بروید، حالا فایل EXE خود را که با کامپیوتر یا به وسیله ابزارهای دیگر ساختهاید در ترمینال اجرا کنید. میدانم که این برنامه، ابزار کامپایل نیست و IDE هم نیست اما یک runtime کامل است که به توسعه برنامهها بسیار کمک میکند! این پروژه دیگر توسعه داده نمیشود اما به خاطر اپن سورس بودن آن میتوانید خودتان مشکلاتش را برطرف کنید! متاسفانه من نتوانستم این برنامه را راه بیندازم و این همه آن چیزی بود که من از این برنامه دیدم:

Addi
این برنامه را میتوان نسخه ی پورت شده GNU Octave دانست. به راحتی میتوانید با زبان Matlab اسکریپت کنید و محاسباتتان را انجام دهید، همه چیز بر اساس هسته اصلی اکتاو به خوبی طراحی شده و برنامه میتواند فایلهای M اکتاو را هم پشتیبانی کند. یک نسخه دیگر شبیه به این برنامه به اسم AddiPlot هم توسط شخصی دیگر تولید شده که در آن روی بخش ترسیم گراف و نمودارها بیشتر کار شده و برنامه در این زمینه پایدارتر عمل میکند.
اینها همه آن چیزی بود که من تا به حال پیدا کردهام اما واقعیت این است که همه این ابزارها با وجود تلاش بینظیر سازندگان و کاربرانشان هنوز بسیار ساده و ابتدایی هستند و مشکلات بزرگی در سر راهشان قرار دارد. من هنگامی که وارد دنیای گوشیهای هوشمند شدم از همان ابتدا به دنبال ابزارهای برنامه نویسی روی این گوشیها بودم و برنامههای زیادی را امتحان کردم (این برنامهها تنها برنامههای درست و حسابی و آزاد بودند) اما در تمام این مدت برنامهای پیدا نکردم که قابلیت ساختن UI کامل داشته باشد یا API های خوبی برای شما فراهم کند. همه این پروژهها برای شروع بسیار خوب هستند ولی محدود و کوچکند و شخصا آرزو میکنم روزی امکان نوشتن برنامههای عالی برای تلفنهای همراه و در تلفنهای همراه واقعا وجود داشته باشد!