در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
بزرگترین اشکال رایانه آن است که درک و فهم ندارد و نمیتواند هوشمندانه عمل کند. آن هوشمندی که در بسیاری زمینهها به رایانه نسبت داده میشود بخش کوچک و محدودی از تصمیمگیری بشری است که در رایانه شبیهسازی شده است، وگرنه رایانه هیچگاه هوشمند نبوده است.
انسان از هوش و خلاقیت و ابتکار خود استفاده و برنامهای طرح میکند، اما گاهی هرگز نمیتواند خودش آن برنامه را انجام دهد، زیرا هم دقت کافی ندارد و هم سرعت آن کم است. بنابراین شاید بتوان از سرعت و دقت و پشتکار رایانه برای انجام و پیادهسازی برخی بر نامههای ذهنی خود بهره برد. این دقیقا همان نقطهای است که با رسیدن به آن مفهوم برنامهنویسی مطرح میشود.
مهندس و برنامهنویس
واژه مهندس یک واژه کلی و عمومی است که در قلب خود مفهوم طراحی را در بر دارد. بسته به رشته و زمینه فعالیت، مهندس یک دید کلی نسبت به ابزارهای موجود دارد و همواره سعی دارد با استفاده از تفکر خود و ابزارها، دست به ارائه طرحهای کاربردی جدید و یا ساخت ابزارهای جدید برای کاربردهای آتی بزند. در یک زمینه خاص که طرح و طراحی به رایانه و نرمافزارهای رایانهای مربوط میشود در کنار مهندس نرمافزار، مفهوم دیگری تحت عنوان برنامهنویس مطرح میشود. یک برنامهنویس شخصی است که بخوبی میداند حرف خود را چگونه به رایانه بزند و منظور خود را به آن تفهیم کند. برخی افراد به یک یا چند زبان برنامهنویسی مسلط هستند و هر آنچه را که بخواهند میتوانند با استفاده از این زبانها به رایانه منتقل کنند و به عبارتی میتوانند برنامه مربوط به خواسته خود را بنویسند.
تعدد زبانها
همانطور که میدانیم تاکنون صدها زبان برنامهنویسی طراحی شده است و هریک به هدف خاصی به وجود آمدهاند. مسلم است که با استفاده از بعضی زبانها میتوان کارهای قابل انجام با برخی دیگر را نیز انجام داد و در مقابل بعضی از کارها بهتر است که با یک زبان خاص انجام شوند.
مفهوم تسلط و مهارت در برنامهنویسی از دو دیدگاه قابل برررسی است. گاهی فرد یک زبان توانمند همهمنظوره را انتخاب کرده و تا حد توان به آن زبان، قابلیتها، ریزهکاریها و فوت و فن آن تسلط پیدا میکند. معمولا اگر چنین اتفاقی بیفتد، شخص قادر است سطح وسیعی از نیازهای برنامهنویسی را پاسخگو باشد. در مقابل اگر زبان مورد نظر آن فرد قابلیت انجام کاری را نداشته باشد، آن فرد نیز نخواهد توانست برنامه مربوط به آن کار را بنویسد. از دیدگاه دیگر، افرادی هستند که برای هر زمینه از کارها یک زبان بخصوص را انتخاب میکنند و در نهایت یک دید کلی از چندین زبان به دست میآورند و تا حد امکان با آنها آشنایی پیدا میکنند. در این صورت برای هر برنامهای که بخواهند بنویسند، با توجه به امکانات هر زبان، یکی را برای کار خود انتخاب میکنند. البته توصیه میشود که قبل از مهاجرت به زبان دیگر حتیالامکان تواناییهای زبانی را که با آن کار کردهاید بدانید و پس از آن اگر احساس نیاز پیدا کردید زبان تکمیلی یا جایگزین دیگری انتخاب کنید. به عنوان یک دلیل برای این صحبت فرض کنید دو کار را بتوان به راحتی با یک زبان انجام داد، حال اگر فردی برای هریک از این کارها یک زبان جداگانه را در نظر بگیرد دو اشکال وجود خواهد داشت؛ یک مساله آن است که اگر فرد بخواهد آن دو کار را با هم ارتباط دهد، مسلما ارتباط دو برنامه با یک زبان راحتتر و کاراتر از دو برنامهای خواهد بود که هریک با یک زبان نوشته شدهاند. مساله دیگر آن است که فرد مجبور نیست گرامر و نحوه برنامهنویسی با دو زبان را یاد بگیرد و از این نظر نیز در هزینه زمانی صرفهجویی خواهد شد.
با تمام این صحبتها و با کنار هم قرار گرفتن این دیدگاهها، بهترین برنامهنویس، شخصی است که هر برنامهای که میخواهد یا از او خواسته میشود، مستقل از نوع زبان و تعداد زبانهای به کار رفته، آن را به طور کارا و بهینه بنویسد. اولویت اول در هر برنامه، سرعت و کارایی و سادگی کار با آن است. اینکه فرد با چه روشها و ابزارهایی به این اهداف میرسد، به سلیقه، دانش، خلاقیت و توانایی برنامهنویس بستگی خواهد داشت.
همکاری در ساخت نرمافزار
باید توجه داشت که برای دستیابی به یک نرمافزار جدید، 3 مرحله پیشرو خواهیم داشت. فکر و ایده اولیه، طراحی و پیادهسازی که البته هریک از اینها هم خود به مراحل دیگری تقسیم میشوند که میتوان آنها را نیز در جای دیگر مطرح کرد. اما ایدهپردازی، طراحی و پیادهسازی مراحلی هستند که میتواند توسط افراد متفاوتی انجام گیرد.
شخصی ممکن است هیچگونه شناختی از زبانهای برنامهنویسی و طریقه پیادهسازی نرمافزارها نداشته باشد یا نتواند به طور صحیح و اصولی به طراحی نرمافزار بپردازد، اما به دلیل شناخت نیازها و احاطه کامل به آنها بتواند ایدههای نرمافزاری خوبی پیشنهاد کند. با ارائه این پیشنهاد به مهندس نرمافزار، طرح آن برنامه در صورت امکان تهیه میشود. باید توجه داشت که یک ایده لزوما با امکانات موجود قابل پیادهسازی نیست و ممکن است در حد یک ایده باقی بماند، اما زمانی که طراح، آن ایده را به طرح تبدیل کرد یعنی میتوان آن را پیادهسازی کرد. به عبارت دیگر هر طرح باید قابل پیادهسازی باشد تا بتوان به آن این نام را نسبت داد.
حال مهندس نرمافزار با توجه به امکانات رایانهها و زبانهای برنامهنویسی یک طرح قابل پیادهسازی مطرح میکند، اما ممکن است دانش برنامهنویسی آن به قدری نباشد که بتواند خود، آن طرح را پیادهسازی کرده و به مرحله عمل برساند. به همین دلیل طرح خود را به برنامهنویس میسپارد و برنامهنویس با داشتن آگاهیهای لازم برنامه مورد نظر را نوشته و به یک نمونه عملی تبدیل میکند.
نکته بسیار مهمی که باید به آن توجه داشت آن است که هر چه ایدهپرداز، طراح و برنامهنویس به کار دیگری بیشتر آشنا باشند، برنامه نهایی به یک نرمافزار کامل و کماشکال نزدیکتر خواهد بود.
زمانی که یک برنامهنویس به طراحی آشنا باشد، بهتر میتواند در برنامهنویسی ابتکار عمل به خرج دهد و دست به خلاقیت بزند. یا زمانی که یک طراح به فنون برنامهنویسی مسلط باشد، میتواند طرح خود را براساس ساختارهای پر سرعت و اجزایی که پیادهسازی آنها سادهتر است ارائه کند. بنابراین بهتر است هر کدام در کنار حرفه خود به کسب دانش و آگاهی نسبی در حرفههای مرتبط نیز بپردازد. البته این بدان معنا نیست که شخص تلاش کند به اصطلاح همه فن حریف شود، زیرا اولا با این کار زمانی را صرف کارهایی میکند که اگر آن زمان را برای تخصص خود صرف میکرد ممکن بود به پیشرفتهای بزرگتری برسد، اما کسب آگاهی نسبی در زمینههای مرتبط با فعالیت اصلی، میتواند موجب بروز خلاقیت و بهبود کارکرد انسان در انجام کارش شود.
وابستگی عمیق طراحی و برنامهنویسی
طراحی نرمافزار و برنامهنویسی آنقدر به هم وابسته هستند که برخی افراد که به یکی مسلط هستند، لازم میدانند که در دیگری نیز مهارت پیدا کنند و گاهی طراح ترجیح میدهد طرح خود را به دست خود پیادهسازی کند یا برنامهنویس ترجیح میدهد برنامهای بنویسد که خود، آن را طراحی کرده است. در زمانی هم که به دلیل حجم کار، این امر امکانپذیر نیست، افراد مایل هستند در بخشی که مربوط به آنها نیست نیز مشارکت داشته باشند. این دیدگاه تا حدی منطقی است، اما در بسیاری از موارد امکانپذیر نبوده یا باعث بروز مشکل میشود. بهترین کار برای طراحی و پیادهسازی نرمافزارهای موفق آن است که فرد طراح یا تیم طراحی با برنامهنویس یا یک تیم برنامهنویسی هماهنگ شوند و پس از تعیین یک سری قانونمندیها و
مشخص کردن مرزبندی امور به همکاری بپردازند. در این صورت هر کس علاوه بر آن که به وظیفه خود واقف است، میتواند در بخشهای دیگر کار نیز تیم یا فرد مقابل را یاری کند.
پارسا ستودهنیا
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
گزارش «جامجم» درباره دستاوردهای زبان فارسی در گفتوگو با برخی از چهرههای ادب معاصر
معاون وزیر بهداشت: