কফিসক্রিপ্টের পক্ষে কি কি? [বন্ধ]


48

অবশ্যই একটি বড় সমর্থক হ'ল সিনট্যাকটিক চিনির পরিমাণ হ'ল প্রচুর ক্ষেত্রে সংক্ষিপ্ত কোড বাড়ে। উপর http://jashkenas.github.com/coffee-script/ চিত্তাকর্ষক উদাহরণ আছে। অন্যদিকে আমার সন্দেহ আছে যে এই উদাহরণগুলি জটিল বাস্তব বিশ্বের অ্যাপ্লিকেশনগুলির কোডকে উপস্থাপন করে। উদাহরণস্বরূপ আমার কোডে আমি কখনই খালি বস্তুগুলিতে ফাংশন যুক্ত করি না বরং তাদের প্রোটোটাইপগুলিতে। এছাড়াও প্রোটোটাইপ বৈশিষ্ট্যটি ব্যবহারকারীর কাছ থেকে গোপন করা হয়, যা প্রজ্ঞাগত জাভাস্ক্রিপ্টের পরিবর্তে শাস্ত্রীয় ওওপি প্রস্তাব করে।

অ্যারে বোধগম্য উদাহরণটি সম্ভবত আমার কোডটিতে এটি দেখবে:

cubes = $.map(list, math.cube); // which is 8 characters less using jQuery...

7
এটি অ্যারে বোধগম্যতা নয়। এটি JQuery.map ()।
রেন হেনরিচস

1
অবশ্যই, অতএব আমি নিজেই "অ্যারে বোঝাপড়া" উল্লেখ করছি না বরং "অ্যারে বোঝার উদাহরণ [ওয়েবসাইটে]" উল্লেখ করছি।
ফিলিপ

যথেষ্ট ফর্সা। আমার বক্তব্যটি হ'ল যে ভাঁজ (মানচিত্র) কিছু উপায়ে তালিকা বোঝার ক্ষেত্রে অধঃপতন ঘটে (যা সাধারণত আরও শক্তিশালী)।
রেন হেনরিচস

আচ্ছা মূলত আমি এই প্রশ্নটি জিজ্ঞাসা করছি কারণ আমি ভাবছি যে কফিস্ক্রিপ্টের পরিবর্তে জাভাস্ক্রিপ্ট ব্যবহার করা বোকামি সিদ্ধান্ত কিনা is আমি সম্মত, অ্যারে বোঝাপড়া অন্যদিকে অনেক শক্তিশালী যে কেউই যুক্তি দিতে পারে না যে অ্যারে বোধগম্যতা এবং প্রারম্ভিক / শেষের পরিবর্তে ইন্ডেন্টেশন দ্বারা ব্লকগুলি চিহ্নিত করার কারণে পাইথন রুবির চেয়ে আরও শক্তিশালী।
ফিলিপ

কড়া কফি স্ক্রিপ্ট একটি ডিফল্ট রত্ন তৈরি। এটা তোলে কুপিত "আলোচনা" github.com/rails/rails/commit/...
generalhenry

উত্তর:


53

আমি কফিস্ক্রিপ্টে আসন্ন বইয়ের লেখক:
http://pragprog.com/titles/tbcoffee/coffeescript

আমি নিশ্চিত ছিলাম যে কফিস্ক্রিপ্টটি এটির সাথে খেলে প্রায় এক সপ্তাহ পরে ব্যবহার করার উপযুক্ত ছিল, যদিও ভাষাটি তখনকার কয়েক মাস বয়সী ছিল এবং এখনকার চেয়ে অনেকগুলি রুক্ষ প্রান্ত ছিল had অফিসিয়াল সাইটটি ভাষার বৈশিষ্ট্যগুলি (বেশিরভাগ) তালিকাভুক্ত করার একটি দুর্দান্ত কাজ করে, তাই আমি এখানে সেগুলি পুনরাবৃত্তি করব না। পরিবর্তে, আমি কেবল এটিই বলব যে ভাষার বৈশিষ্ট্যগুলি হ'ল:

  1. ভাল জাভাস্ক্রিপ্ট নিদর্শন ব্যবহার উত্সাহিত করে
  2. জাভাস্ক্রিপ্ট বিরোধী নিদর্শনকে নিরুৎসাহিত করে
  3. এমনকি আরও ভাল জাভাস্ক্রিপ্ট কোড খাটো এবং আরও পঠনযোগ্য করে তোলে

নং 3 প্রথম দুটি (এমনকি আমার বইতেও) তুলনায় অনেক বেশি মনোযোগ পেয়েছে, তবে আমি এটির বিষয়ে যত বেশি চিন্তা করি, ততই আমি বুঝতে পারি যে আমি কেবল সুন্দর সিনট্যাক্সের জন্য ঝাঁপ দাওনি; ভাষাটি আমাকে আরও ভাল, কম ত্রুটি-প্রবণ জাভাস্ক্রিপ্টের দিকে ঠেলে দিয়েছে বলে আমি লাফ দিয়েছিলাম। কয়েকটি দ্রুত উদাহরণ দিতে:

  • ভেরিয়েবলগুলি স্বয়ংক্রিয়ভাবে স্কোপযুক্ত হওয়ায় আপনি ভুলক্রমে বাদ দিয়ে গ্লোবালগুলিকে ওভাররাইট করতে পারবেন না var, একই নামের সাথে একটি পরিবর্তনশীলকে ছায়া (নাম যুক্তিযুক্ত যুক্তি ব্যতীত) ছড়িয়ে দিতে পারবেন না বা বিভিন্ন ফাইলের মধ্যে ভেরিয়েবল থাকতে পারে যা ইন্টারঅ্যাক্ট করে ( https://stackoverflow.com/questions দেখুন / 5211638 / প্যাটার্ন-ফর-কফিফ্রিপ্ট-মডিউল / 5212449 )।
  • ->লেখার চেয়ে অনেক সহজ লেখার কারণ হ'ল function(){}কলব্যাকগুলি ব্যবহার করা সহজ। কলব্যাকগুলি বাসা বেঁধে দেওয়ার সময় অর্থপূর্ণ ইন্ডেন্টেশন এটি পরিষ্কার করে দেয়। এবং উপযুক্ত হলে =>সংরক্ষণ করা সহজ করে তোলে this
  • যেহেতু unless xইংরেজী স্পিকারগুলির পক্ষে পার্স করা আরও সহজ if (!x)এবং মাত্র দুটি উদাহরণ দেওয়া তার if x?চেয়ে সহজ if (x != null), আপনি যুক্তির বাক্য গঠনে মস্তিষ্কের চক্রটি কম যুক্তি করতে এবং নিজের পক্ষে আরও অনেক কিছু ব্যয় করতে পারেন।

অ্যান্ডসকোর.জেএস এর মতো একটি দুর্দান্ত গ্রন্থাগার এগুলির মধ্যে কিছু সমস্যার যত্ন নিতে পারে তবে সমস্ত কিছু নয়।

এখন কনস জন্য:

  1. সংকলন একটি ব্যথা হতে পারে। কফিস্ক্রিপ্ট সংকলক নিক্ষিপ্ত সিনট্যাক্স ত্রুটিগুলি প্রায়শই অস্পষ্ট। ভবিষ্যতে সেই ট্র্যাকটিতে অগ্রগতি হবে বলে আমি প্রত্যাশা করি। (সংকলকটির প্রতিরক্ষাতে, এটি প্রায়শই এমন জিনিসগুলি ধরা দেয় যা আপনি যদি জাভাস্ক্রিপ্টে লিখেছিলেন that কোডটির এই লাইনটি চলার আগে পর্যন্ত আপনি ত্রুটি হিসাবে আবিষ্কার করতে পারবেন না those এই বাগগুলি যত তাড়াতাড়ি ধরা হবে তার চেয়ে শীঘ্রই ভাল)
  2. সম্পর্কিত, ডিবাগিং একটি ব্যথা হতে পারে। মূল কফিস্ক্রিপ্টের সাথে সংকলিত জেএস লাইনগুলি মিলানোর এখনও কোনও উপায় নেই (যদিও ফায়ারফক্সের লোকেরা প্রতিশ্রুতি দিয়েছে যে এটি আসছে)।
  3. এটি পরিবর্তন প্রবণ। আপনার কোডটি কফিস্ক্রিপ্টের ভবিষ্যতের সংস্করণের অধীনে আলাদাভাবে চলতে পারে বা না চালানো যায়। অবশ্যই, বেশিরভাগ ভাষার ক্ষেত্রে এটিই Rub রুবি বা পাইথনের একটি নতুন সংস্করণে যাওয়া একই রকম similar তবে জাভাস্ক্রিপ্টের ক্ষেত্রে এটি তেমন নয়, যেখানে আপনি যুক্তিযুক্তভাবেই আশা করতে পারেন যে আজ বড় ব্রাউজারগুলিতে সূক্ষ্মভাবে চালিত কোডটি মেজর জুড়ে সূক্ষ্মভাবে চলবে code যতক্ষণ না আমরা জানি ওয়েব এটির উপস্থিত রয়েছে ততক্ষণ ব্রাউজারগুলি।
  4. এটি তেমন সুপরিচিত নয়। জাভাস্ক্রিপ্ট একটি লিঙ্গুয়া ফ্র্যাঙ্কা । কফিস্ক্রিপ্ট অল্প সময়ের মধ্যে খুব জনপ্রিয় হয়ে উঠেছে, তবে এটি জাভাস্ক্রিপ্টের মতো বিশাল জনগোষ্ঠীর সাথে উপভোগ করার সম্ভাবনা কম।

স্পষ্টতই আমি মনে করি আমার পক্ষে ব্যক্তিগতভাবে দু'পক্ষের চেয়ে বেশি পরিমাণে ছাড়িয়ে যায়, তবে এটি প্রতিটি ব্যক্তি, দল বা প্রকল্পের ক্ষেত্রে হবে না। (এমনকি জেরেমি আশকানাস জাভাস্ক্রিপ্ট প্রচুর লেখেন)) কফিস্ক্রিপ্টটি জাভাস্ক্রিপ্টের সূক্ষ্ম পরিপূরক হিসাবে দেখা হয়, কোনও প্রতিস্থাপন নয়।


2
হু হো হো, =>ডকুমেন্টেশনে আমি কীভাবে পৃথিবীতে মিস করেছি ? এটা ভয়ঙ্কর । (অন্যান্য বিষয়গুলিও ভাল ছিল - কনসগুলির একটি সৎ তালিকা সহ খুব ভাল নিরপেক্ষ জবাব। :)
মিশেল টিলে

আপনার বিস্তারিত উত্তরের জন্য ধন্যবাদ। যদিও আমি এটি গ্রহণ করতে কিছুটা অপেক্ষা করব, তবে বিভিন্ন ওওপি পন্থাগুলি বিবেচনা করে ভাল / বিবেচনা করা আকর্ষণীয় হবে।
ফিলিপ

2
আমি বলব যে কফিস্ক্রিপ্টের ক্লাস মডেলটি জাভাস্ক্রিপ্টের প্রোটোটাইপ মডেলের চেয়ে আগতদের কাছে আরও অ্যাক্সেসযোগ্য এবং ভাল অভ্যাসগুলিকে সমর্থন করে (বিশেষত, আপনার প্রোটোটাইপগুলি Foo.prototype.bar = ...সমস্ত জায়গায় লাইন ছড়িয়ে দেওয়ার পরিবর্তে এক জায়গায় সংজ্ঞায়িত করা, যা পাগলামি!)! কোডটি পরিষ্কারভাবে সাজানোর এক দুর্দান্ত উপায়। অন্যদিকে, এটি কার্যকরী পদ্ধতিতে আরও মার্জিত হওয়ার পরেও লোকেরা OOP ব্যবহার করতে পারে।
ট্রেভর বার্নহ্যাম

কিছু ইন্ডেন্টেশন যুক্তি প্রত্যাশার মতো যথেষ্ট আচরণ করে না, এটির কাজটি সম্পূর্ণ অদ্ভুত বলে মনে করতে আপনাকে অন্তর্নিহিত জেএসের দিকে তাকাতে হবে .. এটি রোলসেট টিবিএইচ-র অংশ হতে পারে, তবে এটি অন্যান্য ইন্ডেন্ট সংবেদনশীল ভাষাগুলির মতো সর্বদা স্পষ্ট নয় as পাই, এবং আমি এটি পেয়েছি যে এটি প্রতিরোধ করার উদ্দেশ্যে বোঝানো হয়েছে তার চেয়ে আরও সূক্ষ্ম বাগ তৈরি করতে পারে। আমি এখনও কফিস্ক্রিপ্টটি ব্যবহার করি
sa93

1
পয়েন্ট 1 এবং 2 এর বিশদ প্রয়োজন। আমি মনে করি অ্যান্ড্রু এর উত্তর একটি মিশ্র ব্যাগ হিসাবে # 3 এর একটি ভাল উদাহরণ সরবরাহ করে। আমি বুলেটগুলির সাথে একমত নই: ভুলে যাওয়া ভারি নির্বোধ এবং আপনার সাথে প্রথম স্থানটির সাথে সংঘর্ষের জন্য প্রচুর বিশ্বব্যাপী ভার্সন থাকা উচিত নয়, 'ফাংশন' শক্ত নয় - প্রাক-সংজ্ঞায়িত নাম পদ্ধতিগুলি এত কম, 'যদি (! X) ) 'সংক্ষিপ্ত এবং মিষ্টি এবং' যতক্ষণ না 'এটিকে আরও ভার্বোস করে তোলে (আপনার নিজের পূর্বের বুলেট এবং পয়েন্ট # 3 দেখুন) এবং মানব ভাষা-সাদৃশ্য আসলে কোনও ডিজাইনের লক্ষ্য নয় যা programmingতিহাসিকভাবে প্রোগ্রামিং ভাষায় অনেক সাফল্যের সাথে মিলিত হয়েছে। আমাদের মানব ও যন্ত্রের সংস্পর্শে থাকতে হবে।
এরিক রেপেন

30

আমাদের কিছুটা বড় জাভাস্ক্রিপ্ট কোডবেস রয়েছে এবং প্রায় এক মাস আগে আমরা কফিস্ক্রিপ্টকে একবার চেষ্টা করে দেখতে চেয়েছিলাম। আমাদের একজন বিকাশকারী জেএস থেকে সিএসে আমাদের একটি মডিউল মাইগ্রেট করে শুরু করেছেন http://js2coffee.org/ । এই সরঞ্জামটি বরং কার্যকর ছিল এবং জাভাস্ক্রিপ্টের 1000-কিছু লাইন পোর্ট করতে প্রায় দুই বা তিন ঘন্টা সময় লেগেছে। এই মুহূর্তে আমরা কিছু পর্যবেক্ষণ লক্ষ্য করেছি:

  1. ফলস্বরূপ কফিস্ক্রিপ্ট কোডটি বেশ পঠনযোগ্য ছিল।

  2. আমরা এটি আবার জাভাস্ক্রিপ্টে সংকলন করেছি এবং নেভিগেট করা এবং ডিবাগ করা বেশ সহজ ছিল। যখন আমরা সেই মডিউলটি পোর্টিং করছিলাম তখন আমাদের দলের একজন অন্য বিকাশকারী এতে একটি বাগ খুঁজে পেল। এই দুটি বিকাশকারী আমাদের পুরানো জাভাস্ক্রিপ্ট কোড এবং সিএস সংকলক থেকে বেরিয়ে আসা নতুন জাভাস্ক্রিপ্ট কোডে সেই বাগটি ঠিক করেছে fixed তারা স্বাধীনভাবে কাজ করেছিল এবং এটি তাদের প্রায় একই পরিমাণে (15-20 মিনিট) নিয়েছিল took

  3. যেহেতু এটি একটি বন্দর ছিল ফলস্বরূপ কোডগুলি উপযুক্ত বা আকাঙ্ক্ষিত কফি-নির্দিষ্ট বৈশিষ্ট্যগুলি ব্যবহার করছিল না। আমরা যদি স্ক্র্যাচ থেকে কফিস্ক্রিপ্টে লিখি তবে কোডটি আরও মূর্খ হবে। এর কারণে পরে আমরা স্থির করেছিলাম যে আমরা বিদ্যমান কোডটি পোর্ট করব না।

  4. সংক্ষিপ্ত ফাংশন এবং ছোট অবজেক্টের সাধারণ পাঠযোগ্যতা কিছুটা প্রসারিততে বৃদ্ধি পায়। তবে, দীর্ঘতর পদ্ধতির জন্য যা মোটেও ছিল না। সর্বাধিক ব্লাট সঞ্চয়গুলি এসেছে ->এবং স্পষ্টতই এসেছে returnতবে আমাদের কোডটি উল্লেখযোগ্যভাবে ছোট বা সরল হয়নি। সিনট্যাক্সের কিছু অংশ বেশ বিভ্রান্তিকর বলে মনে হয়েছিল, বিশেষত বস্তুর আক্ষরিক। সিএস সদস্য সংজ্ঞাগুলির চারপাশে কোঁকড়া ধনুর্বন্ধনী বাদ দেয় এবং "সবকিছু-ই- এক্স -এক্সপ্রেশন" এর সাথে মিলিত হয় এবং অন্তর্ভুক্ত returnযা কোডের কিছু বিটগুলি পড়তে বেশ শক্ত করে তোলে।

    জাভাস্ক্রিপ্ট এখানে:

    var rabbitGenerator = {
        makeRabbit: function(rabbitName, growCarrots) {
            if (growCarrots) {
                carrots.growMore(10);
            } else {
                carrots.ensureSupply();
            }
            return {
                name: rabbitName, 
                height: 0,
                actions: {
                    jump: function (height) {
                        this.height += height;
                    },
                    eatCarrot: function () {
                        // etc
                    }
                }
            };
        },
        // more members
    }
    

    এবং এখানে সম্পর্কিত কফিস্প্রিপ্ট কোডটি দেখতে কেমন হবে তা এখানে:

    rabbitGenerator = 
      makeRabbit: (rabbitName, growCarrots) ->
        if growCarrots
          carrots.growMore 10
        else
          carrots.ensureSupply()
        name: rabbitName // (*)
        height: 0
        actions: 
          jump: (height) ->
            @height += height
    
          eatCarrot: ->
    

    যেহেতু এখন এটি নির্ধারণ করা বেশ কঠিন যে রিটার্নের বিবৃতিটি (*)লাইনে শুরু হয়েছিল । আমাদের প্রকল্পে আমরা বস্তুর আক্ষরিক উপর ভারী নির্ভর করি: আমরা এগুলিকে ফাংশন প্যারামিটার হিসাবে পাস করি এবং অন্যান্য ফাংশন থেকে তাদের ফিরিয়ে আনি। বিভিন্ন ক্ষেত্রে এই জিনিসগুলি বেশ জটিল থাকে: বিভিন্ন ধরণের সদস্য এবং বিভিন্ন স্তরের বাসা বাঁধে। আমাদের ক্ষেত্রে সামগ্রিক অনুভূতিটি ছিল যে কফিস্ক্রিপ্ট কোডটি সরল জাভাস্ক্রিপ্ট কোডের চেয়ে পড়ার পক্ষে খুব কঠিন।

  5. যদিও কফিস্ক্রিপ্টটি ডিবাগ করা আমাদের প্রত্যাশার চেয়ে সহজ হতে পারে যা সম্পাদনার অভিজ্ঞতাটি খানিকটা হ্রাস পেয়েছে। আমরা এই ভাষার জন্য কোনও ভাল সম্পাদক / আইডিই খুঁজে পাইনি। আমরা আমাদের প্রকল্পের জন্য ক্লায়েন্ট-সাইড কোডের জন্য সম্পাদক / আইডিইতে মানক করি নি এবং বাস্তবে আমরা সবাই আলাদা আলাদা সরঞ্জাম ব্যবহার করি। প্রকৃতপক্ষে একটি দলের প্রত্যেকেই একমত যে তারা কফিস্ক্রিপ্টে স্যুইচ করলে তারা তাদের সরঞ্জাম থেকে একটি বরং খারাপ সমর্থন পাবে। আইডিই এবং সম্পাদক প্লাগইনগুলি খুব প্রাথমিক আকারে রয়েছে এবং কিছু ক্ষেত্রে তারা আমাদের সঠিক সিনট্যাক্স হাইলাইটিং বা ইনডেন্টেশন সমর্থনও দিতে পারে না। কোড স্নিপেটস বা রিফ্যাক্টরিং সম্পর্কে কথা বলছেন না। আমরা ওয়েবস্টোরম, অ্যাকলিপস, নেটবিয়ানস, ভিজ্যুয়ালস্টুডিও, নোটপ্যাড ++ এবং সাবলাইম টেক্সট 2 ব্যবহার করি।

  6. সরঞ্জামগুলির কথা বলতে আমার উল্লেখ করা উচিত যে কফস্প্রিপ্ট সংকলক নিজেই নোড জেএস প্যাকেজ হিসাবে আসে। আমরা প্রাথমিকভাবে একটি জাভা / .NET শপ তাই প্রত্যেকের উইন্ডোজ বাক্সে বিকাশ হয়। সম্প্রতি অবধি নোডে উইন্ডোজ সমর্থন প্রায় অস্তিত্ব ছিল। আমরা উইন্ডোতে কফিস্ক্রিপ্ট সংকলক চালু করতে পারি না তাই আপাতত আমরা ফ্ল্যাগ সংকলক <script type="text/coffeescript">ভিত্তিতে ট্যাগ এবং ব্রাউজার-ভিত্তিতে আটকে থাকার সিদ্ধান্ত নিয়েছি ।

    সংকলকটি বেশ দ্রুত এবং প্রারম্ভকালীন সময় খুব বেশি বাড়ায় না। ক্ষতিটি হ'ল ফলস্বরূপ জাভাস্ক্রিপ্টটি evalএড হয়ে যায় এবং ব্রাউজারগুলির বিকাশকারী সরঞ্জামগুলিতে (বিশেষত আইই 8 তে) এতে ব্রেকপয়েন্টগুলি রাখা কিছুটা কঠিন। আমরা যদি ডিবাগিংয়ের সাথে কঠোর সময় পাই তবে আমি উপরে তালিকাভুক্ত একই মাইগ্রেশন সরঞ্জামটির সাথে কফিস্ক্রিপ্ট কোডটি প্রাক-সংকলন করি তবে এটি এখনও খুব সুবিধাজনক নয়।

  7. কফিস্ক্রিপ্টের অন্যান্য প্রতিশ্রুতিগুলির মতো স্বয়ংক্রিয়ভাবে varসন্নিবেশ বা thisফ্যাট অ্যারো অপারেটর সহ আধা স্বচ্ছ পরিচালনার ( =>) আমরা আশা করি ততটা লাভ দেয় নি। আমরা ইতিমধ্যে জেএসলিন্টকে আমাদের বিল্ড প্রক্রিয়াটির অংশ হিসাবে ব্যবহার করি এবং আমরা ES3 x ES5-Strictভাষার সাবসেটে কোড লিখি । যাইহোক, কফি একই ধরণের "ক্লিন" কোড উত্পন্ন করার বিষয়টি একটি ভাল জিনিস । আমি আশা করি প্রতিটি সার্ভার-সাইড ফ্রেমওয়ার্ক বৈধ HTML5 এবং CSS3 মার্কআপও উত্পন্ন করেছে!

    এটি বলেছিল যে আমি বলব না যে কফিস্ক্রিপ্ট varআমার জন্য কীওয়ার্ড রেখে অনেক সময় সাশ্রয় করে । অনুপস্থিত varগুলি সহজেই জেএসলিন্টের দ্বারা ধরা পড়ে এবং সহজেই স্থিরযোগ্য। তদুপরি, আপনি কিছু সময়ের জন্য এটি দ্বারা সংশোধন হয়ে গেলে আপনি যে কোনও উপায়ে স্বয়ংক্রিয়ভাবে ভাল জাভাস্ক্রিপ্ট লেখা শুরু করেন । সুতরাং আমি বলব না যে কফি আসলে এই ক্ষেত্রে যে সহায়ক।

আমরা প্রায় এক সপ্তাহ ধরে কফিস্ক্রিপ্ট মূল্যায়ন করেছি। সমস্ত দলের সদস্যরা এতে কোড লিখছিলেন এবং আমরা আমাদের অভিজ্ঞতা একে অপরের সাথে ভাগ করে নিই। আমরা এটি সহ কিছু নতুন কোড লিখেছিলাম এবং যখন আমরা ফিট দেখতে পাই তখন কিছু বিদ্যমান কোড পোর্ট করেছিলাম। ভাষা সম্পর্কে আমাদের অনুভূতি মিশ্রিত হয়েছিল।

সাধারণভাবে আমি বলব যে এটি আমাদের উন্নয়নের গতি বাড়েনি তবে এটি আমাদেরও কমিয়ে দেয়নি। কম টাইপিং এবং কম ত্রুটির পৃষ্ঠের কারণে কিছু গতি লাভ অন্যান্য অঞ্চলে বেশিরভাগ সরঞ্জাম সমর্থনের ফলে অফসেট হয়েছিল। এক সপ্তাহ পরে আমরা সিদ্ধান্ত নিয়েছি যে আমরা কফিস্ক্রিপ্ট ব্যবহারের আদেশ দেব না তবে আমরা এটি নিষিদ্ধ করব নাএকটি নিখরচায় পছন্দ দেওয়া হয়েছে, বাস্তবে কেউ এটি ব্যবহার করে না, কমপক্ষে আপাতত। সময়ে সময়ে আমি এটিতে কিছু নতুন বৈশিষ্ট্য প্রোটোটাইপ করার কথা ভাবি এবং তারপরে প্রকল্পটির বাকী অংশগুলির সাথে একীকরণের আগে কোডটি জাভাস্ক্রিপ্টে রূপান্তরিত করি তবে দ্রুত চেষ্টা করার চেষ্টা করি নি।


10

পেশাদাররা

দেখতে ট্রেভর মধ্যে Burnham এর উত্তর

এছাড়াও, আপনি নিজেকে হিপ লোক হিসাবে ভাবতে পারেন, যিনি জাভাস্ক্রিপ্টের নোংরাতার সাথে জঞ্জাল না দিয়ে ট্রেন্ডি স্টাফ করছেন doing

কনস

কফিস্ক্রিপ্ট সিনট্যাকটিক চিনি এবং গোলাপী চশমা ছাড়া আর কিছুই নয়।

সহজ স্টাফের জন্য - কফি স্ক্রিপ্ট অপ্রয়োজনীয়, কারণ কোনও জিনিসেই সহজ স্টাফ করা সহজ। এবং jQuery সম্ভবত কফিস্ক্রিপ্ট থেকে এমনকি সহজ।

শক্ত স্টাফের জন্য - আপনার মাধ্যমটি অবশ্যই বুঝতে হবে । এবং আপনার মাধ্যমটি এইচটিএমএল, ডিওএম এবং সিএসএস, জাভাস্ক্রিপ্ট কেবল তাদের আন্তঃসংযোগ করার জন্য একটি সরঞ্জাম, তবুও - সমস্ত এপিআইগুলি জাভাস্ক্রিপ্টের জন্য বিশেষভাবে লেখা হয়েছে। অন্য ভাষাগুলি ব্যবহার করা, যা তখন "আসল" একটিতে সংকলিত হবে - এটি বেশ ঝুঁকিপূর্ণ, এটি জাভা (জিডাব্লুটিটি), ডার্ট বা কফি স্ক্রিপ্ট হোক।

অ্যান্টি-প্যাটার্নস বা ভাষার নিয়মের ব্যানাল অজ্ঞতা, দু'টি ভাল বই পড়ে স্থির করা যায়। এবং আমি নিশ্চিত যে কফিস্ক্রিপ্টের নিজস্ব অ্যান্টি-প্যাটার্ন রয়েছে।

কফিস্ক্রিপ্টের জন্য আইডিই সমর্থন জেএসের চেয়ে আরও খারাপ।


আরো দেখুন -1- , -2- , -3- থেকে ryanflorence.com/2011/case-against-coffeescript
Pacerier

জাভাস্ক্রিপ্ট বৃহত্তর স্কেল, উচ্চ গতিশীল ওয়েব অ্যাপ্লিকেশনগুলিতে কেবল "" তাদের আন্তঃসংযোগের সরঞ্জাম "এর চেয়ে অনেক বেশি। প্রতিক্রিয়া বা কৌণিক, এমনকি jQuery এর মতো লাইব্রেরিতে জেএসের পরিমাণ পয়েন্টে একটি কেস।
অ্যান্ডি

6

আমার মতে সবচেয়ে বড় সমর্থক হ'ল:

সোজা কফিসক্রিপ্ট আপনার লেখা উচিত জাভাস্ক্রিপ্ট মধ্যে সংকলন করে , কিন্তু না, কারণ এটি সোজা ছিল না।

জাভাস্ক্রিপ্টের কিছু দুষ্টু কোণ রয়েছে যা কেবল সতর্কতার সাথে এড়ানো হয়েছে - উদাহরণগুলি আমার মাথার উপরের অংশে রয়েছে:

  • প্রোটোটাইপ সঠিকভাবে সেট করা
  • == এর পরিবর্তে === ব্যবহার করছেন
  • নাল জন্য চেক করা
  • ভেরিয়েবলের সাথে সমস্ত ভেরিয়েবল ঘোষণা করে
  • একটি স্ব-কার্যকরকারী বেনামি কার্যক্রমে সমস্ত কিছু মোড়ানো।

আপনি যদি কফিসক্রিপ্টটি লিখেন তবে সেগুলি আপনার জন্য স্বয়ংক্রিয়ভাবে পরিচালিত হবে

কনসগুলি হ'ল, আইএমও, বেশিরভাগ নাবালিক:

  • ডিবাগিং একটি ব্যথা হয়
  • কফিস্ক্রিপ্ট প্রোগ্রামার কম রয়েছে
  • আপনাকে জাভাস্ক্রিপ্ট থেকে কফিফ্রিপ্টে ডকুমেন্টেশন অনুবাদ করতে হবে।

3

অনুকূল

  1. কফিস্ক্রিপ্ট আমাকে জাভাস্ক্রিপ্ট সম্পর্কে আরও জানতে সহায়তা করেছে
  2. জটিল নেস্টেড কলব্যাকগুলির জন্যও পড়া সহজ, সহজ
  3. জাভাস্ক্রিপ্টের কিছু সমস্যার মুখোমুখি সুরক্ষা সরবরাহ করে যা ভাষার সমস্যাগুলি ট্র্যাক করতে পারে

অ্যান্ড্রু উপরের কাজের উদাহরণ আমি আলোকিত হতে পারে। আমি বিশ্বাস করি যে তাদের বিদ্যমান অবজেক্ট আক্ষরিক রিটার্নের পাঠ্যতা কেবল ম্যানুয়ালি রিটার্নটি সনাক্ত করে বাড়ানো হবে

প্রত্যাবর্তন

// বস্তু এখানে আক্ষরিক

আইডিই সরঞ্জামগুলি উন্নত করা হয়েছে, টেক্সটমেট এবং ক্লাউড 9 কফিস্ক্রিপ্ট সমর্থন করে। স্বীকার করা আছে উইন্ডোজ সমর্থন পিছিয়ে আছে (যদিও সাধারণভাবে ওয়েব বিকাশের জন্য এটি সত্য নয়?)

কনস

ব্রাউজার দ্বারা ব্যাখ্যা করা কফিস্ক্রিপ্ট ডিবাগ করা চ্যালেঞ্জ হতে পারে।

এটি জাভাস্ক্রিপ্টের শীর্ষে একটি অতিরিক্ত স্তর যা বিকাশকারীদের কিছু বোঝার এবং বিবেচনার প্রয়োজন।


0

অনুকূল

  1. তারা প্রকৃতপক্ষে সিন্থেটিকভাবে সাধারণ কেসগুলিকে অপ্টিমাইজ করেছে, আসলে, কফিস্ক্রিপ্ট একটি হল "সাধারণভাবে" ব্যবহৃত সবচেয়ে সংক্ষিপ্ত ভাষা না হলে http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked- বাই-expressiveness /
  2. জাভাস্ক্রিপ্টের খারাপ অংশগুলি লুকায় (অটো-জোর করে ==, অন্তর্নিহিত গ্লোবালগুলি, আরও traditionalতিহ্যবাহী শ্রেণিবদ্ধ ব্যবস্থা সাধারণ জিনিসগুলিকে সহজ করে তোলে)
  3. পাইথন / রুবি প্রোগ্রামারদের জন্য শিখতে খুব সহজ
  4. মাল্টি-লাইন বেনামে ফাংশন + সাদা স্থান সিনট্যাক্স

কনস

  1. অপসারণের Var মানে কি একটি বস্তু ব্যবহার না করেই একটি ভেতরের সুযোগ মধ্যে একটি বাইরের-স্কোপ পরিবর্তনশীল পরিবর্তন করতে পারেন না, অথবা `Var fall_back_to_js;` হ্যাক [কেন অন্য নিয়োগ বিবৃতি না ': =' যা শুধুমাত্র তাই obj.naem একটি মান reassigns: = 5 টি টাইপগুলি ডিবাগ করা সহজ]
  2. আপনি জাভাস্ক্রিপ্টটি ডিবাগ করতে না চাইলে প্রতিটি সরঞ্জামকে এটি সম্পর্কে জানতে হবে: CoffeeScript
  3. কোনও alচ্ছিক স্ট্যাটিক টাইপিং নেই (পরবর্তী একমাস্ক্রিপ্ট স্ট্যান্ডার্ডের জন্য অপেক্ষা করতে হবে)
  4. মডিউল সিস্টেমের জন্য এখনও তৃতীয় পক্ষের গ্রন্থাগারগুলির প্রয়োজন
  5. সিনট্যাক্স ট্র্যাপগুলি সতর্কতা অবলম্বন করতে হবে: নিখুঁত রিটার্নস, অ্যাবগো অর্থ একটি (বি (জি (ও))) , এফপি, বি: 2, সি: 8 অর্থ এফ (পি, {বি: 2, সি: 8}) এর পরিবর্তে (পি, {বি: ২}, {সি: ৮})
  6. ভাঙ্গা জাভাস্ক্রিপ্ট নম্বর / টাইপ সিস্টেম পরিবর্তন করে না
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.