Перейти к содержимому

Как определить язык программирования по коду

  • автор:

Как узнать язык программирования на котором написано приложение?

Я понимаю что практически все приложения написаны на java. Но даже это не мешает написать приложение на html 5, вот по этому поводу стало интересно, можно как то узнать на каком конкретно языке программирования написано то или иное приложение?

  • Вопрос задан более трёх лет назад
  • 11278 просмотров

5 комментариев

Средний 5 комментариев

Maksclub

ну раз можно и на html и на java, то какая разница, на чем написано? Пишите на том или другом
Сергей Горностаев @sergey-gornostaev

1426706362_849688123.jpg

Chesterfield25 @Chesterfield25 Автор вопроса

Максим Федоров, разница в том что если зайти к примеру на googl play и скачать либо какое приложение узнать на каком языке написано приложение нельзя, вот я и спрашиваю можно как то это узнать?

Человек и в сарказм не может, и основ не знает. Как такое возможно?)
Chesterfield25 @Chesterfield25 Автор вопроса

wainer, в чем я основ не понимаю? В том что на мой вопрос посыпалось куча бреда. Не могу понять таких людей, которые пишут этот бред. Или мой вопрос кому то не понятен?

Решения вопроса 0
Ответы на вопрос 3
MelineGogjyan @MelineGogjyan

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

Ответ написан 11 мар. 2023
Комментировать
Нравится 1 Комментировать
Или я ничего не понял, или какой-то бред вы спросили.
Ответ написан более трёх лет назад

GriNAME

Человек интересуется, как определить на чем писали андроид приложение. На джаве (котлин) или с помощью реактивных решений типа Vue, React и тд

Gregory Bass, а html тут в тему?

GriNAME

wainer, чисто HTML нет не в тему, а html5 это по сути возможность работать на привычном JS в разметке. Под приложениях на HTML на телефон можно подразумевать реактивные веб фреймворки

streloc84

В принципе если есть опыт, то код и так узнаваем по синтаксису. Ну это если популярные языки.
Вообще есть утилита
https://ru.m.wikipedia.org/wiki/PEiD
которая определяет компилятор(и соответственно язык) файла.
P.S

Я понимаю что практически все приложения написаны на java. Но даже это не мешает написать приложение на html 5

— ты сам-то понял чего написал?
Ответ написан более трёх лет назад
Chesterfield25 @Chesterfield25 Автор вопроса
А ты понял что ты написал? Если эта утилита для exe dll и sys при чем тут apk?

streloc84

Chesterfield25, apk это архив, примерно как zip или rar. Внутри лежат исполняемые файлы, ресурсы и прочее.

Язык программирования

