Re: Языки в обучении программированию
Добавлено: 04 янв 2017, 16:09
Свежие статистики по языкам программирования по итогам 2016 года: применимость языков программирования.
Форум по операционной системе GNU/Linux и свободному программному обеспечению
http://linux-ru.ru:80/
Какой ужас!Olej писал(а):Свежие статистики по языкам программирования по итогам 2016 года: применимость языков программирования.
Уточняем:Сегодня в 07:48:41 »
Здравствуйте, уважаемые форумчане!
Использую данную среду программирования на уроках информатики в соответствии УМК Угриновича.
Т.е. 18 лет ещё недостаточно для того, чтобы BASIC в POSIX OS ещё не почил?Gambas — объектно-ориентированный диалект языка BASIC, дополненный интегрированной средой разработки и работающий на GNU/Linux и других UNIX-подобных операционных системах. Он представляет собой средство разработки программного обеспечения, аналогичное Visual Basic в плане разработки программ на Basic. Gambas задумывался как альтернатива для Visual Basic разработчиков, решивших перейти на Linux.
...
Разработка Gambas была начата в Париже Бенуа Минисини в 1999 году.
А теперь вспоминаем...Olej писал(а):Уточняем
Знаменитый Эдсгер Дейкстра (один из основоположников структурного программирования) на полном серьёзе договорился до того, что всех хоть раз попрограммировавших на Бейсике надо поганой метлой гнать от компьютеров — дескать, программистские души этих несчастных навеки погублены, и никакой пользы кроме вреда они уже никогда принести не смогут.
Изучаем дальше этот ужас!...Olej писал(а):Использую данную среду программирования на уроках информатики в соответствии УМК Угриновича.
От какого-то далёкого 2005-го года...Руководство и пример выполнены в Gambas
Сайт учителя информатики Аскаровой Лиры ГазнавиевныOlej писал(а):Изучаем дальше этот ужас!...Использую данную среду программирования на уроках информатики в соответствии УМК Угриновича.
И 3(!) здоровенных учебника, уродующих школьников от 8-го до 11-го классов!Николай Дмитриевич Угринович
К.п.н., зав. лабораторией информатики Московского института открытого образования, автор учебного и программно-методического комплекса по курсу "Информатика и ИКТ" для 7 - 11 классов и ЦОР к нему.
УМК Н. Д. Угриновича – единственный в действующем Федеральном перечне учебников ориентирован на работу учащихся как в среде Windows так и в Linux. Для использования приложений в среде Linux, в УМК входит Linux-DVD, предоставленный компанией AltLinux.
26.10.21 12:56
Иногда запускаются новые проекты на той же платформе, с теми же процессами и с переиспользованием многих уже существующих компонентов, и тогда в эти проекты мы ищем программистов, с учетом вышесказанного - программистов на C++. В embedded, тем не менее, чистый C все еще очень популярен, и нередко собеседоваться на вакансию C++ Developer'а приходят именно сишники. Логика у человека простая: языки, на первый взгляд, довольно близкие и почти обратно-совместимые, базовый синтаксис одинаков, про ООП кандидат что-то слышал, и значит, основная база уже есть и он сможет легко освоить C++ за 21 день в процессе работы, поэтому можно наплести про "с C++ тоже работал", начать писать на "Си с классами" и все получится. В то время как в новой команде таких "бывших сишников" уже и так набралось несколько, и такой кандидат нам уже не подойдет, на оставшиеся позиции нужен именно опытный плюсовик-затейник, который будет активно внедрять best practices и наставлять на code review на путь истинный менее опытных коллег.
Итак, признаки того, что разработчик программирует не на C++, а на "C с классами":
Использует <stdint.h>, <string.h>, <stdio.h> вместо <cstdint>, <cstring>, <cstdio>;
Использует malloc() и free() кроме явно предназначенных для этого мест (типа кастомных аллокаторов);
Использует ручное управление памятью с new и delete, вместо RAII и умных указателей;
Использует char*-строки и функции <string.h> вместо std::string и std::string_view. (единственное исключение - строковые константы через constexpr). Использует функции из <time.h> вместо std::chrono. Использует atoi() вместо stoi(). Использует функции из <stdio.h> вместо std::filesystem и потоков ввода-вывода. Использует <pthread.h> вместо std::thread.
Когда нужно имплементировать алгоритм или контейнер независимый от типа данных, которыми он оперирует, использует #define-макросы или void*-указатели вместо темплейтов;
Для объявления констант использует #define вместо const и constexpr;
Использует C-style массивы вместо std::array;
Использует NULL вместо nullptr;
Пишет (type)something вместо static_cast<type>(something);
Использует простые указатели на функции вместо std::function;
Использует константные enum вместо enum class даже для простых перечислений;
Для функций, не изменяющих состояние объектов, не использует const при объявлении. Для конструкторов забывает explicit. Для деструкторов забывает virtual :)
При разработке в ООП-стиле, объявляет все члены класса как public;
Если вам нужно вернуть из функции несколько разных значений (например, результат работы и/или код ошибки), то одно из них возвращает через return, а другое - по указателю или по неконстантной ссылке, вместо использования std::optional, std::pair/std::tuple (особенно хорошо в паре со structured binding) или просто возврата struct;
Объявляя новую переменную с типом-структурой везде пишет struct в имени типа, или наоборот, при объявлении новой структуры пишет typedef struct вместо просто struct;
Не использует неймспейсы при структурировании кода;
Использует union вместо std::variant (кстати, для каламбура типизации использовать union тоже нельзя, он нарушает active member rule);
Пишет реализации общеиспользуемых алгоритмов (foreach, transform, find_if, sort, lower_bound, и т.д.) вручную даже если они есть в <algoritm>;
При простой итерации по элементам контейнера пишет многословные конструкции вместо range-based for. Не использует auto и using в многословных конструкциях типов;
Плюс немного дополнений из комментариев:
Использует битовые поля вместо std::bitset
Использует си-шные библиотеки на прямую без уровня абстракции над ней
В заголовочных файлах куча инклудов, которые можно было в принципе там и не писать (incomplete class)
Очень хороший ресурс на GITHUB Awesome Awesomeness (дословно Awesome Awesomeness переводится как "Потрясающе!" - задайте полстрочному переводчику ) - здесь ссылки ссылок на публикации по самым разным языкам программирования:
А также - по всем сопутствующим вопросам, относящимся к программированиюProgramming Languages
Ada(Spark)
Ansible
AutoHotkey
AutoIt
C
C/C++
CMake
...
Rust
SAS
Scala
Shell
...
TypeScript
V
Contents
AI
Benchmarking
Build Systems
Compilers
Compression
...
Game Programming
Graphics
...
...
Regex
Serialization
Source Code Collections
Standard Libraries
...
Tools
Utilities
Web Frameworks
Windows Environments