تکنیک‌های عکاسی

ضد نور

ضد نور (به فرانسوی: Silhouette) تکنیکی است که در آن منبع نور در پشت سوژه قرار دارد و در قوی‌ترین حالت به دلیل تندی نور، سایه‌ای از سوژه بر روی عکس ایجاد می‌شود. زیباترین حالت زمانی پیش می‌آید که خورشید در حال طلوع یا غروب است و پس‌زمینه به رنگ نارنجی یا زرد مشخص می‌شود. عکاسی ضدنور یکی از روش‌های انتقال اندوه، احساس و حالت‌های عاطفی به بیننده‌است. ممکن است بیننده با دیدن این نوع عکس‌ها به درک درست و واضحی از سوژه نرسد، اما بخش تیره و سیاه تصویر باعث شکل گیری قدرت تخیل بیننده می‌شود.







اچ‌دی‌آر (HDR)

تصویربرداری دامنه دینامیک بالا (به انگلیسی: High Dynamic Range Imaging) یا HDR به مجموعه‌ای از تکنیک‌هایی گفته می‌شود که نسبت به روش‌های معمول، امکان وجود دامنه دینامیک روشنایی بیشتری بین نقاط تاریک و روشن را فراهم می‌کنند. عکس‌های اچ‌دی‌آر با ترکیب چند عکس به وجود می‌آیند؛ برای هر عکس اچ‌دی‌آر، باید چند عکس با کادر کاملا یکسان تهیه کرد (معمولا ۳ یا ۵ عکس) و هر عکس باید با نوردهی خاصی گرفته‌شده باشد؛ به این ترتیب که یک عکس با نوردهی معمولی و بقیهٔ عکس‌ها با نوردهیهای کمتر و بیشتر.

هدف از عکاسی اچ‌دی‌آر، افزایش محدودهٔ دینامیکی است و با ترکیب محدوده دینامیکی محدود عکس‌ها، به عکسی با محدوده دینامیکی بزرگ، که اچ‌دی‌آر نامیده می‌شود دست پیدا می‌کنیم.






پنینگ

پنینگ (به انگلیسی: Panning) یا کنارگردی دوربین، نام تکنیکی در عکاسی می‌باشد که برای نشان دادن تحرک سوژه‌ها به کار می‌رود. پنینگ در حقیقت به حرکات افقی، عمودی و یا چرخشیِ یک تصویر ثابت و یا ویدئو اشاره دارد. در این تکنیک یا سوژهٔ اصلی متحرک است که آن را از محیط ثابت اطرافش مجزا می‌کند یا سوژه ثابت است و دوربین حرکت می‌کند که عکاسی هر دو حالت منجر به القای حس تحرک در عکس می‌شوند. کاهش سرعت شاتر باعث بیشتر نمایان شدن تحرک در عکس می‌گردد.

عکسبرداری به این شیوه کار مشکلی است. زیرا باید سرعت شاتر مناسبی انتخاب شود و سرعت شاتر مناسب، بستگی به سرعت سوژه دارد. از طرف دیگر، باید چرخش یا حرکت دوربین هم کاملا مناسب باشد و در غیر اینصورت سوژه هم محو می‌شود؛ یک ابزار مناسب برای این تکنیک، تک‌پایه است.






مادون قرمز

عکاسی مادون قرمز (به انگلیسی: Infrared photography) تکنیکی است که هنگام عکسبرداری، قسمت مرئی نور حذف شده و فقط پرتوهای مادون قرمز ثبت می‌شوند. رفتار انعکاسی مادون قرمز با نور مرئی فرق دارد و چون چشم انسان مادون قرمز را نمی‌بیند، عکس‌هایی به وجود می‌آید که در واقعیت دیده نمی‌شوند. نمونه‌ای از تفاوت‌ها، انعکاس گیاهان است که در عکاسی مادون قرمز، به رنگ سفید ثبت می‌شوند.

برای عکاسی مادون قرمز به فیلتر مادون قرمز نیاز است. این فیلتر نور مرئی را حذف می‌کند و فقط نور مادون قرمز را از خود عبور می‌دهد.






سراسرنما (پانوراما)

سراسرنما (به انگلیسی: Panorama) یا پانوراما تکنیکی است که سبب ایجاد عکس‌هایی با فضای وسیعتری نسبت به عکس‌های معمولی می‌شود. نحوهٔ ساخت آن‌ها چنین است که با کنار هم قرار دادن تعدادی عکس معمولی به‌وجود می‌آیند. در این تکنیک، باید عکس‌های بیش‌تری از صحنه ثبت کرد و سپس با استفاده از نرم‌افزار آن‌ها را به‌هم چسباند. تعداد عکسی که برای ثبت یک عکس سراسرنما لازم است، بستگی به فاصله کانونی دارد. هرچه فاصله کانونی بیش‌تر باشد، (یعنی بزرگنمایی بیش‌تر و زاویه دید کمتر) در هر عکس قسمت کمتری از صحنه جای می‌گیرد و در نتیجه، باید عکس‌های بیش‌تری گرفت.






تحصیل در رشتهٔ عکاسی

رشتهٔ عکاسی در مقاطع کارشناسی و کارشناسی ارشد در بسیاری از دانشگاه‌ها تدریس می‌شود، دانشجویان این رشته با زیبایی‌شناسی، تاریخ عکاسی، هنر، تکنیک و روش‌های مختلف عکاسی آشنا می‌شوند. وجود عکس درتبلیغات، صنعت، روزنامه‌نگاری، مقاله‌نویسی، در زمینه‌های مختلف علوم پزشکی، فیزیک، جانورشناسی، سینما، نجوم، سند تاریخی، اجتماعی و خبررسانی کاربرد بی‌سابقه دارد و به عبارت دیگر، عکس شیوهٔ دیگر دیدن است. زمان تدریس هر واحد درسی نظری ۱ ساعت در هفته، عملی ۲ ساعت در هفته و کارگاهی ۳ ساعت در هفته‌است.

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





عکاسی دیجیتال

عکاسی دیجیتال به فرایند ثبت تصاویر به وسیلهٔ دریافت و ثبت نور برروی سطح حساس به نور حسگر الکترونیکی گفته می‌شود. الگوهای نوری بازتابیده شده یا ساطع شده از اشیا بر روی سطح حساس به نور حسگر تأثیر می‌گذارد و باعث ثبت تصاویر می‌گردد.

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

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






انواع سنسور

در حال حاضر سه نوع تکنولوژی بخش عمده سنسورهای تولید شده برای دوربین‌های دیجیتال را در بر می‌گیرد.

سنسورهای سیماس یا نیم‌رسانای اکسید فلزی مکمل (CMOS)
سنسورهای سی‌سی‌دی یا دستگاه جفت‌کننده بار (CCD)






سنسورهای Foveon

