عکاسی آنی
عکاسی آنی یا اسنپ شات در تعریف کلی آن به عکس هایی اطلاق می گردد که توسط آماتورها و با دوربین های ساده، جهت ثبت اتفاقات ساده گرفته می شوند.






پیدایش

عکس های آنی در اثر پیشرفت های تکنیکی نظیر تکنولوژی شاتر سرعت بالا از اویل دهه ۱۸۶۰ و پیشرفت رو به رشد فیلم های سریع تر و حساس تر، امکان پذیر گردیدند.






زیبایی شناسی

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






تأثیرگذاری ها

عکاسی آنی بر عکاسان جدید خیابانی نظیر ویلیام کلاین و گری وینوگراند اثر گذاشت. همچنین در ایجاد روش شاعرانه تری از عکاسی شهری در سنت عکاسی اومانیستی نیز مؤثر بود.





عکاسی اجسام بی‌جان

عکاسی اجسام بی‌جان یا عکاسی طبیعت خاموش (به انگلیسی: Still life photography) شاخه‌ای از هنر عکاسی می‌باشد٬ که به ثبت تصویر از اشیاء بی‌جان و معمولاً غیر متحرک همچون شعله شمع٬ دود٬ گل‌ها، غذا، سنگ٬ کتاب، جواهرات٬ لوازم التحریر٬ میوه‌ها و سایر اشیا محیط پیرامون می‌پردازد.

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

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






تاریخچه

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

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

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

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

در کادربندی هنگام ثبت عکس نیز بایستی بسیار دقت نمود؛ عکاس باید به گونه‌ای کادربندی کند تا تصویر محدود گردد و توجه بیننده به سمت سوژه اصلی هدایت شود.






پس زمینه

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

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

برای بهبود نور محیط٬ در صورت مناسب نبودن آن٬ اولین و بهترین گزینه برای عکاسان این سبک٬ استفاده از سافت‌باکس است.





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





عکاسی از رد ستاره‌ها

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

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






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





عکاسی از مجسمه

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

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

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





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





عکاسی انتزاعی

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

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

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





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

نورطبیعی
نورپردازی رامبراند
نورپردازی پروانه‌ای







انواع

این نوع عکاسی خود شامل انواع مختلفی است:

پرتره تمام قد
پرتره پرسنلی
پرتره هنری
پرتره سیاسی
پرتره تبلیغاتی
پرتره خانوادگی
و....

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






کارگاه عکاسی

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






عکاسان پرتره

یوسف کارش
فخرالدین فخرالدینی
هادی شفائیه
سید مهدی امیری دشت بیاض - باهر






عکاسی تبلیغاتی
عکاسی تبلیغاتی (به انگلیسی: Commercial photography) ، شاخه‌ای از عکاسی است که عکاس از محصولات، کالاها، تولیدات و خدمات افراد یا شرکت‌‌ها عکسبرداری می‌کند.





عکاسی تجاری

