ওয়েবপৃষ্ঠাগুলিতে জাভাস্ক্রিপ্টের স্ট্যাটিকালি টাইপ করা বিকল্পটি কি ব্যবহারিক হবে?


9

ডায়নামিক এবং স্ট্যাটিক টাইপিংয়ের পছন্দ মূলত স্বাদের বিষয়, এবং বিভিন্ন লোক বিভিন্ন পরিস্থিতিতে এগুলিকে কমবেশি উপযুক্ত বলে মনে করে।

আমার প্রশ্নটি হল, ক্লায়েন্ট-সাইড ওয়েব পৃষ্ঠা বৃদ্ধির জন্য জাভাস্ক্রিপ্টের কোনও স্ট্যাটিকালি-টাইপ বিকল্প পাওয়া কি প্রযুক্তিগতভাবে সম্ভব?


3
কেন নয়? `` ``
জোশ কে

2
আপনি কি এমন একটি অনুমানমূলক স্ট্যাটিক্যালি টাইপ করা ভাষা সম্পর্কে কথা বলছেন যা প্রতিটি ব্রাউজারকে প্রয়োগ করতে হবে, বা ইতিমধ্যে বিদ্যমান সম্ভাব্যতাগুলি রয়েছে?
ব্যবহারকারী 281377

2
আমি মনে করি আপনি জাভা অ্যাপলেট ব্যবহার করতে পারেন।
ডেভিড থর্নলি

@ ইম্মকিউ যা আপনি উল্লেখ করেছেন, হাইপোথিটিক্যাল
আর্মান্ড

@ জোশ আমি জানি না। @ ডেভিড এলওএল, তার জন্য ধন্যবাদ!
আরমান্ড

উত্তর:


22

এরকম কোনও প্রযুক্তিগত কারণ অবশ্যই নেই। ক্লায়েন্ট-সাইড কোড সম্পর্কে বিশেষ কিছুই নেই যা গতিশীল টাইপ করা ভাষা ব্যবহারের আদেশ দেয়।


1
ডার্টে statচ্ছিক স্ট্যাটিক টাইপিং রয়েছে তবে সাধারণ জাভাস্ক্রিপ্টের সাথে সংকলিত। www.dartlang.com
নিশান্ত জর্জ আগরওয়াল

16

যেহেতু এটি অত্যন্ত অসম্ভব যে কোনও অন্য ভাষা বিস্তৃত গ্রহণ করতে পারে তাই আপনার সেরা বাজি হ'ল জাভাস্ক্রিপ্টের একটি স্ট্যাটিক্যালি সংস্করণ তৈরি করা (যার অর্থ জাভা এর কাছাকাছি ভাষা) এবং এমন একটি প্রিপ্রসেসর যা এটিকে সাধারণ জাভাস্ক্রিপ্টে রূপান্তরিত করে।

উদাহরণস্বরূপ, আপনার স্ক্রিপ্টটি দেখতে এমন দেখাচ্ছে:

<script type="text/staticjavascript">
   String foobar(int foo, String bar) {
      String result="";
      for (int i=0; i<foo; i++) {
         result += bar;
      }
      return result;
   }
</script>

এবং প্রিপ্রোসেসর পরীক্ষা করে যে প্রতিটি ভেরিয়েবল, ফাংশন, অবজেক্ট ইত্যাদি টাইপ অনুযায়ী সঠিকভাবে ব্যবহৃত হয় এবং স্ক্রিপ্টটি এতে পরিবর্তন করে

<script type="text/javascript">
   function foobar(foo, bar) {
      var result="";
      for (var i=0; i<foo; i++) {
         result += bar;
      }
      return result;
   }
</script>

যা প্রতিটি ব্রাউজার পরিচালনা করতে পারে।


5
ব্যবহারিক পদ্ধতির জন্য +1
গ্যারি রোয়ে

সত্যই এই প্রশ্নটি বাস্তববাদ সম্পর্কিত নয় - এটি তত্ত্ব সম্পর্কিত। আপডেট হবে।
আরমান্ড

2
আমি টাইপ ইনফারেন্স ব্যবহার করার পরামর্শ দেব।
অলিভার ওয়েইলারের

সহায়ক পদ্ধতি: খুব ভাল পরামর্শ, তবে আমি এখনই আমার উদাহরণটি পরিবর্তন করি না, কারণ উদাহরণটি এত সহজ হওয়ায় টাইপ অনুক্রমটি স্থির সংস্করণটিকে ডায়নামিক সংস্করণের সাথে খুব অনুরূপ করে তুলবে।
ব্যবহারকারী 281377

4
আমি মনে করি না যে কোনও স্ট্যাটিক্যালি টাইপ করা জাভাস্ক্রিপ্ট জাভাটির খুব কাছাকাছি থাকবে সিনথেটিক্যালি অন্যটি ছাড়া। স্ট্যাটিক বনাম গতিশীল টাইপিংয়ের বাইরে জাভাস্ক্রিপ্ট এবং জাওয়ার অনেক পার্থক্য রয়েছে - ক্লাস-ভিত্তিক বনাম প্রোটোটাইপ-ভিত্তিক ওও এর জন্য একটি O যেহেতু আপনার নমুনা কোডটি ক্লাস-ভিত্তিক বলে মনে হচ্ছে, আমি যুক্তি দিয়েছি যে "স্ট্যাটিকজাভাস্ক্রিপ্ট" সেই ভাষার জন্য ভুল ধারণা রয়েছে এবং এটিকে "ক্লায়েন্ট-সাইড জাভা" জাতীয় কিছু বলা উচিত। যদিও জাভাস্ক্রিপ্ট সংকলনের জন্য +1 (গুগল ওয়েব টুলকিট জাভাস্ক্রিপ্টে জাভা সংকলন করে)।
sepp2k

8

আমার প্রশ্নটি হল, ক্লায়েন্ট-সাইড ওয়েব পৃষ্ঠা বৃদ্ধির জন্য জাভাস্ক্রিপ্টের কোনও স্ট্যাটিকালি-টাইপ বিকল্প পাওয়া কি প্রযুক্তিগতভাবে সম্ভব?

অবশ্যই। গুগল ওয়েব টুলকিট জাভাস্ক্রিপ্ট স্ট্যাটিক্যালি টাইপ প্রনয়ন জাভা ... শুধু মনে: সব সৌন্দর্য এবং জাভার নমনীয়তা, মেশিন-জেনারেট জাভাস্ক্রিপ্ট সব কর্মক্ষমতা সঙ্গে!

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


3
আপনি জিডব্লিউটি-র "সুবিধাগুলি" সম্পর্কে কৌতুক করছেন কিনা তা আমি সম্পূর্ণ বলতে পারি না। আপনি যদি হন, ব্র্যাভো জিডাব্লুটিটির সাথে কাজ করা আমার জীবনের অন্যতম উন্মাদজনক অভিজ্ঞতা ছিল।
নিকোল

@ রেনেসিস: জাভাস্ক্রিপ্ট এবং ব্রাউজারের সামঞ্জস্যের সাথে কাজ করা ইতিমধ্যে ক্ষিপ্ত হয়নি? তবে এর মধ্যে চটজলদি বৈশিষ্ট্য রয়েছে যেমন একক ছবিতে একাধিক চিত্র ডাউনলোড করা এবং তারপরে ক্লায়েন্টের উপর সেগুলি কাটা।
ম্যাকনিল

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

6

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


2
কেন সম্ভব নয় তা ব্যাখ্যা করার জন্য +1 , এটি সম্ভব হলে কেবল উত্তর দিচ্ছেন না।

4

এটি ইতিমধ্যে বিদ্যমান।

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

এটি মূল প্রশ্নের উত্তর দেয়, এবং এখন আমাদের কাছে এটি রয়েছে, আপনার গৌণ প্রশ্নটি "ফ্ল্যাশ কি বাস্তব?" উত্তরটি "হ্যাঁ", কয়েকটি "যদি" এস এবং "তবে" এস এর সাথে থাকে

  • ... যদি কোনও কারণে আপনার কোডটি গোপন করতে হয় তবে।
  • ... আপনি যদি খুব, খুব (অতীত জিকুয়ারি স্তর) উচ্চ স্তরের আন্তঃসংযোগিতা চান want
  • ... তবে এইচটিএমএল 5 ছাড়াই ক্রস ব্রাউজারের সামঞ্জস্যগুলি ইদানীং আরও ভাল হয়ে উঠছে।
  • ... তবে এইচটিএমএল 5 শীঘ্রই আসছে।
  • ... তবে স্ট্যাটিক টাইপিং / সংকলনের বড় অঙ্কনের মধ্যে একটি (ব্যাখ্যাটির বিপরীতে) এটি যুক্ত করা গতি যা এটি অপ্টিমাইজেশনের মাধ্যমে অনুমতি দেয় (এবং টাইপ সিস্টেম সত্ত্বেও ফ্ল্যাশটির খুব ভাল গতি হয় না)