شایان ذکر است که هیچکدام از این سنسورها بصورت مستقیم قادر به شناسایی رنگ‌ها نیستند و فقط می‌توانند شدّت روشنایی نور را ثبت کنند. هر سنسور از میلیون‌ها سنسور ریز حساس به نور تشکیل شده و هرکدام از این سنسورهای ریز قالباً یک پیکسل از عکس نهایی را ثبت می‌کند. سازندگان این سنسورها با قرار دادن فیلترهای سرخ، سبز و آبی (رنگ‌های اولیه) روی تک تک آنها با استفاده از الگوهایی مانند الگو بایر می‌توانند به پردازشگرهای دوربین قابلیت آن را بدهند که با کمک الگریتم‌های درون‌یابی (اینترپولیشن) و مقایسه ارقام ثبت شده توسط ریز سنسورهای مجاور، رنگ واقعی هر پیسکل را حدس بزنند. دوربین‌هایی که قابلیت ذخیره عکس را بصورت نپخته دارا هستند، اجازه می‌دهند که این بخش نهایی شناسایی رنگ‌ها روی رایانه شخصی انجام شود و این به کاربران اجازه می‌دهد که آزادی بیشتری در ویرایش عکس نهایی داشته باشند.






تعداد پیکسل

یکی از خصوصیاتی که در بازاریابی دروبین‌های دیجیتال بر آن تاکید می‌شود تعداد کلّ پیکسل‌های یک دوربین است. این رقم که با واحد مگاپیکسل یا میلیون پیکسل شمارش می‌شود، از راه ضرب تعداد پیکسل‌های افقی و عمودی یک سنسور محاسبه می‌شود. برای مثال، دروبینی که سنسوری دارای ۳هزار پیکسل افقی و ۲هزار پیکسل عمودی باشد، یک دوربین ۶ مگاپیکسلی خواهد بود. با وجود آنکه این رقم در برخی موارد می‌تواند شاخص خوبی برای مقایسه کیفیت تصویر دوربین‌های دیجیتال باشد، این رقم در اکثر موارد می‌تواند گمراه کننده نیز باشد. کیفیت نهایی یک تصویر دیجیتال موثر از متغیرهای بیشتری مانند نوع سنسور، مساحت سنسور، اندازه لنزهای ریز روی هر پیکسل، قدرت تمرکز لنز و غیره می‌باشد.





دوربین آنالوگ

دوربین آنالوگ دستگاهی برای ثبت عکس بر روی فیلم عکاسی (سطح حساس به نور) می‌باشد و تصویر گرفته شده بر روی فیلم بعد از ظهور بصورت نگاتیو یا منفی (ریورسال) قابل رویت است. دوربین عکاسی آنالوگ بصورت‌های:

کاملاً مکانیکی،
نیمه خودکار،
کاملاً خودکار (ناوبری الکترونیکی)،

طراحی و ساخته شده است.






تاریخچه

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






انواع دوربین های آنالوگ

دوربین سوراخ سوزنی (به انگلیسی: Pin Hole)،
دوربین تک‌لنزی غیربازتابی (به انگلیسی: rangefinder camera)،
دوربین تک‌لنزی بازتابی (به انگلیسی: Single Lens Reflex)،
دوربین دولنزی بازتابی (به نگلیسی: Twin-lens reflex)،
دوربین قطع بزرگ (به انگلیسی: View Camera).







سیستم ضبط تصویر

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





دوربین دیجیتال

یک دستگاه الکترونیکی است که برای گرفتن عکس و ذخیرهٔ آن بجای فیلم عکاسی از حسگرهای حساس به نور معمولاً از نوع CCD یا CMOS استفاده می‌کند و تصویر گرفته شده توسط سنسور طی چند مرحله به حافظهٔ دوربین برای استفاده فرستاده می‌شود.

در دوربین دیجیتال، تصویربرداری بر روی فیلم صورت نمی‌گیرد بلکه توسط یک حسگر حساس (دستگاه جفت‌کنندهٔ بار (CCD) یا نیم‌رسانای اکسید فلزی مکمل (CMOS)) انجام می‌پذیرد.

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

گرچه اصول کلی این دوربین‌ها شبیه به دوربین‌های فیلمی هستند، نحوه کار داخل این دوربین‌ها کاملاً متفاوت است. در این دوربین‌ها تصویر توسط یک سنسور CCD یا یک CMOS گرفته می‌شود. CCD بصورت ردیفها و ستونهایی از سنسورهای نقطه‌ای نور هستند که هر چه تعداد این نقاط بیشتر و فشرده تر باشد، تصویر دارای دقت بالاتری است) هر سنسور نور را به ولتاژی متناسب با درخشندگی نور تبدیل کرده و آن را به بخش تبدیل سیگنال‌های آنالوگ به دیجیتال ADC می‌فرستد که در آنجا نوسانات دریافتی از CCD به کدهای مجزای باینری (عددهای مبنای دو بصورت صفر و یک) تبدیل می‌شود. خروجی دیجیتال از ADC به یک پردازنده سیگنال‌های دیجیتال DSP فرستاده می‌شود که کنتراست و جزئیات تصویر در آن تنظیم می‌شود و قبل از فرستادن تصویر به حافظه برای ذخیره تصویر، اطلاعات را به یک فایل فشرده تبدیل می‌کند. هر چه نور درخشنده‌تر باشد، ولتاژ بالاتری تولید شده و در نتیجه پیکسل‌های رایانه‌ای روشن‌تری ایجاد می‌شود. هر چه تعداد این سنسورها که به‌صورت نقطه هستند بیشتر باشد، وضوح تصویر به دست آمده بیشتر است و جزئیات بیشتری از تصویر گرفته می‌شود.
تمام این پروسه، پروسه‌ای هماهنگ با محیط زیست است. سنسورهای CCD یا CMOS در تمام مدت عمر دوربین در جای خود ثابت بوده و بدون نیاز به تعویض کار می‌کنند. ضمناً به علت عدم وجود قطعات متحرک عمر دوربین بسیار بیشتر می‌شود. سنسور CCD از میلیون ها سنسور نوری تشکیل شده است و حساسیت به نور آن از سنسورهای CMOS بهتر است . در عوض در سنسور CMOS مصرف انرژی کمتر بوده و مشکل Over Expouser کمتر بوجود می آید . دوربینهای دیجیتال در بطن کار، از دوربین های آنالوگ پیروی می کنند، با این تفاوت که در این دوربین ها، همان طور که از اسمشان نیز برداشت می شود، کنترل بخش های مختلف از جمله فوکوسر و ... به صورت دیجیتالی انجام شده و یا در صفحه حساس این دوربین ها، سی سی دی و سی ماس، جایگزین فیلم های قدیمی شده است.






دریافت و ثبت تصویر در دوربین های دیجیتال

صفحه های حساس در دوربین های دیجیتال حرفه ای، ccd یا cmos است که مختصراً به بررسی آن می پردازیم. حسگرهای نوری از هزاران ردیف المان نیمه‌هادی بسیار کوچک و حساس به نور تشکیل شده‌اند که می‌توانند ذرات یا فوتون‌های نور را به بار الکتریکی تبدیل کنند. حال هر چه شدت نور ورودی بیشتر یا کمتر باشد، الکتریسیته ایجاد شده متعاقباً دست خوش تغییر می شود. جنس این صفحه ها اغلب از عناصری از جمله سیلیسیم و ژرمانیوم است. به طور نمونه شرکت کانن در دوربین های SLR خود تاکنون تنها از سنسورهای CMOS استفاده کرده است، در حالی که شرکت نیکون از هر دو نوع سنسور بهره میگیرد. بطور کلی تفاوت کیفی زیادی بین این دو نوع سنسور وجود ندارد اما حسگرهای CMOS کم مصرف تر بوده و در شرایط کم نور و با نوردهی های طولانی عملکرد بهتری دارند . ضمناً از نظر فنی نمی توان امکان تولید سنسورهای CCD در ابعاد فول فریم (۲۴×۳۶میلیمتر ) موجود نیست.






مزیت‌های دوربین‌های دیجیتال

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

هزینهٔ کمتر: به لحاظ اینکه در هر دوره عکاسی دیگر احتیاج به خرید، ظهور و چاپ فیلم نیست.

مقدار خطای کمتر: به علت پیش نمایش بهتر عکس و نشان دادن عکس در همان زمان می‌توان در صورت مشاهدهٔ خطایی فاحش عکس را مجدادا ثبت کرد در صورتی که در عکاسی آنالوگ پس از مرحلهٔ ظهور می‌توان چنین تشخیصی داد که معمولاً دیر است

مقدار ریسک پایین: از بین رفتن یا افت کیفیت شدید فیلم به علت زمان، حرارت، و نور دیدگی، خطای ظهور، چاپ، تاریخ فیلم و... طبیعتاً حذف شده و جای خود را از لحاظ ریسک تنها به خطاهای الکترونیکی بسیار ناچیز می‌دهد.

نگهداری بهتر: امکان آرشیو میلیون‌ها عکس در یک فضای بسیار کم با ماندگاری بسیار طولانی تر

عکس‌برداری متوالی:در دوربین‌های آنالوگ به طور معمول بیشترین تعداد عکس برداری متوالی بیشتر از ۳۶ عدد (به لحاظ تعداد کاست) نمی‌شد به غیر از مواردی خاص که گاهی تا ۳۶۰ عدد اضافه می‌شد (با حجمی مزاحم) ولی با زحمتی چندین برابر برای تعویض فیلم! در صورتی که در دوربین‌های جدید دیجیتال با فشار دادن دکمه شاتر می‌توان بیش از هزاران عکس را بدون توقف در یک کارت حافظه بسیار کوچک جا داد.





پویانمایی

پویانمایی (انیمیشن (به انگلیسی: Animation)) یا کارتُن نمایش سریع و متوالی تصاویری از اثر هنری دوبعدی، یا موقعیت‌های مدل‌های واقعی، برای ایجاد توهم حرکت است. حرکت روان تصاویر متحرک در پویانمایی‌ها، ناشی از یک خطای دید است که به دلیل پدیدهٔ ماندگاری تصاویر پدید می‌آید. رایج‌ترین روش برای نمایش زنده نگار، سینما یا ویدئو است.

انیمیشن، جان‌بخشی، متحرک‌سازی، و زنده‌نگاری مترادف‌هایی برای پویانمایی هستند.






تاریخچه

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

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

فریب‌بین Phenakistoscope، زنده‌گرد zoetrope و کنش‌نما praxinoscope، همچنین ورق‌های پویانما Flip book، قدیمی‌ترین اسباب‌های پویانمایی محبوب اختراع شده در طول سده ۱۸۰۰ هستند.
فیلمساز فرانسوی جورج ملیس که سازنده جلوه‌های ویژه فیلم‌هایی مانند سفری به ماه بود، تکنیک‌های بسیاری در کارش استفاده می‌کرد- که یکی از آنها نگه داشتن جرخش فیلم دوربین، و تغییر کوچکی در صحنه و سپس دوباره به جرخش در آوردن فیلم دوربین بود. این بسیار شبیه به ایده‌ای است که بعدها زنده نگاری استاپ-موشن شد. ملیس به طور اتفاقی به این تکنیک دست یافت. هنگامی که او اتوبوسی را در حال رد شدن از جلوی دوربین می‌گرفت، دوربین خراب شد. موقعیکه دوربین تعمیر شد، درست زمانیکه ملیس شروع به فیلم گرفتن کرد، تصادفاً یک اسب از جلوی دوربین رد شد. نتیجه آن بود که در فیلم به نظر می‌رسید که اتوبوس به یک اسب تبدیل می‌شود.

ج. استوارت بلکتون شاید اولین فیلمساز آمریکایی باشد که تکنیک‌های استاپ-موشن و انیمشن طراحی دستی را استفاده کرد. ادیسون او را با فیلمسازی آشنا کرد. او با اولین کارش مورخ ۱۹۰۰ که کپی رایت داشت، پیشگام این ایده‌ها در دوران قرن بیستم شد. بسیاری از فیلمهایش، از میان آنها طراحی سحرآمیز (۱۹۰۰) و فکاهی صورت‌های متغیر مسخره (۱۹۰۶) نسخه‌های فیلم روزمره از بلکتون «هنرمند درخشان» بود، و نسخه‌های اصلاح شده مورد استفاده ملیس قدیمی‌ترین تکنیک‌های استاپ-موشن برای ساختن سری‌هایی از طراحی‌های روی تخته سیاه بود که به نظر می‌رسند که حرکت می‌کنند و خود را تغییر شکل می‌دهند. فکاهی صورتهای متغیر مسخره به عنوان اولین فیلم پویانماشده واقعی ثبت، و بلکتون به عنوان اولین زنده نگاری واقعی شناخته شده‌است.

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

در ادامه موفقیت‌های بلکتون و کال، هنرمندان متعدد دیگری شروع به تجربیاتی در پویانمایی کردند. از جمله وینزور مکی که یک کارتونیست موفق روزنامه بود. او زنده نگاری‌های پرجزئیاتی ساخت که نیازمند تیم هنرمندان و توجهی طاقت فرسا به جزئیات بود. هر فریم یک طراحی روی کاغذ بود که همواره می‌بایست که پس زمینه و شخصیت‌ها هردو دوباره طراحی و انیمیت شوند. برجسته‌ترین فیلم‌های مکی عبارتند از نموی کوچولو (۱۹۱۱)، جریت دایناسور (۱۹۱۴) و غرق شدن لوسیتینیا (۱۹۱۸).

تولید فیلم‌های پویانمای کوتاه، که عموما «کارتون» نامیده می‌شوند، در طول دهه ۱۹۱۰ به یک صنعت بدل شد، و کارتون‌های کوتاه برای نمایش در فیلم‌های سینما تولید شدند. موفق‌ترین تولید کننده قدیمی زنده نگاری جان رندولف ری بود، کسی که همراه با ارل هرد پویانما، سل پویانمایی (پویانمایی روی طلق) را پایه گذاری کرد که در باقی دهه بر صنعت زنده نگاری حکمفرما بود.






تکنیک‌ها
پویانمایی سنتی

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

