اولا مشکلات مطرح شده توی این وبلاگ کاملا هم صحیح نیستن، مثلا مشکل دومش که کاملا اشتباه گرفته شده و شما میتونی موقع تعریف یه عبارت Lambda کاملا نوع نهاییش رو تعیین کنی.متاسفانه اوراکل خیلی هم در زمینه لامبدا خوب کار نکرده و جاوا 8 راه زیادی داره تا بشه برنامه های خوب فانکشنال باهاش نوشت . دیباگ برنامه هایی که با استفاده از لامبدا در جاوا 8 نوشته میشه به شدت سخته و معایبش بیشتر از مزایاشه
ولی حالا اگه نخوام به جزئیات بپردازم، اول باید بگم با اضافه شدن عبارات Lambda هیچوقت قرار نبوده Java به یه زبون برنامهنویسی Functional (چیزی مثل قابلیتهای دوستداشتنی Scala، Javascript، Go، FSharp، Python و...) تبدیل بشه. عبارات Lambda کمی جاوا رو به این زبونا نزدیک میکنه فقط.
در واقع هرچند مرز دقیقی بین Functional Programming و Object Oriented Programming وجود نداره ولی Java یه زبان شیءگراست و قرار نیست نوعش رو تغییر بده!
در ضمن عبارات Lambda صرفا مختص Java نیست. اتفاقا به نظر میاد Java خیلی دیر به یاد عبارات Lambda افتاد! قبلا 11 ++C، داتنت و... عبارات Lambda رو به خودشون اضافه کرده بودن. منم قبول دارم اضافه کردن این عبارات Debug رو سخت میکنه. اما هرچیزی بهایی داره. مشکل Debug توی فریمورکهای دیگهم دیده میشه. حتی به نظر من Java تلاش زیادی کرده Debug رو راحت کنه. مخصوصا در مورد چگونگی ذخیره عبارات Lambda توی حافظه خیلی از NET. جلوتره.
بهرحال نظر من اینه که هر چیزی نقاط قوت و ضعفی داره. این مشکلات اگر هم ۱۰۰٪ درست باشن توی فریمورکهای دیگه هم وجود دارن واساساً این نقاط ضعف مربوط به مفهوم عبارات Lambdaست! نه نحوهی پیاده سازیشون توی Java یا NET. یا هر فریمورک دیگهای.
مثلا برنامه نویسی شیءگرای کامل (مثل همین Java یا همون #C) هم علاوه بر فواید خیلی زیادش نقاط ضعفی داره برای خودش...
در مورد چیزایی که خیلی عالی میشد اگه Java به عبارات Lambda اضافه میکرد، من این موارد رو خیلی قبول دارم... هرچند شعار Java همیشه سادگی بوده و اینا باش در تضادن.