AS3 পরিত্যক্ত ES4 এর উপর ভিত্তি করে।
gsnedders

3

তত্ত্বগতভাবে, আপনি যে পৃষ্ঠায় চান তাতে কোনও স্ক্রিপ্ট আটকে রাখতে পারেন। <script>ট্যাগটি হয়েছে typeসব পরে অ্যাট্রিবিউট।

এটি ব্যবহারের উপযোগী করার জন্য একমাত্র বাধা বিভিন্ন ব্রাউজারে প্রয়োগের ক্ষেত্রে পর্যাপ্ত বাজার অংশীদার হচ্ছে।


হ্যাঁ, এটি এই সময়ে অসম্ভব সম্ভাবনা।


তাহলে, স্ট্যাটিক টাইপিং নিয়ে কোনও সমস্যা নেই? আমি এই ধরার কার্যকারিতা সম্পর্কে খুব বেশি মাথা ঘামাই না।
আরমান্ড

1
@ অ্যালিসন: আপনি যে কোনও পাঠ্য বিষয়বস্তু স্ক্রিপ্ট ট্যাগে রাখতে পারেন (একটি ব্যতিক্রম ব্যতীত - এতে অক্ষরের অনুক্রম থাকতে পারে না </script>)। আপনি যদি সত্যিই চান তবে আপনি সেখানে ব্রেইনফ * সি কে কোড স্টিক করতে পারেন। তারপরে আপনাকে যা করতে হবে তা হ'ল আপনি যে ব্রাউজারটি ব্যবহার করতে চান তাতে আপনার নির্বাচিত ভাষার জন্য একজন দোভাষীকে বাস্তবায়ন করতে হবে।
আনন

@Anon। ধন্যবাদ, খুব আকর্ষণীয় যদি এটি সহজ হয় তবে এটি সম্ভবত কোথাও করা হয়েছে। আমার মনে আছে <script type="vbscript">একবার থেকে ...
আরমান্ড

অ্যালিসন: ভিএসক্রিপ্টটি কেবলমাত্র আইই ছিল এবং যখন আইইয়ের বাজারের অংশটি 90% ছিল তখন কিছু লোক এটি ব্যবহার করে। আজ, বিশ্বের কোথাও কোথাও আইইয়ের বাজার ভাগ প্রায় 50%, সম্ভবত এটি কম, এটি একটি প্রধান অগ্রগতি; এবং যতক্ষণ না কোনও ব্রাউজার এত বেশি বাজার ভাগ আবার পাবে, ততক্ষণ নতুন ক্লায়েন্ট-সাইড স্ক্রিপ্টিং ভাষার মতো কিছু হওয়ার আশা করবেন না।
ব্যবহারকারী 281377

@ অ্যালিসন: ইন্টারনেট এক্সপ্লোরার এখনও ভিবিএস স্ক্রিপ্টকে স্ক্রিপ্টিং ভাষা হিসাবে সমর্থন করে ... আমার জানা উচিত, আমাদের এখানে ইন্ট্রানেট সাইট রয়েছে যা এটি ব্যবহার করে (এবং তাই ইন্টারনেট এক্সপ্লোরার প্রয়োজন - urgh!)
ডিন হার্ডিং

2

এটি ব্যবহারিক হবে? না।

এটা কি সম্ভব? হ্যাঁ!

জাভাস্ক্রিপ্টের নিজস্ব স্ট্যাটিক্যালি-টাইপ বিকল্প বিকাশ করা সময় সাশ্রয়ী হবে be সবচেয়ে খারাপভাবে, আপনি আপনার ক্লায়েন্টের স্ক্রিপ্টিং ভাষা বাস্তবায়নের জন্য কোনও বিদ্যমান ব্রাউজারকে বোঝাতে সক্ষম হবেন না এবং আপনার নিজের লিখতে হবে।


বোঝাতে কি যত্ন?
back2dos

একটি ফলো-আপ অনুচ্ছেদ যুক্ত করেছে।
মারসি 21

আমি কেবল যুক্ত করব যে এটি বাস্তব না হওয়ার একমাত্র কারণ বর্তমান পরিস্থিতি। জাভাস্ক্রিপ্ট প্রকাশের ঠিক আগে আমরা যদি সেই জায়গায় ফিরে যাই তবে বিষয়গুলি অন্যরকম হত।
ইয়াকিভ