روش سنتی سل انیمیشن در آغاز قرن ۲۱ منسوخ شد. امروزه طرح‌های پویانماها و پس زمینه‌ها اسکن، یا مستقیما در کامپیوتر طراحی می‌شوند. نرم‌افزارهای مختلفی برای رنگ آمیزی و شبیه سازی حرکات دوربین و افکت‌ها استفاده می‌گردد. قطعه انیمیت شده نهایی را به یکی از چندین رسانه‌های پخش، خروجی می‌گیرند، که شامل فیلم سنتی ۳۵ میلی متری و رسانه‌های جدید تر مانند ویدئوی دیجیتال می‌شود. ظاهر سل زنده نگاری هنوز حفظ شده و کارهای پویانماهای شخصیت‌ها عمدتا در طول ۷۰ سال گذشته همسان باقی مانده‌است.

نمونه‌های فیلم بلند پویانمایی سنتی عبارتند از پینوکیو (آمریکا، ۱۹۴۰)، مزرعه حیوانات (انگلیس، ۱۹۵۴)، و آکیرا (ژاپن، ۱۹۸۸). پویانمایی‌های سنتی که به کمک تکنولوژی کامپیوتر تولید شده‌اند مانند شیرشاه (آمریکا، ۱۹۹۴) قاچاق شده (ژاپن، ۲۰۰۱) و سه قلوهای بلویل (فرانسه.بلژیک.کانادا، ۲۰۰۳).

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

روتوسکوپی: تکنیکی است که در آن طرح هر فریم از روی حرکات عکس‌های واقعی ترسیم می‌شود. ارباب حلقه‌ها ۱۹۷۸ و اساس بسیاری از حرکات حیوانات در اکثر کارهای دیزنی نیز همین روش است.
استاپ-موشن: در این روش هر فریم عکسی از اجسام واقعی است، پویانما اجسام و یا شخصیت‌های درون صحنه را فریم به فریم به صورت ناچیزی حرکت می‌دهد، و عکس می‌گیرد. هنگامی که فریم‌های فیلم به صورت متوالی نمایش داده شوند توهم حرکت اجسام ایجاد می‌شود. مانند عروس مرده به کاگردانی تیم برتون.
زنده‌نگاری خمیری: پیکره شخصیت‌ها و اجسام متحرک از ماده‌ای نرم ساخته می‌شود که ممکن است اسکلت هم داشته باشند تا فیگور آنها را ثابت نگه دارد. روش فیلمبرداری هم مانند استاپ-موشن است.
کات-اوت: نوعی از زنده نگاری استاپ موشن است که بوسیله قطعات مسطحی مانند کاغذ ساخته می‌شود. پویانما هر فریم قطعات را کمی جا به جا می‌کند.
زنده‌نگاری سیلوئت: نوعی زنده‌نگاری کات-اوت بدون رنگ که کاراکترها به صورت سیلوئت سیاه نمایان می‌شوند.(شبیه به عکس‌های ضد نور)
موشن گرافیک: از تصاویر مسطح گرافیکی، عکس، قطعات روزنامه یا مجله و غیره همراه با تایپ (نوشته) ساخته می‌شود که سابقا با حرکت دادن فریم به فریم انیمیت می‌شد.
زنده‌نگاری عروسکی: به پویانمایی استاپ-موشنی گفته می‌شود که شامل پیکره‌های عروسکی است که در تعامل با فضاهای شبیه واقعیت انیمیت می‌شوند. عروسکها درونشان اسکلت دارد که به ایستایی آن‌ها کمک کند و همچنین مفصل‌هایی که در محورهای خاصی می‌چرخند. مانند کابوس قبل از کریسمس، ساخته تیم برتون.







پویانمایی رایانه‌ای

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





فیلم عکاسی

فیلم عکاسی یا سطح حساس عکاسی که در گذشته از شیشه و کلودیونِ تر ساخته می‌شد، فعلاً یک ورق شفاف پلاستیکی از جنس پلی‌استر یا نیترو سلولوز یا سلولوز استات است. این ورق با یکی از نمکهای نقره به نام نمک هالیدهای نقره (برومور نقره) و یک ماده ژلاتینی برای چسباندن نمک مورد نظر بر سطح ورقه پلاستیکی ساخته شده، پوشیده شده‌است. اندازه کریستال‌های نمک مشخص کننده میزان حساسیت به نور و رزولوشن فیلم عکاسی می‌باشد. نوری که به فیلم عکاسی می‌خورد باعث ایجاد یک فرایند شیمیایی روی فیلم عکاسی شده و تغییراتی که قابل دیده شدن نیست را ایجاد می‌کند؛ این تغییرات به وسیله ماده شیمیایی دیگری مرئی می‌شود. با ظهور و چاپ یک فیلم عکاسی، تصویر یا عکس بدست می‌آید.






عوامل مؤثر بر فیلم‌ها

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

تابندگی به منظور نور دهی.
طول موج‌هایی که فیلم نسبت به آنها حساس است.
طول موج تابش.
مدت زمان نور دهی.
شرایط ظهور فیلم.







مکانیزم ثبت تصویر روی فیلم

انرژی لازم برای تبدیل نقره برمید یا نقره یدید به نقره عنصری از ماده شیمیایی مورد استفاده در فرایند ظهور فراهم می‌شود. پیش از ظهور اطلاعات بصورت یک تصویر نهان به شکل دانه‌های حساس شده روی شیشه یا فیلم ذخیره شده‌است. از ظاهر کردن فیلم یک تصویر منفی (نگاتیو) بدست می‌آید. نگاتیو یعنی خلاف آنچه در اصل تصویر دیده می‌شود. بنابراین قسمتهای روشن تصویر بر روی فیلم تیره می‌افتد و برعکس قسمتهای تیره آن به‌صورت روشن نقش می‌بندد.

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





انواع فیلم

۱- فیلم‌های مثبت (پزوتیو) یا ریورسال.

۲- فیلم‌های منفی (نکاتیو).

۳- فیلم‌های مخصوص برای طول موج‌های خاص. مثل: فیلم مادون قرمز.

که هر دو نوع ۱ و ۲ دارای انواع سیاه و سفید و رنگی هستند.

فیلم‌های لیتوگرافی یا رادیوگرافی با اندکی تغییر در میزان حساسیت یا نوع حساسیت به پرتوهای نوری مشابه فیلم‌های عکاسی هستند.






اندازه (قطع) فیلم‌ها

فیلم‌های عکاسی از نظر قطع در اندازه‌های مختلف ارائه می‌شوند. رایج‌ترین آنها عبارتند از:

۱- فیلم ۱۳۵ (۳۶ میلی متری).

۲- فیلم ۱۲۰ برای ضبط تصاویر در اندازه‌های ۶*۴٫۵، ۶*۶، ۶*۹ و ۶*۱۷.

۳- فیلم‌های تخت، از اندازه معمول ۶*۴ الی ۲۰*۲۵. البته در سالهای گذشته اندازه‌های بزرگتر و کوچکتری نیز تولید می‌شد که فعلاً با بروز پدیده دیجیتال و بخاطر محدود بودن مصرف کنندگان، تولید آنها نیز قطع یا کاهش یافته‌است.






فیلم‌های عکاسی رنگی

بصورت کلی دو نوع فیلم عکاسی رنگی در بازارهای مصرف‌کننده و حرفه‌ای موجود هستند:

فیلم نگاتیو رنگی (به انگلیسی: Color Negative)
فیلم اسلاید رنگی (به انگلیسی: Slide or Color Reversal Film)

فیلم‌های اسلاید عموماً دارای دانه‌های (به انگلیسی: Grain) ریزتر و رنگ‌های اشباع شده‌تر نسبت به فیلم‌های نگاتیو با حساسیت‌های مشابه هستند، اما به مراحل بیشتری برای چاپ احتیاج دارند. هر کدام از این فیلم‌ها نیاز به روش ظهور خاصی دارند که از میان آنها روش ظهور سی۴۱ (به انگلیسی: C41) برای فیلم‌های نگاتیو رنگی و روش ظهور ای۶ (به انگلیسی: E6) برای فیلم‌های اسلاید متداول است.





فیلم‌های پزتیو
فیلم‌های پزوتیو همان اسلایدها هستند که در دو نوع سیاه و سفید و رنگی به بازار عرضه می‌شوند.
11:14 pm
کاربرد برنامه نویسی

زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف داده‌ها، و عملیات یا تبدیل‌هایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم می‌کند. یک برنامه نویس از انتزاعات آماده در زبان استفاده می‌کند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از ساده‌ترین عناصر موجود بیان می‌شوند(مفاهیم ابتدایی نامیده می‌شوند).





زبان‌های برنامه نویسی با غالب زبان‌های انسانی تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبان‌های طبیعی برای ارتباط با دیگر انسان‌ها، نویسندگان و گویندگان می‌توانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانه‌ها "دقیقاً آنچه که به آنها گفته شده را انجام می‌دهند." و نمی‌توانند "بفهمند" که نویسنده دقیقاً چه کدی مد نظر نویسنده بوده‌است] البته امروزه برنامه‌هایی برای انجام این کار تولید شده‌اند و تلاش‌های بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص می‌کند. برنامه‌های یک رایانه ممکن است در یک فرایند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورات را در یک مرحله فعل و انفعال مفسر تایپ کند.در این حالت "دستور"ها همان برنامه‌ها هستند، که اجرای آنها زنجیروار به هم مرتبطند.به زبانی که برای دستور دادن به برنامه‌ای استفاده می‌شود، زبان اسکریپت می‌گویند. بسیاری از زبان‌ها کنار گذاشته شده‌اند، برای رفع نیازهای جدید جایگزین شده‌اند، با برنامه‌های دیگر ترکیب شده‌اند و در نهایت استعمال آنها متوقف شده‌است. با وجود اینکه تلاش‌هایی برای طراحی یک زبان رایانه" کامل" شده‌است که تمام اهداف را تحت پوشش قرار دهد، هیچ یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبان‌های رایانه‌ای گسترده از گستردگی زمینه‌هایی که زبان‌ها استفاده می‌شوند، ناشی می‌شود:

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

یک سیر رایج در گسترش زبان‌های برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبان‌های برنامه نویسی اولیه به سخت‌افزار رایانه گره خورده بودند. همانطور که زبان‌های برنامه نویسی جدید گسترش پیدا کرده‌اند، ویژگی‌هایی به برنامه‌ها افزوده شده که به برنامه نویس اجازه دهد که ایده‌هایی که از ترجمه ساده به دستورات سخت‌افزار دورتر هستند نیز استفاده کند. چون برنامه نویس‌ها کمتر به پیچیدگی رایانه محدود شده‌اند، برنامه‌های آنها می‌تواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را می‌دهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازنده‌های زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبان‌های اختصاصی برنامه نویسی پیشنهاد شده‌اند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از: C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, Shell, SQL, and Visual Basic.



المان‌ها
تمام زبان‌های بزنامه نویسی تعدادی بلوک‌های ابتدایی برای توضیح داده و پردازش یا تبدیل آنها(مانند جمع کردن دو عدد با انتخاب یک عضو از یک مجموعه)دارند. این " عناصرابتدایی" بوسیله قوانین معناشناسی و دستوری تعریف می‌شوند که ساختار و معنای مربوطه را توضیح می‌دهند.
دستور(
syntax)

فرم سطحی یک زبان برنامه نویسی دستور آن نامیده می‌شود. غالب زبان‌های برنامه نویسی کاملاً متنی اند؛ و از دنبالهٔ متون شامل کلمات، اعداد، نشانگذاری، بسیار شبیه زبان نوشتاری طبیعی استفاده می‌کنند. از طرف دیگر، برنامه‌هایی نیز وجود دارند که بیشتر گرافیکی اند، و از روابط بصری بین سمبل‌ها برای مشخص کردن برنامه استفاده می‌کنند. دستور یک زبان ترکیبات ممکن سمبل‌ها برای ایجاد یک برنامهٔ درست را از نظر دستوری مشخص می‌کند. معنایی که به یک ترکیب سمبل‌ها داده می‌شود با معناشناسی اداره می‌شود(قراردادی یا نوشته شده در پیاده سازی منبع). از آنجا که اغلب زبان‌ها متنی هستند، این مقاله دستور متنی را مورد بحث قرار می‌دهد.

دستور زبان برنامه نویسی معمولاً بوسیله ترکیب عبارات معین(برای ساختار لغوی) و فرم توضیح اعمال(برای ساختار گرامری) تعریف می‌شوند. متن زیر یک گرامر ساده، به زبان lisp است: expression ::= atom | list atom ::= number | symbol number ::= [+-]?['۰'-'۹']+ symbol ::= ['A'-'Za'-'z'].* list ::= '(' expression* ')' این گرامر موارد ذیل را مشخص می‌کند:

یک عبارت یا atom است و یا یک لیست
یک atom یا یک عدد است و یا یک سمبل
یک عدد دنباله ناشکسته‌ای از یک یا تعداد بیشتری اعداد دهدهی است، که یک علامت مثبت و یا منفی می‌تواند پیش از آن بیاید.
یک سمبل حرفی است که بعد از هیچ یا تعدادی کاراکتر (جز فاصله) می‌آید.
یک لیست تعدادی پرانتز است که می‌تواند صفر یا چند عبارت در خود داشته باشد.

"۱۲۳۴۵"، "()"، "(a b c۲۳۲ (۱))" مثال‌هایی هستند از دنباله‌های خوش فرم در این گرامر.

همه برنامه‌هایی که از لحاظ دستوری درست هستند، از نظر معنا درست نیستند. بسیاری از برنامه‌های درست دستوری، بد فرم اند، با توجه به قوانین زبان؛ و ممکن است (بسته به خصوصیات زبان و درست بودن پیاده سازی) به خطای ترجمه و یا استثنا(exception) منتج شود. در برخی موارد، چنین برنامه‌هایی ممکن است رفتار نامشخصی از خود نشان دهند. حتی اگر یک برنامه در یک زبان به خوبی بیان شده باشد، ممکن است دقیقاً مطلوب نویسنده آن نبوده باشد.

