на синтаксис нам почти начхать, а для начинающего это реальная проблема - сделать хоть что-нибудь, чтобы было видно результат. Формальные требования такие (их можно чуть-чуть подвинуть). =============================== 1) 1.2 Целью изучения дисциплины является: изучение высокоуровневых методов программирования на языках высокого уровня, на примере языка С++.
В результате освоения дисциплины студент обязан - знать: структуру программы на языке С++; методологию объектно-ориентированного программирования и средства её поддержки в языке С++; способы обработки ошибок, включая средства работы с исключениями; принципы построения и основные классы стандартной библиотеки шаблонов STL; - уметь: создавать и использовать объектно-ориентированные программы и библиотеки; использовать возможности обобщенного программирования; использовать в программе средства обработки исключений; пользоваться стандартной библиотекой языка С++. ================================== 2)1.1 Целью изучения дисциплины является: изучение методов объектно-ориентированного программирования на языках высокого уровня, на примере языка С++, а также современных концепций разработки и проектирования программного обеспечения(ПО).
В результате освоения дисциплины студент обязан - знать: основы объектно-ориентированного программирования в С++, особенности создания классов и их использование, в разрабатываемых приложениях, основы проектирования объектно-ориентированного программного обеспечения с использованием С++; - уметь: проектировать и разрабатывать программное обеспечение средствами объектно-ориентированного языка С++.
>1) изучение высокоуровневых методов программирования на языках высокого уровня.... Высокоуровневое программирование подразумевает хороший уровень абстракции и функциональности, который позволяет писать программы эффективно (не обязательно большие программы). Это (на мой взгляд): 1. Автоматическое управление памятью и защита памяти (нет в С++) 2. Хороший фрейворк для работы с коллекциями (В Java лучше чем в C++, но в Python пользоваться им гораздо проче чем в Java, сравните java.util.List lst = new java.util.ArrayList(){{add(1);add(2);add(3);}}; и list = [1,2,3]) 3. Встроенный в язык тип данных строка (в С++ нет), это практически самое важное, поскольку основные даные с которыми приходится работать это строковые данные (с числами нигде проблем нет), так что чем проще работать со строками тем проще программировать. Здесь же функционал для работы со строками - regex и прочее. 4. Reflection и Introspection 5. Встроенные алогиртмы, сортировки и прочее 6. Различные средства языка которые позволяют писать гибкий и надёжный код: обработка ошибок исключениями, возможость в качетве результата функции венуть tuple а не единственное значение, lambda функции и функиции как типы данных первого порядка, while-else
Заметте, я ни слова не сказал про ООП, по моему для высокоуровнего языке это не ключевой момет, и всё что касается ООП вы можете рассказать во втором курсе. ===================================== >2) ООП В первую голову это Инкапсуляция Наследование и Полиморфизм затем другие паттерны построенные на принципах ООП. Паттернов очень много, а для примеров достаточно базовых конструкций языка и функции печати (printf). C++ хорош тем что здесь вы можете рассказать про детали реализации, таблицу виртуальных методов, и про проблемы, множественное наследование и почему это плохо.
При этом в курсе ООП можно опустить практически всё что было перечилено в курсе высокоуровнего программирования, паттерны не связаны с работой со строками, сборкой мусора и динамической типизацией (да, конечно наличие или отсуствие влияет на реализацию, но идеи остаются теми же).
===============================
1) 1.2 Целью изучения дисциплины является: изучение высокоуровневых методов программирования на языках высокого уровня, на примере языка С++.
В результате освоения дисциплины студент обязан
- знать: структуру программы на языке С++; методологию объектно-ориентированного программирования и средства её поддержки в языке С++; способы обработки ошибок, включая средства работы с исключениями; принципы построения и основные классы стандартной библиотеки шаблонов STL;
- уметь: создавать и использовать объектно-ориентированные программы и библиотеки; использовать возможности обобщенного программирования; использовать в программе средства обработки исключений; пользоваться стандартной библиотекой языка С++.
==================================
2)1.1 Целью изучения дисциплины является: изучение методов объектно-ориентированного программирования на языках высокого уровня, на примере языка С++, а также современных концепций разработки и проектирования программного обеспечения(ПО).
В результате освоения дисциплины студент обязан
- знать: основы объектно-ориентированного программирования в С++,
особенности создания классов и их использование, в разрабатываемых
приложениях, основы проектирования объектно-ориентированного программного
обеспечения с использованием С++;
- уметь: проектировать и разрабатывать программное обеспечение средствами объектно-ориентированного языка С++.
Reply
Высокоуровневое программирование подразумевает хороший уровень
абстракции и функциональности, который позволяет писать программы
эффективно (не обязательно большие программы). Это (на мой взгляд):
1. Автоматическое управление памятью и защита памяти (нет в С++)
2. Хороший фрейворк для работы с коллекциями (В Java лучше чем
в C++, но в Python пользоваться им гораздо проче чем в Java,
сравните java.util.List lst = new java.util.ArrayList(){{add(1);add(2);add(3);}}; и list = [1,2,3])
3. Встроенный в язык тип данных строка (в С++ нет), это практически
самое важное, поскольку основные даные с которыми приходится работать
это строковые данные (с числами нигде проблем нет), так что чем
проще работать со строками тем проще программировать. Здесь же
функционал для работы со строками - regex и прочее.
4. Reflection и Introspection
5. Встроенные алогиртмы, сортировки и прочее
6. Различные средства языка которые позволяют писать гибкий и
надёжный код: обработка ошибок исключениями, возможость в качетве
результата функции венуть tuple а не единственное значение, lambda
функции и функиции как типы данных первого порядка, while-else
Заметте, я ни слова не сказал про ООП, по моему для высокоуровнего
языке это не ключевой момет, и всё что касается ООП вы можете рассказать
во втором курсе.
=====================================
>2) ООП
В первую голову это Инкапсуляция Наследование и Полиморфизм
затем другие паттерны построенные на принципах ООП.
Паттернов очень много, а для примеров достаточно базовых
конструкций языка и функции печати (printf).
C++ хорош тем что здесь вы можете рассказать про детали
реализации, таблицу виртуальных методов, и про проблемы,
множественное наследование и почему это плохо.
При этом в курсе ООП можно опустить практически всё что было
перечилено в курсе высокоуровнего программирования,
паттерны не связаны с работой со строками, сборкой мусора
и динамической типизацией (да, конечно наличие или отсуствие
влияет на реализацию, но идеи остаются теми же).
Reply
До более или менее системного изучения паттернов дело точно не дойдёт - всё таки времени мало.
Reply
Reply
Leave a comment