1

আপনার উত্তরটি এখানে খুঁজে পেতে পারেন: /programming/86426/why-require-javascript-rather-than-supporting-a-standard-browser-virtual-machine

দ্রষ্টব্য: আমার মতে সাম্প্রতিক উত্তরগুলি কম স্কোর থাকা সত্ত্বেও আরও অন্তর্দৃষ্টিযুক্ত।


1

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


1

এটি কি প্রযুক্তিগতভাবে সম্ভব হবে? যদি এটি জাভাতে প্রয়োগ করা হয় তবে আমি উল্লেখযোগ্য পারফরম্যান্স ক্ষতি ছাড়াই "খুব, খুব শক্ত, তবে সম্ভব" বলব।

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

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

আমি জানি এটি একটি পুরানো প্রশ্ন, কেবল ভেবেছিল আমার অভিজ্ঞতা কারও কাছে মূল্যবান হতে পারে।


0

ব্যবহারকারী এজেন্ট (ব্রাউজার) সমর্থন করে যে কোনও স্ক্রিপ্টিং ভাষায় ক্লায়েন্ট-সাইড স্ক্রিপ্টগুলি প্রযুক্তিগতভাবে লেখা সম্ভব। অনুশীলনে, একমাত্র বহুলাংশে সমর্থিত ভাষা হ'ল জাভাস্ক্রিপ্ট / ইসমাএ স্ক্রিপ্ট। ব্রাউজার নির্মাতাদের এই পর্যায়ে একটি নতুন ভাষা প্রয়োগ এবং সমর্থন করার জন্য দৃ Con় বিশ্বাস পোষণ করা সফল হওয়ার সম্ভাবনা কম; সুতরাং, আপনি যদি কোনও নতুন স্ট্যাটিক্যালি টাইপযুক্ত ক্লায়েন্ট-সাইড ভাষা ব্যবহার করতে চান তবে আপনাকে নতুন ভাষাটি জাভাস্ক্রিপ্টে অনুবাদ করতে হবে, বা জাভাস্ক্রিপ্টে এর জন্য একজন দোভাষীর প্রয়োগ করতে হবে।

বেশ কয়েকটি প্রকল্প রয়েছে যা ইতিমধ্যে এরকম কিছু করে; উদাহরণস্বরূপ, গুগল ওয়েব টুলকিট , যেমন অন্য উত্তরের একটিতে উল্লিখিত হয়েছে।


0

একটি নতুন ভাষা সমর্থন করার জন্য আসল বিশ্বে ব্যবহৃত সমস্ত ব্রাউজার পাওয়ার কোনও আশ্বাস আপনার দেওয়া নেই; ভাষাটি jscript তে সংকলন করতে হবে।

ওয়েবের সমস্ত উদাহরণ যেমন jscript এ রয়েছে, ভাষাটি বেশিরভাগই jscript এর মতো হওয়া উচিত।

আমি মনে করি জেএসক্রিপ্টের একটি "উপ সেট" রয়েছে এমন একটি সুযোগ রয়েছে যা একটি স্ট্যাটিক চেকার দ্বারা চেক করা হয় তবে এটি বৈধ jscriptও। উদাহরণ:

  • সমস্ত ভেরিয়েবলের একটি মন্তব্য থাকতে হবে যা সেখানে প্রথম ব্যবহারের আগে টাইপ করে।
  • ভেরিয়েবলের সমস্ত ব্যবহার অবশ্যই উপরের সাথে বৈধ হতে হবে।
  • ফাংশন / শ্রেণি যদি তারা একটি মন্তব্যে ঘোষণা না করা হয় তবে ব্যবহার করা যাবে না #
  • জেএস ফাইলের শীর্ষে থাকা একটি মন্তব্যে অবশ্যই নির্ভর করে যে সমস্ত জেএস ফাইল এটি নির্ভর করে।

0

Cচ্ছিক স্ট্যাটিক টাইপিংটি ECMAScript এর প্রকল্প সম্প্রীতির অংশ ছিল - এটি কখনই ক্লায়েন্ট-সাইড [ব্রাউজার-ভিত্তিক] জাভাস্ক্রিপ্টে ঘটবে কিনা তা আমার ধারণা অজানা। এই উইকিপিডিয়া লিঙ্কটি দেখুন: http://en.wikedia.org/wiki/ECMAScript# ভবিষ্যত_ উন্নয়ন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.