به عنوان مثال در زبان طبیعی، ممکن نیست به برخی از جملات درست از لحاظ گرامری، معنای خاصی اطلاق کرد و یا ممکن است جمله نادرست باشد:

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

این قسمت از زبان C از نظر دستوری درست است، اما دستوری را انجام می‌دهد که از نظرمعنایی تعریف نشده است(چون p یک اشاره گر خالی است، عمل p->real,p->im معنای خاصی ندارد.) complex *p = NULL; complex abs_p = sqrt (p->real * p->real + p->im * p->im);

گرامر مورد نیاز برای مشخص کردن یک زبان برنامه نویسی می‌تواند با جایگاهش در "سلسله مراتب چامسکی" طبقه بندی شود. دستور اغلب زبان‌های برنامه نویسی می‌تواند بوسیله یک گرامر نوع ۲ مشخص گردد، برای مثال، گرامرهای مستقل از متن.




معناشناسی ایستا
معناشناسی ایستا محدودیت‌هایی بر روی ساختار مجاز متن‌ها تعیین می‌کند که بیان آنها در فرمول دستوری استاندارد مشکل و یا غیر ممکن است. مهمترین این محدودیت‌ها به وسیله سیستم نوع گذاری انجام می‌شود.


سیستم نوع گذاری
یک سیستم نوع گذاری مشخص می‌کند که یک زبان برنامه نویسی چگونه مقادیر و عبارات را در نوع(type) دسته بندی می‌کند، چگونه می‌تواند آن نوع‌ها را تغییر دهد و رفتار متقابل آن‌ها چگونه‌است. این کارعموما توضیح داده ساختارهایی که می‌توانند در آن زبان ایجاد شوند را شامل می‌شود. طراحی و مطالعه سیستم‌های نوع گذاری بوسیله ریاضیات قراردادی را تئوری نوع گذاری گویند.
زبان‌های نوع گذاری شده و بدون نوع گذاری

یک زبان نوع گذاری شده‌است اگر مشخصات هر عملیات، نوع داده‌های قابل اجرا توسط آن را با نشان دادن نوع‌هایی که برای آنها قابل اجرا نیست، تعیین کند. برای مثال، "این متن درون گیومه قرار دارد" یک رشته‌است. در غالب زبان‌های برنامه نویسی، تقسیم یک رشته با یک عدد معنایی ندارد. در نتیجه غالب زبان‌های برنامه نویسی مدرن ممکن است اجرای این عملیات را توسط برنامه‌ها رد کنند. در برخی زبان‌ها، عبارات بی معنی ممکن است هنگام ترجمه(compile) پیدا شود(چک کننده نوع ایستا)، و توسط کامپایلر رد شود، در حالی که در سایر برنامه‌ها، هنگام اجرا پیدا شود.(چک کننده نوع دینامیک) که به استثنای در حال اجرا منتج شود(runtime exception). حالت خاص زبان‌های نوع دار زبان‌های تک نوعند. این زبان‌ها غالباً اسکریپتی و یا مارک آپ هستند، مانند rexx وSGML و فقط یک داده گونه دارند—غالباً رشته‌های کاراکتری که هم برای داده‌های عددی و هم برای داده‌های سمبلی کاربرد دارند. در مقابل، یک زبان بدون نوع گذاری، مثل اکثر زبان‌های اسمبلی، این امکان را می‌دهد که هر عملیاتی روی هر داده‌ای انجام شود، که معمولاً دنباله‌ای از بیت‌ها با طول‌های متفاوت در نظر گرفته می‌شوند. زبان‌های سطح بالا که بی نوع هستند شامل زبان‌های ساده رایانه‌ای و برخی از انواع زبان‌های نسل چهارم.

در عمل، در حالیکه تعداد بسیار کمی از دیدگاه نظریه نوع، نوع گذاری شده تلقی می‌شوند(چک کردن یا رد کردن تمام عملیات‌ها)، غالب زبان‌های امروزی درجه‌ای از نوع گذاری را فراهم می‌کنند. بسیاری از زبان‌های تولیدکننده راهی را برای گذشتن یا موقوف کردن سیستم نوع فراهم می‌کنند.



نوع گذاری ایستا و متحرک

در نوع گذاری ایستا تمام عبارات نوع‌های خود را قبل از اجرای برنامه تعیین می‌کنند(معمولاً در زمان کامپایل). برای مثال، ۱ و (۲+۲) عبارات عددی هستند؛ آنها نمی‌توانند به تابعی که نیاز به یک رشته دارد داده شوند، یا در متغیری که تعریف شده تا تاریخ را نگه دارد، ذخیره شوند.


زبان‌های نوع گذاری شده ایستا می‌توانند با مانیفست نوع گذاری شوند یا با استفاده از نوع استنباط شوند. در حالت اول، برنامه نویس بیشتر صریحاً نوع‌ها را در جایگاه‌های منتنی مشخص می‌نویسد(برای مثال، در تعریف متغیرها). در حالت دوم، کامپایلر نوع عبارات و تعریف‌ها را بر اساس متن استنباط می‌کند. غالب زبان‌های مسیر اصلی(mainstream) ایستا نوع گذاری شده، مانند C#,C++ و Java، با مانیفست نوع گذاری می‌شوند



نوع گذاری قوی و ضعیف

نوع گذاری ضعیف این امکان را ایجاد می‌کند که با متغیری به جای متغیری دیگر برخورد شود، برای مثال رفتار با یک رشته به عنوان یک عدد. این ویژگی بعضی اوقات ممکن است مفید باشد، اما ممکن است باعث ایجاد برخی مشکلات برنامه شود که موقع کامپایل و حتی اجرا پنهان بمانند.

نوع گذاری قوی مانع رخ دادن مشکل فوق می‌شود. تلاش برای انجام عملیات روی نوع نادرست متغیر منجر به رخ دادن خطا می‌شود. زبان‌هایی که نوع گذاری قوی دارند غالباً با نام "نوع-امن" و یا امن شناخته می‌شوند. تمام تعاریف جایگزین برای "ضعیف نوع گذاری شده" به زبان‌ها اشاره می‌کند، مثل perl, JavaScript, C++، که اجازه تعداد زیادی تبدیل نوع داخلی را می‌دهند. در جاوااسکریپت، برای مثال، عبارت ۲*x به صورت ضمنی x را به عدد تبدیل می‌کند، و این تبدیل موفقیت آمیز خواهد بود حتی اگر x خالی، تعریف نشده، یک آرایه، و یا رشته‌ای از حروف باشد. چنین تبدیلات ضمنی غالباً مفیدند، اما خطاهای برنامه نویسی را پنهان می‌کنند.

قوی و ایستا در حال حاضر عموماً دو مفهوم متعامد فرض می‌شوند، اما استفاده در ادبیات تفاوت دارد، برخی عبارت "قوی نوع گذاری شده" را به کار می‌برند و منظورشان قوی، ایستایی نوع گذاری شده‌است، و یا، حتی گیچ کننده تر، منظورشان همان ایستایی نوع گذاری شده‌است. بنابراین C هم قوی نوع گذاری شده و هم ضعیف و ایستایی نوع گذاری شده نامیده می‌شود.



