Зависит от того, что Вы подразумеваете под окончанием. Чего Вы хотите ожидать?
у Вас мог, например, быть сценарий, который неоднократно поражает URL, пока это не получает желательный результат, который только был бы доступен, после того как приложение правильно инициализируется.
у Вас мог также быть слушатель контекста, который выписывает, "я - готовый" файл, который Вы используете для передачи сигналов о готовности приложения. (Если Вы делаете это, быть уверенными, что файл не существует прежде, чем запустить Ваш контейнер приложения).
По сути, как отмечали другие, на самом деле не существует такой вещи, как "язык с открытым исходным кодом". Только код может быть открытым исходным кодом в самом строгом смысле этого слова. Таким образом, могут быть компиляторы с открытым исходным кодом, среды выполнения, библиотеки и т. Д.
Однако для многих языков реализация (компилятор / среда выполнения) почти неотделима от самого языка. Так обстоит дело с Ruby, Python и т. Д., Где язык фактически определяется своей основной / исходной реализацией. Хотя существуют и другие реализации этих языков, основная реализация и язык практически взаимозаменяемы. В таких случаях, когда основная реализация также является открытым исходным кодом, имеет смысл называть ее языками с открытым исходным кодом,
Я не думаю, что языков обычно считаются открытым исходным кодом, а скорее программное обеспечение , реализующее язык (будь то компилятор или виртуальная машина или что-то еще). Отсюда следует, что данный язык может иметь реализации как с открытым исходным кодом, так и без него. Например, существует множество компиляторов C ++ с закрытым исходным кодом, а также компиляторы с открытым исходным кодом.
Возможно, можно было бы провести различие между языком, управляемым одним объектом (например, C #), и языком, который вырос через вклад сообщества (например, Python или даже Java).
Я обычно слышу "язык с открытым исходным кодом" применительно к языкам, которые изменяются в соответствии с пожеланиями сообщества. Например, в Python есть процесс PEP, который позволяет любому желающему изменять синтаксис / семантику самого языка.
C и C ++ также управляются сообществом, хотя из-за их возраста и повсеместного распространения любые изменения требуют невероятной стандартизации. усилие. C ++ 0x разрабатывался в течение многих лет, и C видел только 3 основные версии (K&R, C89, C99).
Языки, которые управляются одним объектом с очень небольшим вкладом сообщества, такие как Java или C #, обычно считаются «закрытыми» независимо от доступных реализаций. Доступны реализации как Java, так и .NET под GPL, но развитие языка не зависит от сообщества.
Я должен признать, что никогда не слышал о языке, который упоминается как открытый исходный код, но я думаю, что один из способов рассмотрения этого - это два примера, которые вы дали, Ruby и Python являются (AFAIK, и я не эксперт ни в одном из них) оба нескомпилированных языка, тогда как C и C ++ скомпилированы.
Люди часто используют термин «язык» как синоним всей среды программирования, включающей IDE, фактический язык, среду выполнения / архитектуру и библиотеки / фреймворки кода. Поэтому, когда вы говорите «открытый», я сразу думаю о Sun Microsystems, выпускающей код для инфраструктуры Java и виртуальной машины как с открытым исходным кодом.
Затем у вас есть подобные C # /. Net, где язык, базовые классы инфраструктуры и CLR spec представлены в ECMA в качестве стандарта. Третьи стороны, такие как Mono, могут реализовать эти открытые стандартизованные компоненты без необходимости лицензировать технологию, и поэтому ее можно было бы описать как открытую до определенной степени, даже если реализация Microsoft является закрытым исходным кодом (или частично открыта в любом случае) и является коммерческим продуктом. In Mono '
Можем ли мы рассматривать язык с открытым исходным кодом в основном с точки зрения лицензий GNU? Или это должно быть только критерием, определяемым сущностью [сообществом, компанией и т. Д.]?