Рубрики
Без рубрики

Вам нужно знать скомпилированный / интерпретированный, статический / динамический и Сильная / слабая печатание

В этой статье я постараюсь демистифицировать термины статическими / динамическими печатающими, сильными / слабыми печатающими наборами и определенными … Помечено программированием, компьютером, Python, JavaScript.

В этой статье я попробую Demystify TESTS статические/динамические печатающие, прочные/слабые печатания и определите некоторые термины, как время выполнения, компиляции и т. Д.

Если вы предприняли несколько курсов программирования, вы могли бы наступить на следующие утверждения и несколько понят

  • ” Python сильно, динамически набран “
  • ” JavaScript слабо, динамически набран “

Прочитав эту статью, вы сможете четко понять приведенные выше заявления. Мы будем смотреть на фрагменты кода в Python, JavaScript и C ++. Если вы не знаете синтаксис или любой из языков, все в порядке, вы все равно сможете понять основные концепции.

Оглавление

  • Некоторые определения и указывает, чтобы помнить
  • Составленные VS интерпретируемые языки
  • Статическая набравка против динамического печатания
  • Слабая печатание против сильной печати
  • Классификация языков программирования
  • Заключение

Некоторые определения и указывает, чтобы помнить

  • Слово «набрав» в статическом набрании/динамическом набрании относится к DataType Отказ Это не относится к акту нажатия клавиш. Я был смущен об этом, и я уверен, что могут быть другие в той же лодке
  • Языки программирования классифицируются как статические/динамические типы и сильным/слабым типом на основе двух различных свойств, то есть статическая/динамическая набравка не связана с сильными/слабыми наборами.

Определения

  • Исходный код – Это код, написанный в Python, JavaScript, C ++ и т. Д. Также известен как Человек-читаемый код
  • Машинный код – Это код, который написан на машинном языке (обычно двоично) и может быть понят на машине.
  • Компилятор- Компьютерная программа, которая может преобразовать исходный код в машинный код
  • Компиляция – Преобразование кода из Python, JavaScript, C ++ к низкоуровневым машинным коде. В основном конвертируя человечественно-читаемый код в машинный код

Предполагая, что компиляция успешна, то есть исходный код – это синтаксис-ошибка бесплатно, мы переходим к выполнению времени.

  • Время выполнения – После компиляции программа работает, и код выполнен. Этот период времени известен как время выполнения.
  • Исполнение – На самом деле работает/выполняет код. Это происходит после того, как исходный код преобразован в машинный код и во время выполнения
  • Синтаксис ошибки- Ошибка в синтаксисе (грамматике) языка. Например: отсутствует с запятой в C ++, ненадлежащее углубление в Python, так далее
  • Ошибки времени выполнения – А Ошибка времени выполнения . Это ошибка, которая возникает во время выполнения программы, например,: разделение на 0, пытаясь получить доступ к неопределенной переменной, используя оператор на несовместимых данных
  • Типография – Преобразование значения из одного типа данных на другой, например: CHAR может быть преобразована в INT на основе его значения ASCII. Точно так же число 10 может быть преобразовано в строку «10». Тип литья может быть либо скрытый (Это делается на языке автоматически) или явный (Вы вручную измените тип)

Составленные VS интерпретируемые языки

Язык классифицируется как скомпилированные/интерпретированные на основе того, как исходный код преобразован в машинный код.

Я одолжу эту аналогию от FreeCodecamp Отказ

В основном считайте, что у вас есть рецепт, написанный на немецком языке и нуждается в помощи от вашего друга, чтобы перевести рецепт на английский язык и следовать за ним. Есть пара способов вы могли бы пойти об этом

  • Вы можете перевести каждый шаг один за другим, то есть первый ваш друг переводит шаг 1, и вы следите за этим. Затем вы переходите на второй шаг, ваш друг переводит его, и вы следите за этим. И так далее…..
  • Вы переводите весь рецепт сразу, а затем следуете за этим, я ваш друг переводит весь рецепт на английский. Теперь вы следуете за этим шагом за шагом.

Первый подход аналогичен «интерпретации», а второй подход аналогичен «составлению»

Интерпретируемые языки

Исходный код программы преобразуется в машинный код и выполняемая строка по линии. Если вы определите функцию, но никогда не вызывают ее, функция не выполняется и в результате любая ошибка времени выполнения в функции не приведет к ошибке.

Давайте рассмотрим пример в Python

Кодовый фрагмент

Хотя наша функция имеет разделение на 0 (Ошибка времени выполнения), программа выполняется/выполняется успешно. Так как мы никогда не называем функцию ФУНК, Функция никогда не выполняется и, следовательно, ошибка времени выполнения никогда не поднимается

Давайте рассмотрим аналогичный пример в JavaScript

Кодовый фрагмент

Как Python, JavaScript не вызывает никаких ошибок. Программа выполнена успешно, так как мы никогда не вызываем функцию.

Примечание. Если вы вызвали функцию в любом из вышеперечисленных кодовых фрагментов, это вызвало бы ошибку

Давайте рассмотрим еще один пример в Python

Кодовый фрагмент

На этот раз у нас есть разделение на 0 за пределами функции. Это вызывает Python поднять ошибку. Однако заметил, что операторы печати все еще выполняются, и их вывод показан в терминале. Это потому, что каждая строка выполняется один за другим. Поэтому, когда мы находимся в третьем операторе печати, Python даже не выполнил разделение на 0 и в результате ошибки не поднимается до этой точки до этой точки

Компилированные языки

Весь исходный код преобразуется в машинный код. После преобразования программа выполнена. Поэтому возникают любая ошибка времени выполнения в функции, независимо от того, вызывается ли функция или нет.

Давайте рассмотрим фрагмент кода C ++

Кодовый фрагмент

В функциональной функции мы назначаем значение 10 для переменной var не определение переменной (ошибка времени выполнения). Хотя мы не вызываем функцию, ошибка все еще поднимается. «Hello World» не отображается в терминале.

Давайте рассмотрим еще один фрагмент

Кодовый фрагмент

В отличие от Python или JavaScript, оператор «Cout» не выполняется. Во-первых, весь исходный код преобразуется в машинный код, а ошибка времени выполнения поднимается. В результате «Hello World» не отображается в терминале. Ошибка повышается, так как мы не определили переменную вар

Статическая печатание и динамические печатания

Статическая набравка

На статически наведенных языках переменная имеет фиксированный тип данных во время его жизненного цикла.

Проверка типа выполняется во время компиляции времени

Рассмотрим фрагмент кода C ++ ниже

Кодовый фрагмент

Первоначально мы объявляем переменную var1. как int и назначьте его целочисленное значение. Но позже мы повторно назначаем это строку. C ++ – статически напечатанный язык и не поддерживает это поведение.

Например: C, C ++, Java, Rust, Go, Scala

Динамическая набравка

На динамически набираемых языках тип данных переменной может быть изменен во время жизни цикл

Проверка типа выполняется во время выполнения

Давайте попробуем сделать то же самое, что мы сделали выше, но на динамически набранном языке, как Python.

Кодовый фрагмент

Первоначально переменная var1 – это целочисленная переменная. Однако Позже мы назначаем строковое значение и тип данных переменной изменения. Динамически напечатанный язык, такой как Python, позволяет нам изменять тип данных переменной.

Давайте сделаем что-то похожее в JavaScript, еще один динамически набранный язык.

Кодовый фрагмент

Примечание: если вы используете конститут Ключевое слово, вы не можете изменить тип данных переменной. Постоянные значения не могут быть повторно назначены, поэтому в некотором смысле их тип данных статичен. Однако Java Script является динамически наведенным языком, поскольку тип данных переменной может измениться во время его жизненного цикла

Например: Perl, Ruby, Python, PHP, JavaScript

Слабые печатать и сильные печатать

Слабая печатание

Слабо напечатанные языки поддерживают операции между различными типами данных. Эти языки поддерживают замечание неявного типа, и один из типов данных преобразуется в другую.

Давайте рассмотрим фрагмент кода в C ++

Кодовый фрагмент

Значение ASCII А это 97 Отказ Когда мы пытаемся сделать 10 + A C ++ неявно типичные по образцу A к этому значение ASCII (97) Отказ Поэтому выход 107.

Давайте сделаем что-то подобное в JavaScript.

Кодовый фрагмент

JavaScript преобразуйте номер 10 в строку “10” и объединить его на а.

Например: C/C ++, JavaScript, PHP, PERL

Сильная набравка

Сильно напечатанные языки не поддерживают операции между различными дататипами. Они могут/могут не поддерживать типости. Тем не менее, они не касаются неявных данных по типеке.

Давайте рассмотрим фрагмент кода в Python. Мы постараемся сделать то же самое, что мы сделали выше.

Кодовый фрагмент

Когда мы пытаемся добавить целое число и строку, мы получаем ошибку типа. Это делает Python сильно типа. Однако обратите внимание, что можно явно попечить целое число на строку и выполнить операцию.

Например: Python, C #, Java, Scala, Ruby

Классификация языков программирования

https://medium.com/android-news/magic-lies-here-statically-typed-vs-dynamically-typed-languages-d151c7f95e2b

Заключение

Я надеюсь, что смог объяснить условия и как язык определяется скомпилированным/интерпретированным, статическим/динамичным, слабым/сильным. Знание этих свойств о языке позволит вам знать, что ожидать, когда начать с этим языком. Пожалуйста, дайте мне знать, если вы найдете какие-либо ошибки или знаете какие-либо хорошие аналогии, чтобы объяснить разницу:)

Связь со мной на LinkedIn , Твиттер

Оригинал: “https://dev.to/rahulbanerjee99/you-need-to-know-compiled-interpreted-static-dynamic-and-strong-weak-typing-lg1”