معناشناسی اجرا

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

برای مثال، معناشناسی ممکن است استراتژی را که بویسله آن عبارات ارزیابی می‌شوند را تعریف کند و یا حالتی را که ساختارهای کنترلی تحت شرایطی دستورها را اجرا می‌کنند.


کتابخانه هسته
اغلب زبان‌های برنامه نویسی یک کتابخانه هسته مرتبط دارند(گاهی اوقات "کتابخانه استاندارد" نامیده می‌شوند، مخصوصا وقتی که به عنوان قسمتی از یک زبان استاندارد ارائه شده باشد)، که به طور قراردادی توسط تمام پیاده سازی‌های زبان در دسترس قرار گرفته باشند. کتابخانه هسته معمولاً تعریف الگوریتم‌ها، داده ساختارها و مکانیزم‌های ورودی و خروجی پرکاربرد را در خود دارد. کاربران یک زبان، غالباً با کتابخانه هسته به عنوان قسمتی از آن رفتار می‌کنند، اگرچه طراحان ممکن است با آن به صورت یک مفهوم مجزا رفتار کرده باشند. بسیاری از خصوصیات زبان هسته‌ای را مشخص می‌کنند که باید در تمام پیاده سازی‌ها موجود باشند، و در زبان‌های استاندارد شده این کتابخانه هسته ممکن است نیاز باشد. بنابراین خط بین زبان و کتابخانه هسته آن از زبانی به زبان دیگر متفاوت است. درواقع، برخی زبان‌ها به گونه‌ای تعریف شده‌اند که برخی از ساختارهای دستوری بدون اشاره به کتابخانه هسته قابل استفاده نیستند. برای مثالف در جاوا، یک رشته به عنوان نمونه‌ای از کلاس “java.lang.String” تعریف شده است؛ مشابها، در سمال تاک(smalltalk) یک تابع بی نام(یک "بلاک") نمونه‌ای از کلاس BlockContext کتابخانه می‌سازد. بطور معکوس، Scheme دارای چندین زیرمجموعه مرتبط برای ایجاد سایر ماکروهای زبان می‌باشد، و در نتیجه طراحان زبان حتی این زحمت را نیز تحمل نمی‌کنند که بگویند کدام قسمت زبان به عنوان ساختارهای زبان باید پیاده سازی شوند، و کدام یک به عنوان بخشی ازکتابخانه.


عمل
طراحان زبان و کاربران باید مصنوعاتی ایجاد کنند تا برنامه نویسی را در عمل ممکن سازند و کنترل کنند. مهمترین این مصنوعات خصوصیات و پیاده سازی‌های زبان هستند.



خصوصیات

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

تعریف صریح دستور، معناشناسی ایستا، ومعناشناسی اجرای زبان. درحالیکه دستور معمولاً با یک معناشناسی قراردادی مشخص می‌شود، تعاریف معناشناسی ممکن است در زبان طبیعی نوشته شده باشند (مثل زبان C)، یا معناشناسی قراردادی(مثل StandardML ,Scheme)
توضیح رفتار یک مترجم برای زبان(مثل C,fortran). دستور و معناشناسی یک زبان باید از این توضیح استنتاج شوند، که ممکن است به زبان طبیعی یا قراردادی نوشته شود.
پیاده سازی منبع یا مدل. گاهی اوقات در زبان‌های مشخص شده(مثل: prolog,ANSI REXX).دستور و معناشناسی صریحاً در رفتار پیاده سازی مدل موجودند.


پیاده سازی

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

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

برنامه‌هایی که مستقیماً روی سخت‌افزار اجرا می‌شوند چندین برابر سریعتر از برنامه‌هایی که با کمک نرم‌افزار اجرا می‌شوند، انجام می‌شوند.

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



تاریخچه
پیشرفت‌های اولیه

اولین زبان برنامه نویسی به قبل از رایانه‌های مدرن باز می‌گردد. قرن ۱۹ دستگاه‌های نساجی و متون نوازنده پیانو قابل برنامه نویسی داشت که امروزه به عنوان مثال‌هایی از زبان‌های برنامه نویسی با حوزه مشخص شناخته می‌شوند. با شروع قرن بیستم، پانچ کارت‌ها داده را کد گذاری کردند و پردازش مکانیکی را هدایت کردند. در دهه ۱۹۳۰ و ۱۹۴۰، صورت گرایی حساب لاندای آلونزو چرچ و ماشین تورینگ آلن تورینگ مفاهیم ریاضی بیان الگوریتم‌ها را فراهم کردند؛ حساب لاندا همچنان در طراحی زبان موثر است.

در دهه ۴۰، اولین رایانه‌های دیجیتال که توسط برق تغذیه می‌شدند ایجاد شدند. اولین زبان برنامه نویسی سطح بالا طراحی شده برای کامپیوتر پلانکالکول بود، که بین سال‌های ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.

کامپیوترهای اوایل ۱۹۵۰، بطور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامه‌های زبان ماشین استفاده می‌کردند. برنامه نویسی زبان ماشین نسل اول توسط نسل دومی که زبان اسمبلی نامیده می‌شوند جایگزین شد. در سال‌های بعد دهه ۵۰، زبان برنامه نویسی اسمبلی، که برای استفاده از دستورات ماکرو تکامل یافته بود، توسط سه زبان برنامه نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخه‌های به روز شده این برنامه‌ها همچنان مورد استفاده قرار می‌گیرند، و هر کدام قویا توسعه زبان‌های بعد را تحت تاثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبان‌های برنامه نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبان‌های برنامه نویسی به شدت متاثر از محدودیت‌های رابط بودند.



پالایش

دوره دهه ۶۰ تا اواخر دهه ۷۰ گسترش مثال‌های عمده زبان پرکاربرد امروز را به همراه داشت. با این حال بسیاری از جنبه‌های آن بهینه سازی ایده‌های اولیه نسل سوم زبان برنامه نویسی بود:

APL برنامه نویسی آرایه‌ای را معرفی کرد و برنامه نویسی کاربردی را تحت تاثیر قرار داد.
PL/i(NPL) دراوایل دهه ۶۰ طراحی شده بود تا ایده‌های خوب فورترن و کوبول را بهم پیوند دهد.
در دهه ۶۰، Simula اولین زبانی بود که برنامه نویسی شئ گرا را پشتیبانی می‌کرد، در اواسط دهه۷۰. Smalltalk به دنبال آن به

عنوان اولین زبان کاملاً شئ گرا معرفی شد.

C بین سال‌های ۱۹۶۹ تا ۱۹۷۳ به عنوان زبان برنامه نویسی سیستمی طراحی شد و همچنان محبوب است.
Prolog، طراحی شده در ۱۹۷۲، اولین زبان برنامه نویسی منطقی بود.
در ۱۹۷۸ ML سیستم نوع چند ریخت روی لیسپ ایجاد کرد، و در زبان‌های برنامه نویسی کاربردی ایستا نوع گذاری شده پیشگام شد.

هر یک از این زبان‌ها یک خانواده بزرگ از وارثین از خود به جای گذاشت، و مدرنترین زبان‌ها از تبار حداقل یکی از زبان‌های فوق به شمار می‌آیند.

دهه‌های ۶۰ و ۷۰ مناقشات بسیاری روی برنامه نویسی ساخت یافته به خود دیدند، و اینکه آیا زبان‌های برنامه نویسی باید طوری طراحی شوند که آنها را پشتیبانی کنند.

"ادسگر دیکسترا" در نامه‌ای معروف در ۱۹۶۸ که در ارتباطات ACM منتشر شد، استدلال کرد که دستورgoto باید از تمام زبان‌های سطح بالا حذف شود.

در دهه‌های ۶۰ و ۷۰ توسعهٔ تکنیک‌هایی صورت گرفت که اثر یک برنامه را کاهش می‌داد و در عین حال بهره وری برنامه نویس و کاربر را بهبود بخشید. دسته کارت برای ۴GL اولیه بسیار کوچکتر از برنامهٔ هم سطح بود که با ۳GL deck نوشته شده بود.




یکپارچگی و رشد

دهه ۸۰ سال‌های یکپارچگی نسبی بود. C++ برنامه نویسی شئ گرا و برنامه نویسی سیستمی را ترکیب کرده بود. ایالات متحده ایدا(زبان برنامه نویسی سیستمی که بیشتر برای استفاده توسط پیمان کاران دفاعی بود) را استاندارد سازی کرد. در ژاپن و جاهای دیگر، هزینه‌های گزافی صرف تحقیق در مورد زبان نسل پنجم می‌شد که دارای ساختارهای برنامه نویسی منطقی بود. انجمن زبان کاربردی به سمت استانداردسازی ML و Lisp حرکت کرد. به جای ایجاد مثال‌های جدید، تمام این تلاش‌ها ایده‌هایی که در دهه‌های قبل حلق شده بودند را بهتر کرد.

یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستم‌های بزرگ از طریق مدول‌ها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. مدول-۲، ایدا. و ML همگی سیستم‌های مدولی برجسته‌ای را در دهه ۸۰ توسعه دادند. با وجود اینکه زبان‌های دیگر، مثل PL/i، پشتیبانی بسیار خوبی برای برنامه نویسی مدولی داشتند. سیستم‌های مدولی غالباً با ساختارهای برنامه نویسی عام همراه شده‌اند.

رشد سریع اینترنت در میانه دهه ۹۰ فرصت‌های ایجاد زبان‌های جدید را فراهم کرد. Perl، در اصل یک ابزار نوشتن یونیکس بود که اولین بار در سال ۱۹۸۷ منتشر شد، در وب‌گاه‌های دینامیک متداول شد. جاوا برای برنامه نویسی جنب سروری مورد استفاده قرار گرفت. این توسعه‌ها اساساً نو نبودند، بلکه بیشتر بهینه سازی شده زبان و مثال‌های موجود بودند، و بیشتر بر اساس خانواده زبان برنامه نویسی C بودند. پیشرفت زبان برنامه نویسی همچنان ادامه پیدا می‌کند، هم در تحقیقات و هم در صنعت. جهت‌های فعلی شامل امنیت و وارسی قابلیت اعتماد است، گونه‌های جدید مدولی(mixin، نماینده‌ها، جنبه‌ها) و تجمع پایگاه داده.

۴GLها نمونه‌ای از زبان‌هایی هستند که محدوده استفاده آنها مشخص است، مثل SQL. که به جای اینکه داده‌های اسکالر را برگردانند، مجموعه‌هایی را تغییر داده و بر می‌گردانند که برای اکثر زبان‌ها متعارفند. Perl برای مثال، با "مدرک اینجا" خود می‌تواند چندین برنامه ۴GL را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در "مدرک اینجا" استفاده کند.




سنجش استفاده از زبان

مشکل است که مشخص کنیم کدام زبان برنامه نویسی بیشتر مورد استفاده‌است، و اینکه کاربرد چه معنی می‌دهد با توجه به زمینه تغییر می‌کند. یک زبان ممکن است زمان بیشتری از برنامه نویس بگیرد، زبان دیگر ممکن است خطوط بیشتری داشته باشد، و دیگری ممکن است زمان بیشتری از پردازنده را مصرف کند. برخی زبان‌ها برای کاربردهای خاص بسیار محبوبند. برای مثال: کوبول همچنان در مراکزداده متحد، غالباً روی کامپیوترهای بزرگ توانا است؛ fortran در مهندسی برنامه‌های کاربردی، C در برنامه‌های تعبیه شده و سیستم‌های عامل؛ و بقیه برنامه‌ها معمولاً برای نوشتن انواع دیگر برنامه‌ها کاربرد دارند. روش‌های مختلفی برای سنجش محبوبیت زبان‌ها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شده‌است:

شمارش تعداد تبلیغات شغلی که از آن زبان نام می‌برند.
تعداد کتاب‌های آموزشی و شرح دهندهٔ آن زبان که فروش رفته‌است.
تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبان‌هایی را که در جستجوها کمتر پیدا می‌شوند دست کم گرفته شوند.
شمارش ارجاع‌های زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.

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

این حقیقت که این دسته بندی ممکن است در راستای محورهای مختلف انجام شوند، این وظیفه را پیچیده تر می‌کند؛ برای مثال، جاوا هم یک زبان شیءگرا(چون به برنامه نویسی شیءگرا تشویق می‌کند) و زبان همزمان(چون ساختارهای داخلی برای اجرای چندین جریان موازی دارد) است. پایتون یک زبان اسکریپتی شیءگراست.

در نگاه کلی، زبان‌های برنامه نویسی به مثال‌های برنامه نویسی و یک دسته بندی بر اساس محدوده استفاده تقسیم می‌شوند. مثال‌ها شامل برنامه نویسی رویه‌ای، برنامه نویسی شیءگرا، برنامه نویسی کاربردی، وبرنامه نویسی منطقی؛ برخی زبان‌ها ترکیب چند مثالند. یک زبان اسمبلی مثالی از یک مدل مستقیم متضمن معماری ماشین نیست. با توجه به هدف، زبان‌های برنامه نویسی ممکن است همه منظوره باشند، زبان‌های برنامه نویسی سیستمی، زبان‌های اسکریپتی، زبان‌های محدوده مشخص، زبان‌های همزمان/ گسترده(و یا ترکیب اینها). برخی زبان‌های همه منظوره تا حد زیادی برای اهداف آموزشی طراحی شده‌اند.

یک زبان برنامه نویسی ممکن است با فاکتورهای غیر مرتبط به مثال‌های برنامه نویسی دسته بندی شود. برای مثال، غالب زبان‌های برنامه نویسی کلمات کلیدی زبان انگلیسی را استفاده می‌کنند، در حالیکه تعداد کمی این کار را نمی‌کنند. سایر زبان‌ها ممکن است براساس داخلی بودن یا نبودن دسته بندی شوند.
ساعت : 11:14 pm | نویسنده : admin | تک گرافیک | مطلب قبلی
تک گرافیک | next page | next page