Язык программирования — это формальный язык, используемый для формулирования структур данных и алгоритмов, то есть вычислительных правил которые могут быть выполнены компьютером. Они обычно состоят из пошаговых инструкций, которые составлены из разрешенных (текстовых) шаблонов, называемых синтаксисом. [1]

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

  • 1 Характеристики
  • 2 История
  • 3 Классификация языков программирования
    • 3.1 Историческая классификация
      • 3.1.1 Классификация по парадигмам
      • 3.1.2 Классификация по назначению
      • 3.2.1 Первое поколение
      • 3.2.2 Второе поколение
      • 3.2.3 Третье поколение
      • 3.2.4 Четвертое поколение
      • 5.1 Переменные и векторы
      • 5.2 Условные выражения
      • 5.3 Циклы
      • 5.4 Функции
      • 5.5 Синтаксис

      Характеристики

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

      • Логическое развитие программы для решения конкретной задачи.
      • Написание логики программы с использованием определенного языка программирования (кодирование программы).
      • Компилирование или интерпретация программы после преобразования её в машинный язык.
      • Тестирование и отладка программы.
      • Написание документации.

      По сути язык программирования состоит из набора символов (называемого алфавитом), грамматических (лексических/морфологических и синтаксических) и семантических правил, которые вместе определяют допустимые языковые структуры и их значение. [2] Существуют ошибки, которые не позволяют рассматривать термины «язык программирования» и «компьютерный язык» как синонимы. Компьютерные языки включают в себя языки программирования и другие, такие как, например, HTML (язык разметки веб-страниц, который сам по себе не является языком программирования, а представляет собой набор инструкций, позволяющих структурировать содержимое документов).

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

      История

      Если вы хотите, чтобы компьютер понял ваши инструкции, вам необходимо использовать определенный язык. Он известен как машинный код и легко читается вычислительной машиной, но слишком сложен для людей. Фактически, он состоит только из длинных строк чисел 0 и 1.

      Пример кода COBOL

      Чтобы облегчить работу, первые операторы компьютеров решили создать переводчик для замены 0 и 1 словами или абстракцией слов и букв, происходящих из английского языка; это известно как язык ассемблера. Например, для сложения используется буква A английского слова add (добавлять) Системный язык ассемблера имеет ту же структуру, что и машинный язык, но буквы и слова легче запомнить или понять, чем цифры.

      Чтобы запомнить программные последовательности для обычных действий, их стали называть легко запоминающимися и ассоциируемыми именами: ADD (добавить), SUB (вычесть), MUL (умножить) и т. д. Эта последовательность позиций была названа «инструкциями», а этот набор инструкций был переименован языком ассемблера. Впоследствии появились различные языки программирования, которые получили свое название потому, что имеют синтаксическую структуру, аналогичную структуре языков, написанных людьми, также называемых языками высокого уровня.

      Джон Бэкус в 1953 году представил своему начальству предложение разработать более практичную альтернативу языку ассемблера [3] для программирования мэйнфрейма IBM 704. Историческая команда Fortran Джона Бэкуса состояла из программистов Ричарда Голдберга, Шелдона Ф. Беста, Харлана Херрика, Питера Шеридана, Роя Натта, Роберта Нельсона, Ирвинга Циллера, Лоис Хейбт и Дэвида Сэйра.

      Первое руководство по языку Fortran появилось в октябре 1956 года [4] , а первый компилятор Fortran был выпущен в апреле 1957 года. В результате клиенты не хотели использовать язык высокого уровня в случае, если их компилятор не мог создать код, производительность которого была сопоставима с производительностью кодов, созданных вручную на языке ассемблера.

      В 1960 году был создан COBOL, один из языков, используемых до сих пор в управленческой информатике. Когда сложность задач, выполняемых компьютерами, возросла, возникла необходимость в более эффективном методе их программирования. [5] В результате были созданы языки высокого уровня, такие как BASIC на микрокомпьютерах 1980-х годов. Для выполнения простой задачи, как сложение двух чисел, может потребоваться несколько инструкций на языке ассемблера. На языке высокого уровня достаточно одного оператора.

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

      Языки программирования исторически разделялись по разным критериям:

      Историческая классификация

      Из-за появления новых языков для более выразительного программирования, такие стили различались в нескольких поколениях, каждое из которых представляло языки разработки с похожими общими характеристиками. Что касается языков высокого и низкого уровня, то они имеют свои особенности.

      Языки программирования обычно подразделяют на две широкие категории, относящиеся к их уровню абстракции, то есть к тому, насколько конкретно или в целом они относятся к вычислительной архитектуре, присущей используемым системам. [6]

      Классификация по парадигмам

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

      Классификация по назначению

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

      Классификация по поколениям

      Компьютерное оборудование пережило четыре поколения, из которых первые три (компьютеры с клапанами, транзисторами и интегральными схемами) очень понятны; четвертый (крупномасштабные интегральные схемы) является более спорным. [7]

      С компьютерным программированием (программным обеспечением) произошло то же самое. Он выполняется на языках, которые обычно делятся на пять поколений, из которых первые три очевидны, но не все согласны с двумя другими. Эти поколения не совсем соответствовали по времени поколениям аппаратных средств, но примерно соответствовали, и они следующие:

      Первое поколение

      На первых компьютерах был реализован машинный код [8] (основанный на двоичной системе), который может быть представлен последовательностями 0 и 1. Однако, каждая модель компьютера имеет свою собственную внутреннюю структуру при программировании. Они были названы языками низкого уровня, потому что они прямо контролируют оборудование и связаны с физической структурой компьютеров. которые их поддерживают. Из-за того, что этот тип языка намного ближе к машинной логике, чем к человеческой, программировать на нем очень сложно. Этот язык используется для планирования критически важных задач операционных систем, приложений реального времени или драйверов устройств. Другое ограничение этих языков заключается в том, что для выполнения логических инструкций требуются определенные знания программирования.

      Второе поколение

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

      Третье поколение

      Языки высокого уровня заменили символические инструкции машинными кодами [9] , подобными человеческому языку или языку математики. Это сделано для того, чтобы обычный пользователь мог быстрее решить проблему обработки данных. Они используются для создания программного обеспечения в вычислительных областях, где достигается высокая производительность по сравнению с языками предыдущих поколений. Среди них, в частности, C, Fortran, Smalltalk, ADA, C++, C#, Cobol, Delphi, Java и Python. Большинство этих языков могут быть универсальными, то есть язык не ориентирован на одну специальность, а может использоваться для создания различных программ. Для многих самых популярных задач существуют библиотеки, упрощающие программирование, которые позволяют повторно использовать код.

      Четвертое поколение

      Это название был присвоено определенным инструментам, которые позволяют создавать простые приложения путем объединения готовых деталей. Сегодня считается, что эти инструменты, в общем-то, не являются языками. В частности, некоторые предлагают зарезервировать название четвертого поколения для объектно-ориентированного программирования. По структуре они напоминают английский язык. Другие функции: доступ к базе данных, графические возможности, автоматическая генерация кода и возможность визуального программирования (например, Visual Basic или SL). При этом его преимущества — это более высокая производительность и меньшая утомляемость у программистов, поскольку предоставляемые инструменты включают последовательности инструкций. Необходимость концентрации ниже, поскольку некоторые инструкции, которые даются инструментам, включают последовательности инструкций на другом уровне внутри инструмента. Когда нужно поддерживать уже существующие программы, это менее сложно, поскольку требует более низкого уровня концентрации. Однако его недостатки заключаются в том, что эти готовые инструменты обычно менее гибкие, чем прямые инструкции в языках низкого уровня. Также часто создается зависимость от одного или нескольких сторонних поставщиков, что приводит к потере автономии. Они часто содержат библиотеки других поставщиков, что влечет за собой установку дополнительных опций, которые считаются необязательными. При отсутствии договоров с поставщиками, это программы, которые работают исключительно на языке, на котором были созданы. Это означает, что они обычно не соответствуют международным стандартам ISO и ANSI, что сопряжено с риском в будущем, поскольку время их пребывания на рынке неизвестно.

      Парадигма программирования

      Парадигма программирования состоит из метода выполнения вычислений [10] , а также способа, которым задачи программы должны быть структурированы и организованы. Это технологическое предложение, принятое сообществом программистов и разработчиков, центральное ядро которого не вызывает сомнений в том, что оно касается только вычислений, решение одной или нескольких четко обозначенных проблем; решение этих проблем должно, следовательно, предполагать значительный прогресс по крайней мере в одном параметре, влияющем на разработку программного обеспечения. Это особый подход или философия к разработке решений. Парадигма отличается друг от друга концепциями и способом абстрагирования элементов, участвующих в проблеме. Другими словами вычислениями.

      Он связан с формализацией определенных языков на тот момент их определения. Это один из способов программирования. Задержка во времени с точки зрения принятия и использования ограничена, потому что новые парадигмы предлагают новые или лучшие решения, которые частично или полностью заменяют её. На данный момент наиболее широко используемая парадигма программирования — это «объектно-ориентированная» (объектно-ориентированная). Основной ядром этой парадигмы является объединение данных и обработки в сущность, которая называется «объект», связанную с другими «объектными» сущностями.

      Элементы

      Переменные и векторы

      Переменные — это заголовки, которые присваивают пространствам в памяти для хранения определенных данных. Это контейнеры данных, и поэтому они различаются в зависимости от типа данных, которые они способны хранить. [11] При использовании большинства языков программирования требуется указать конкретный тип переменной для сохранения определенных данных. Например, в Java, если мы хотим сохранить текстовую строку, нам нужно указать тип переменной String. Однако в таких языках, как PHP или JavaScript, эта спецификация переменных не нужна.

      Тип данных Краткое описание
      Char Эти переменные содержат один символ, то есть букву, знак или число.
      Int Они содержат целое число.
      Float Они содержат десятичное число.
      String Они содержат текстовые строки или, что то же самое, представляют собой вектор с несколькими переменными типа Char.
      Boolean Они могут содержать только ноль или единицу.

      Условные выражения

      Условные операторы — это структуры кода, которые указывают на то, что для выполнения определенной части программы должны выполняться определенные условия; например: два значения равны, одно значение существует, а другое значение больше другого. Эти условия обычно выполняются только один раз в ходе всей операции. Наиболее популярными и часто используемыми для программирования условиями являются:

      If Указывает условие для выполнения части программы. [12]

      Else if Всегда предшествует «If» и указывает условие для выполнения части программы, если она не соответствует условию предыдущего if.

      Else Всегда предшествует if, а иногда Else If. Указывает, что он должен быть выполнен, когда предварительные условия не выполняются.

      Циклы

      К циклам относятся условные выражения, но они постоянно выполняют код до тех пор, пока выполняется определенное условие. Самые частые из них — это:

      For — Код выполняется, пока переменная находится между двумя заданными параметрами.

      Нужно сказать что, несмотря на различные типы циклов, все они могут выполнять одни и те же функции. При выборе языка программирования, в первую очередь следует руководствоваться вкусом программиста.

      While Выполняет код до тех пор, пока выполняется запрошенное вами условие.

      Функции

      Функции были созданы, чтобы избежать необходимости постоянно повторять фрагменты кода. Эту функцию можно рассматривать как часть кода. Поэтому когда мы получаем доступ к этой функции, на самом деле мы приказываем программе выполнить определенный код, предопределенный ранее. Все языки программирования содержат определенные примитивные учебные элементы для описания данных и процессов или преобразований, применяемых к этим данным (например: сложение двух чисел либо выбор элемента из коллекции). Названия этих примитивов определены синтаксическими и семантическими правилами, которые описывают их структуру и значение соответственно.

      Синтаксис

      Видимая форма языка программирования известна как синтаксис. Почти все языки программирования являются текстовыми, то есть используют текстовые последовательности, включая слова и числа. Аналогично письменным естественным языкам. Существуют языки программирования, которые по своей природе более графичны и используют визуальные отношения между символами для указания программы.

      Типовой синтаксис языка программирования описывает возможные сочетания символов, образующих синтаксически правильную программу. Значение, придающееся комбинации символов (либо формально, либо как часть жесткого кода в справочнике по реализации).

      Реализация

      Реализация языка — это способ выполнения программы для определенной комбинации программного и аппаратного обеспечения. Есть два способа реализации языка: компиляция и интерпретация. [13]

      Компиляция — это процесс, при котором программа, написанная на одном языке программирования, переводится на другой язык программирования, генерируя эквивалентную программу, которую машина сможет интерпретировать. Программы-переводчики, которые способны выполнять эту операцию, называются компиляторами. Эти программы также могут генерировать множество строк машинного кода для каждого предложения исходной программы. Интерпретация — это присвоение значения четко сформированным формальным языком. Если язык можно определить чисто синтаксически, его четко сформированные формулы могут быть не более чем строками символов без какого-либо смысла. Интерпретация придает этим формулам смысл.

      Примечания

      1. ↑История языков(неопр.) . oselkschool.ru.
      2. ↑Грамматика языков программирования(неопр.) . www.psciences.net.
      3. ↑Персона. Джон Бэкус — создатель первого языка программирования высокого уровня(рус.) . Хабр.
      4. ↑Fortran: 65 лет с момента выхода первого справочного руководства(рус.) . www.linux.org.ru.
      5. Вероника Елкина.COBOL — язык программирования, на котором работают почти все банкоматы(рус.) . Rusbase.
      6. ↑6. Языки программирования и их классификация.(рус.) . StudFiles.
      7. IT&Life.Основные этапы истории развития компьютеров(рус.)(неопр.)?. ITandLife.ru (21 апреля 2021).
      8. ↑Алан Тьюринг, отец современного компьютера(неопр.) . itnan.ru.
      9. ↑Языки программирования высокого уровня: высокоуровневые языки(рус.)(неопр.)?. Уроки по программированию Programmera.ru (12 июля 2017).
      10. ↑Парадигмы программирования: что это, какие виды бывают, примеры использования(рус.) . Парадигмы программирования: что это, какие виды бывают, примеры использования.
      11. ↑Переменная в программировании. Что это такое?(рус.) . Skysmart.
      12. Marat Abdrakhmanov.C#. Урок 6. Условные операторы и циклы(рус.)(неопр.)? (24 ноября 2020).
      13. ↑Трансляция, компиляция и интерпретация | Контент-платформа Pandia.ru(неопр.) . pandia.ru.

      Данная статья имеет статус «готовой». Это не говорит о качестве статьи, однако в ней уже в достаточной степени раскрыта основная тема. Если вы хотите улучшить статью — правьте смело!

      • Знание.Вики:Cite web (не указан язык)
      • Технологии
      • Все статьи
      • Языки программирования

      GitHub открыла Linguist — библиотеку для определения языка программирования

      Разработчики популярного сервиса GitHub опубликовали исходный код одного из собственных инструментов — библиотеки Linguist (на Ruby), используемой для определения языка программирования, на котором написан публикуемый на хостинге файл.

      В первую очередь Linguist учитывает расширение файла — это позволяет определить язык программирования в большинстве случаев. Если не помогает, то проверяется наличие так называемого «shebang» (последовательность символов «#!», принятая для последующего указания интерпретатора, которому передается контент скрипта). Кроме того, изучается и непосредственно содержимое файлов, где по различным популярным ключевым фразам осуществляется окончательная попытка определить используемый язык программирования.

      Этим функции библиотеки Linguist не ограничиваются. В ней реализованы и некоторые другие возможности, которые нашли свое применение на GitHub:

      • подсветка синтаксиса, реализованная с помощью своей обертки Albino над Pygments;
      • определение типа MIME: большая часть работы осуществляется стандартной mime-types gem из Ruby, но авторы сделали несколько добавок и надстроек;
      • статистический модуль, с помощью которого строится Language Graph на GitHub (составляет список используемых в проекте языков программирования и их популярность) и общий рейтинг Top Languages.

      Исходный код библиотеки Linguist распространяется под Open Source-лицензией MIT и доступен, естественно, на самом GitHub.

      Узнаете ли вы язык программирования по коду для «Hello, World!» — тест по экзотическим языкам

      Редкие и необычные языки программирования — попробуйте опознать их по программе «Hello, World!».

      Обложка поста Узнаете ли вы язык программирования по коду для «Hello, World!» — тест по экзотическим языкам

      Языки программирования — это не только знакомые всем лидеры рейтингов TIOBE или PYPL. В дебрях разработки можно найти и забавных малышей вроде HQ9+, и настоящих монстров, таких как Malbolge или BIT. Проверьте, насколько хорошо вы разбираетесь в экзотических языках программирования, попытавшись узнать их по программе «Hello, World!».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *