ویرایشگر سایپرس، محیط برنامه نویسی به زبان Tcl مخصوص OpenSees بخش اول، معرفی

ویرایشگر سایپرس ، یک محیط برنامه نویسی به زبان Tcl  ( و )است که منحصرا برای تولید اسکریپتهای نرم‌افزار OpenSees  تدارک دیده شده است. اولین نسخه‌ی برنامه را در تاریخ ۸ سپتامبر ۲۰۱۶ یا ۱۸ شهریور ۱۳۹۵ منتشر کردم. تا لحظه‌ی تدوین این نوشتار، دو بروزرسانی دیگر هم برای آن تهیه و منتشر شده است. این نرم‌افزار برای استفاده به هر منظور تجاری، تحقیقاتی و غیر تجاری کاملا رایگان بوده و خواهد ماند (هرچند که نرم‌افزار متن‌باز نیست و برنامه‌ای هم برای متن باز کردن آن، تا این لحظه، ندارم و کاربران مجاز به تغییر در عملکرد برنامه نیستند). برای دریافت آخرین نسخه‌ی برنامه می‌توانید به صفحه‌ی خانگی نرم‌افزار  مراجعه کنید. این نرم‌افزار از سوی وب‌سایت اصلی OpenSees  نیز معرفی شده است. (همچنین نگاه کنید به اینجا ). در انتشار فراگیر سایپرس، حمایت آقای دکتر مک‌کنا  ()، خالق OpenSees قابل ستایش است. از این ایشان تشکر ویژه می‌کنم.

ویرایشگر سایپرس چیست؟
ویرایشگر سایپرس یک محیط کدنویسی به زبان Tcl است که برای تهیه‌ی مدلهای محاسباتی قابل ترجمه و تحلیل توسط OpenSees توسعه داده شده است. سایپرس برای کاربران خود امکاناتی را فراهم آورده تا روند تولید مدلهای ریاضی/محاسباتی سازه‌ها را به فرآیندی ساده‌تر تبدیل کرده و کاربر را از انجام کارهای تکراری و خسته‌کننده بی‌نیاز می کند. از امکانات قابل توجه سایپرس می‌توان موارد زیر را به طور خلاصه برشمرد:
۱. محیط برنامه‌نویسی پیشرفته و کاربر پسند.
۲. ویرایشگر هوشمند نسبت به دستورات و واژه‌های کلیدی زبان.
۳. تجمیع مجموعه‌ی فایلهای مرتبط با یک مدل محاسباتی در قالب یک راه‌ حل.
۴. مبصر خروجی تحلیلی به صورت زمان واقعی با عملکرد غیر همزمان.
۵. تعریف و استفاده‌ی چندباره از تکه کدهای دلخواه.
۶. تعریف مصالح سازه‌ای به صورت بصری و امکان استفاده‌ی چندباره.
۷. کاوشگر دستورات زبان و ... امکانات دیگر. (در عمل ببینید )

سایپرس چگونه شکل گرفت؟
پیش از هر چیز، اجازه بدهید در خصوص نامگذاری نرم‌افزار توضیح مختصری داده باشم. در ابتدا تصمیم گرفتم نام نرم‌افزار را سرو بگذارم. اما برای ثبت در شورای عالی انفورماتیک  ایران، لازم است نام نرم‌افزار یکتا باشد. به همین دلیل با حفظ معنا، از معادل انگلیسی آن  استفاده کردم. 
ابتدای سال ۱۳۹۵، در حال کار بر روی پروژه‌ای تحت OpenSees بودم. اگر پیشتر با OpenSees کار کرده باشید، می‌دانید که تولید مدلهای تحلیلی برنامه، روند سخت و زمان‌گیری دارد. بویژه هر چه مدل شما بزرگتر و پیچیده‌تر باشد، تهیه‌ی مدل OpenSees آن هم، سخت و سخت‌تر خواهد بود. تقریبا اسکریپت تحلیل مدل تمام بود. در آن زمان - و متاسفانه تا کنون - رایج‌ترین محیط کدنویسی OpenSees ویرایشگر ابتدایی TclEditor بود ( و همچنان هست ) و من هم از فرط اجبار از همان ویرایشگر استفاده می‌کردم. اگر تجربه‌ی کار با TclEditor را داشته باشید، حتما می‌دانید که به وضوح، محیط ساده و به شدت ضعیفی دارد. روزی، در حال نهایی کردن فایل مدل بودم که بنا به نیاز مجبور به استفاده‌ی دوبار پیا‌پی از Undo شدم. و ناگهان... بووووم. NotResponding و ... احتمالا قابل حدس است که کل فایل از بین رفت! به همین سادگی!
همان زمان بود که به فکر افتادم که:
۱. این محیط کدنویسی (TclEditor) به هیچ وجه دیگر قابل اعتماد/استفاده نیست. (هرچند که هنوز طرفداران زیادی دارد!)
۲. باید به فکر جایگزین کردن یک برنامه دیگر باشم.
با قدری جستجو در اینترنت، متوجه شدم که نرم‌افزار دیگری که نیازهای مرا برآورده کند و همزمان، استفاده از آن نیاز به مجوزهای خاص نداشته باشد، تقریبا وجود ندارد. خب، چاره چیست؟ واقعا حیف است که برنامه‌ی سوپر قدرتمند و محبوبی چون OpenSees فاقد یک محیط کدنویسی مناسب باشد. چرا تا کنون تلاشی جدی در این‌باره انجام نشده است؟ (در این خصوص بعدا بیشتر خواهم گفت) بالاخره، روزی، شخصی باید این کار را شروع کند. و آن روز همان روز بود و احتمالا من هم همان شخص. تصمیم گرفتم دست به کار شوم. و نهایتا حاصل چیزی شد که هم‌اکنون می بینید، ویرایشگر سایپرس.
پس از تکمیل نسخه‌ای که تقریبا آماده‌ی استفاده‌ی عمومی باشد، با آقای دکتر مک‌کنا مکاتبه‌ای داشتم. ایشان ضمن استقبال، پس از بررسی مستندات، برنامه را بر روی وب سایت OpenSees معرفی کردند. طی ۶ ماه گذشته، سایپرس توسط بیش از ۳۱۰۰ کاربر از ۵۲ کشور جهان دانلود و استفاده شده است و همچنان ادامه دارد.