(عکاسی تجاری(به انگلیسی: Commercial Photography)، به هر نوع عکاسی که برای آن به عکاس پولی پرداخت می‌شود، اطلاق می‌شود. در واقع عموماً در این نوع عکاسی، برای عکاس کمتر جنبه هنری کار اهمیت دارد.

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

در این شاخه از عکاسی کلام مشهوری وجود دارد، مبنی بر این که "یک عکس به اندازه یک‌هزار حرف می‌ارزد" (A picture is worth a thousand words)

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





عکاسی جدایی‌طلب
عکاسی جدایی‌طلب، ژانری از عکاسی بود که در سال ۱۹۰۲ توسط آلفرد استیگلیتس پایه گذاری شد تا جدایی از پیکتوریالیسم مسلط بر فضای عکاسی آمریکا را ابلاغ نماید. این جنبش با گذار از پیکتوریالیسم به عکاسی صریح، نشانگر آغاز مدرنیسم در عکاسی می باشد. پایان رسمی این جنبش، با پیوستن آلفرد استیگلیتس به جنبش عکاسی صریح و تحت تأثیر پل استرند به وقوع پیوست.





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






تاریخچه

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

به علت حساسیت‌های نظامی و استراتژیک، اجازهٔ تصویربرداری چندانی در جنگ جهانی اول به عکاسان داده نشد، هر چند عکاسی از پیکارهای مبارزاتی، سال‌ها پیش از این جنگ آغاز شده بود.

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






سوژه‌های عکاسی

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

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





عکاسی حیات وحش

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

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





عکاسی خبری

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

سه تعریف رایج درباره عکاسی خبری وجود دارد:

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

تعریف آخری که از فتوژورنالیسم می‌توان عنوان کرد این است که گفته شود:

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






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






تاریخچه

در اوایل سال ۱۹۰۰، آلفرد استیگلیتز - Alfred Stieglitz - و ویلیام فریزر - William Fraser -، شروع به عکاسی در شب کردند. بیل برانت - Bill Brandt - و براسای - Brassai - پایه‌گذاران اصلی عکاسی در شب هستند. در سال ۱۹۳۲ اولین کتاب عکاسی در شب را که عکس‌های او از خیابان‌های پاریس بود با نام پاریس در شب - Paris de Nuit - منتشر کرد. در طول جنگ جهانی دوم، بیل برانت عکس‌هایی سیاه و سفید از خیابان‌های لندن در زیر نور مهتاب تهیه نمود.

در سال ۱۹۹۰ عکاس متولد انگلیس، مایکل کننا - Michael Kenna - موفق‌ترین عکاس شب معرفی شد. عکس‌های سیاه و سفید مایکل که اغلب در ساعات طلوع و غروب خورشید از سان فرانسیسکو، ژاپن، فرانسه، و انگلستان تهیه شده بود، ارائه گردید. به یادماندنی‌ترین پروژه‌های مایکل تصویر نیروگاه راتکلیف در شرق میدلندز، انگلستان، و تصاویری از اردوگاه‌های کار اجباری نازی‌ها پراکنده در سراسر آلمان، فرانسه، بلژیک، لهستان و اتریش است.

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






ضریب شوارتز شیلد

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





عکاسی خیابانی
عکاسی خیابانی (به انگلیسی: Street Photography) به عنوان بدنه هنر عکاسی، صحنه‌هایی از زندگی روزمره مردم را سوژه اصلی خود قرار می‌دهد. خیابان‌ها، پارک‌ها، کارناوال‌ها، محل‌های خرید و مراکزی که مردم گرد هم می‌آیند، محل اصلی تهیه عکس‌های خیابانی است. هر چند این عکاسی شاخه‌ای از عکاسی مستند به شمار می‌آید اما از بعضی لحاظ با هم متفاوت هستند از جمله اینکه هدف اصلی عکاسی خیابانی به تصویر کشیدن مردم است و نه پوشش یک اتفاق. در واقع این شاخه از عکاسی آیینه‌ای است در برابر مردم که گاهی نیز با شوخ طبعی و یا لحنی طعنه‌آمیز پیام‌های سیاسی و یا اجتماعی را منتقل می‌کند که در چنین شرایطی به عکاسی مستند نزدیک می‌شود. سال‌های ۱۹۷۵ تا ۱۹۸۰ نقطه اوج و شکوفایی تاریخ عکاسی خیابانی است.





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






پیشینه

در سال ۱۶۱۱ دومینیس نشان داد که نور مرئی از سه نور اساسی قرمز، سبز و آبی، تشکیل شده‌است که به آنها رنگهای اولیه می‌گویند. این مفهوم در توسعه نظریه عکس رنگی و عکاسی رنگی بسیار مفید واقع شد و در سال ۱۸۶۱ این عقیده کم کم قوت گرفت که برای توسعه تصویر رنگی، یک فیلمی از سه لایه باید ساخت که هر لایه آن نسبت به یکی از سه رنگ اولیه حساس باشد. این نظریه توسط ماکسول دانشمند معروف انگلیسی ارائه شد و هم او بود که اولین عکس رنگی را گرفت. و نتایج به دست آمده توسط وی بعدها با نظریه جدید مربوط به این فن، کاملاً مطابقت داشت.






سیر تحولی و رشد عکاسی

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






تولید عکس رنگی

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






ظهور رنگ

{{اصلی|ظهور (عکاسی)}} بیشتر فیلمهای رنگی به کمک یک فرایند رنگی حاصل از ترکیبات رنگی موجود در فیلم ظا هر می‌شوند که نخستین بار در سال ۱۹۱۲ توسط فیشر شیمیدان آلمانی کشف شد. اساس این فرایند اکسیده شدن ماده ظا هرکننده و تبدیل آن به یک جسم رنگ ساز است، که این ترکیب در واکنش با یک مولکول همتای خود، رنگ مورد نظر را به وجود می‌آورد. در بعضی از فیلمهای رنگی نظیر کوداکروم(II)، مولکول همتا در محلول ظهور حل شده و در مجاورت دانه های‌ها لید نقره، با مولکول رنگ ساز ترکیب می‌شود. در برخی دیگر از فیلمهای رنگی مانند کوداکروم، اکتاکروم، آننسکوکروم، مولکولهای همتا به طور یکنواخت در لایه‌های امولسیونی توزیع شده و در آن جسم رنگی مورد نظر را تشکیل می‌دهند. ظا هر کننده‌های رنکی عموماً از نوع آمین‌های جانشین شده‌اند. برای تولید رنگ سیان در فرایند ظهور، یک ترکیب فنولی مانند آلفا نفتول به صورت یک همتا عمل می‌کند. به منظور تغییر میزان حلالیت و افزایش سرعت ظهور، در ساختار ظا هر کننده‌ها تغییراتی توسط متخصصهای ظهور فیلم داده می‌شود. مشکلی که در اینجا وجود دارد این است که مواد به کار رفته در محلول ظهور، ممکن است برای بیشتر افراد حساسیت زا بوده و موجب بروز تورم در پوست دست آنها شود. از این رو، همواره کوشش شده‌است با ایجاد تغییرات مناسب، از میزان سمیّت و حساسیت زایی این محلول ظهور فیلم کاسته شود.






فرایند کوداکروم

یک مثال جالب از سیستم عکاسی رنگی که بطور وسیعی به کار برده می‌شود، فرایند کوداکروم می‌باشد. این فرایند برگشت پذیر است، یعنی رنگ‌ها بر حسب ارزشهای صحیح آنها تولید می‌شوند و نه برحسب رنگهای مکمل یا منفی آنها. نخستین ماده ظاهر کننده در فرایند کوداکروم، یک ظاهر کننده فیلم سیاه و سفید بوده‌است.
6:49 am
کاربرد برنامه نویسی

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





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

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

یک سیر رایج در گسترش زبان‌های برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبان‌های برنامه نویسی اولیه به سخت‌افزار رایانه گره خورده بودند. همانطور که زبان‌های برنامه نویسی جدید گسترش پیدا کرده‌اند، ویژگی‌هایی به برنامه‌ها افزوده شده که به برنامه نویس اجازه دهد که ایده‌هایی که از ترجمه ساده به دستورات سخت‌افزار دورتر هستند نیز استفاده کند. چون برنامه نویس‌ها کمتر به پیچیدگی رایانه محدود شده‌اند، برنامه‌های آنها می‌تواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را می‌دهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازنده‌های زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبان‌های اختصاصی برنامه نویسی پیشنهاد شده‌اند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط 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 در برنامه‌های تعبیه شده و سیستم‌های عامل؛ و بقیه برنامه‌ها معمولاً برای نوشتن انواع دیگر برنامه‌ها کاربرد دارند. روش‌های مختلفی برای سنجش محبوبیت زبان‌ها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شده‌است:

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

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

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

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

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