Чем язык программирования отличается от фреймворка?
=====================================================

 Ну вот если по сути разобраться. Библиотека языка -- это набор модулей и заготовок т.е. по сути фреймворк, из кирпичиков которого мы строим приложение верно?  
  

Получается, что дело исключительно в том, что фреймворк более высокоуровневая сущнсть и все? 

 Могу ошибаться, в моем понимание это выглядит так:  

Библиотека языка это наборы необходимых элементов для работы, например: ArrayList, Timer, TimeUnit, Loger и т.д., т.е. те вещи с помощью которых ты разрабатываешь программы.  

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

 Хм, если мыслить глобально, то можно сказать, что фреймворк в сравнении с языком программирования это просто сущность более высокого уровня.   
  

Например взять к примеру Машинный язык, по сути почти все языки программирования в конечном итоге работают с ним. То есть все языки программирования можно назвать фреймворками если мыслить глобально.  
  

JS например является своего рода машинным кодом для браузеров, а jq фреймворком, который строится на базе JS. Но по сути jq полностью может заменить js. Также как и C может заменить Assebler теряя в производительность.  
  

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

 А чем по вашему мнению отличается язык программирования от готового софта? Ведь и то, и другое - программное обеспечение, машинный код. Т.е. по сути, программа - это и есть язык программирования, просто приведенный в нужный вид)  

А теперь обратимся к вики, и увидим, что:  

язык программирования - *формальная знаковая система, предназначенная для записи компьютерных программ*  

фреймворк - *программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта*  

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

 Фреймворк ( англ. "строительные леса", "каркас") относится к языку программирования как архитектура высотного здания относится к железобетону.  
  

Написать фреймворк значит решить задачу следующего характера:  
  

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

  
  

Таким образом основные качества фреймворка:  
* консистентность
* простота использования и низкий порог вхождения
* расширяемость
* гибкость

  
  

Она (структура) должна быть достаточно абстрактной чтобы быть гибкой но и достаточно конкретной, чтобы быть практически полезной. Написав фреймворк можно легко решать множество однотипных задач.   

Вообще хорошая программная архитектура в приложении имеет свойства фреймворка.   
  

У меня преподавательница в университете слово употребляла правильное: "ортогонально".  

Представьте себе многомерную ортогональную структуру..  

Если строить ПО ортогонально оно станет фреймворком.   
  

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

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

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

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

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