چگونه و از چه ابزارها و فن‌آوری‌هایی استفاده شده است؟
برنامه توسط زبان قدرتمند سی‌شارپ و توسط محیط یکپارچه‌ی Visual Studio 2013  توسعه داده شده است. از ابزارها و فن‌آوری‌هایی همچون LINQ, JSON و همین‌طوری تعدادی ابزار آماده‌ی متن‌باز رایگان استفاده شده است. نکته اینکه در توسعه‌ی سایپرس، بر خلاف تمام محدودیتهای موجود، از هیچ ابزار قفل شکسته‌ای استفاده نشده و آنچه که مورد استفاده قرار گرفته، تحت مجوزهای قانونی ناشر/مالک آن بوده و مشخصات آنها توسط دستور Help برنامه در دسترس است. تمام الگوریتمها، نمونه‌ها و کدهای مورد نیاز را به صورت شخصی تهیه و تدارک دیده‌ام و برای توسعه، از بودجه و کمک مادی و معنوی هیچ شخص، نهاد، سازمان، موسسه، اعم از انتفاعی یا غیره، بهره نگرفته‌ام. همچنین میزبانی وب‌سایت نرم‌افزار، با هزینه‌ی شخصی و در دامنه‌ی hrshojaie.com و به آدرس http://cypress.hrshojaie.com  انجام می‌شود. هرچند که از نظرات کارشناسانه‌ی تعدادی از دوستان و همکاران کمک گرفته‌ام. علاوه، در طول مدت زمانی که از انتشار عمومی سایپرس می‌گذرد، کاربران بسیاری، نظرات بسیار امیدوارکننده‌ی خود را از طریق ایمیل با من در میان گذاشتند. فروتنانه از همه‌ی آنها متشکرم.
قطعه کد زیر، فایل تهیه شده توسط ویرایشگر را برای ترجمه،‌در اختیار OpenSees قرار می‌دهد و نتایج حاصل را به صورت زمان‌واقعی۱ در اختیار کاربر قرار می‌دهد.
 
/// <summary>
/// Execute the script
/// </summary>
/// <param name="scriptPath">Physical path to the script.</param>
/// <param name="mainForm">Main container</param>
public static async Task<List<string>> Execute(string scriptPath, FrmMainForm mainForm)
{
    var psi = new ProcessStartInfo
    {
        FileName = Settings.Default.OsPath,
        Arguments = path,
        CreateNoWindow = true
    };

    var result = await ProcessExtender.RunAsync(psi, mainForm);
    return result.StandardError.ToList();
}
 
اکنون وضعیت توسعه‌ی سایپرس چگونه است؟
بازخوردهای فراوانی را کاربران سایپرس دریافت کرده‌ام. در کنار توجه خاص به نظرات/خواسته‌ها/پیشنهادات کاربران، تغییرات نسبتا متعددی را در غالب نسخه‌ی جدیدی از نرم‌افزار تدارک دیده‌ام که آماده‌ی انتشار است. اما متاسفانه به دلیل گرفتاری‌های بیشمار، تاکنون موفق به انتشار عمومی آن نشده‌ام. اما طبق پیش‌بینی، برای اواسط اردی‌بهشت ماه سال جاری، روز شیراز ، این نسخه‌ی خاص را منتشر خواهم کرد.
روند توسعه همچنان ادامه خواهد داشت تا به تدریج، روند تکاملی آن طی شود و به شرایط مطلوبی برسد. این شروع کار است و بی‌تردید، راه درازی پیش‌روست.
آنچه که به صورت خلاصه و مختصر مطالعه کردید، مقدمه‌ای بود بر ویرایشگر سایپرس. در ادامه، به صورت تخصصی به بحث و بررسی در خصوص نحوه‌ی استفاده از آن خواهم پرداخت.
 
[۱] RealTime

منابع

مقالات مرتبط

برچسب‌ها: ویرایشگر سایپرس OpenSees
آدرس کوتاه:
اولین دیدگاه را شما ارسال کنید.