Показать сообщение отдельно
Старый 23.06.2015, 17:31   #11
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,356
Репутация скрыта [+/-]
Цитата:
Сообщение от Kиpa Посмотреть сообщение
pokibor, ясно, то есть, язык программирования имеет значение только до компиляции, а после нее для компьютера нет никакой разницы между калькулятором, написанном на паскале и на c++, если их стремились сделать максимально одинаковыми, потому как они будут обращаться примерно к одним и тем же процессам и ресурсам.
В целом - да, причём это тем более верно, что сейчас львиная доля работы программы реализуются за счет обращения к библиотекам. То есть, в программе под Windows не будет никакого кода, отвечающего, скажем, за отрисовку окон на экране - она просто обратится к библиотекам, поставляемым с виндой, и те уже будут рисовать окошечки и кнопочки, а сама программа только пропишет, что делать в ответ на нажатия этих кнопочек.
Это как раз то, что SLS_Cross назвал "снять с программиста задачу управления ресурсами", только он сказал не совсем корректно - реализуется она не языками высокого уровня как таковыми, а библиотеками. Досконально зная C++, но не зная WinAPI (или другого API для построения интерфейса, который, впрочем, всё равно будет на WinAPI базироваться), красивое приложение не напишешь (или напишешь, но поседеешь и тысячу раз изобретёшь велосипед в процессе).
Из-за этого сейчас программисту нужно знать не только какой-нибудь язык программирования, но и определенный набор технологий и готовых API (которые, кстати, могут быть вполне универсальными, с интерфейсами под разные языки и даже платформы).

Цитата:
Сообщение от Kиpa Посмотреть сообщение
В том то и дело, что это нигде явно не объясняется, хотя с этого, казалось бы, следует начинать. Если взять учебник по любому языку программирования - то там с самой первой главы будут описываться особенности этого языка, его преимущества над другими, функции и архитектура, но сам основной принцип работы языка внутри компьютера - нет.
И правильно, так и должно быть. Потому что это учебник по языку программирования, а вопросы, которые мы рассмотрели, относятся к области информатики (точнее - 'Computer Sciences'). Изучить ее основы необходимо прежде, чем браться за язык программирования.
Далее, какая разница, как язык работает внутри компьютера? Сейчас почти всё программирования, разве что кроме самых низкоуровневых драйверов, работает по принципу черного ящика: у нас есть определенный интерфейс, и мы знаем, что такой-то вход дает такой-то выход. Каким образом этот выход получается, нас мало интересует, главно что бы работало. Вот когда освоете язык и перед Вами встанут сложные задачи, связанные с оптимизацией, тогда и нужно выяснять, во что же оно там компилируется и как лучше построить код.
В-общем, опять см. что написано выше про библиотеки.
Цитата:
Сообщение от Kиpa Посмотреть сообщение
Я уверен, в мире есть очень много "программистов" (возможно даже, вполне высокооплачиваемых), которые не знают того, что вы описали
Да ладно! Вы говорите ерунду. Выше написаны настолько базовые вещи, что их знает любой нормальный программист. Вам может показаться, что здесь есть противоречие с принципом черного ящика, который я описал, это не так: знать общие принципы необходимо, без этого просто не освоить в полной мере всё, что необходимо успешному программисту, а вот разбираться в деталях реализации - нет.
Цитата:
Сообщение от Kиpa Посмотреть сообщение
и для них php - это то, что в браузере
Вообще-то опять видно, что Вы только начинаете путь в программировании. Php - он не в браузере. Он работает на сервере. Конструкции языка обрабатываются интерпретатором на сервере, и на их основе генерируются обычные html-страницы, которые и отправляются в браузер. В браузере же "работает" не php, а JavaScript.
Кстати, на php можно и самостоятельные графические приложения делать - эту возможность дают специальные пакеты.

Цитата:
Сообщение от SLS_Cross Посмотреть сообщение
При компиляции получаются исполняемые файлы, которые понимаются в первую очередь Операционной Системой. И уже ОС обеспечивает трансляцию в ассемблер и машинные слова.
Не совсем. Так, как Вы описали, работают платформы с байт-кодом и интерпретаторы.
Операционная система же не обеспечивает трансляции в ассемблер (это задача компилятора), она дает определенный набор библиотек - то бишь сборников функций, обеспечивающих нужный уровень абстракции. То есть, если в компилируемом языке написано "x = 1 + 2", то сложение 1 и 2 в ассемблер (точнее, в машинный код; ассемблер - это всё-таки язык программирования, который тоже нуждается в компиляции, пусть и довольно примитивной) перекодирует всё-таки компилятор, и он же обеспечит передачу результата в область памяти, выделенную под переменную x. Операционка же даст точки входа в готовый код, который обеспечит интерфейс (будь то банальная консоль, окно или ещё что-нибудь), а также при запуске программы выделит ей какую-то область в памяти и позаботится об управлении различными потоками.
Но что верно сказано - без операционки современные программы работать в принципе не могут, просто потому что для этого им пришлось бы самим разбиратьтся, какие сигналы послать монитору, чтобы вывести что-то на экран, и как набор двоичных чисел, передаваемый с клавиатуры, превратить в нажатые пользователем клавиши.
Поэтому одна из задач современных компиляторов - это подсунуть в нужные места кода вызов соответствующих функций из библиотек целевой операционной системы, а непосредственным общением с клавиатурой и монитором занимаются уже это функции.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)

Последний раз редактировалось pokibor; 23.06.2015 в 17:55.
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием