Какие языки программирования для чего нужны? Для чего нужен c язык


Какие языки программирования для чего нужны?

Какие языки программирования для чего нужны?

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

C

Начнем по алфавиту. Курсов C (Си) в каталоге Recoursia не так уж и много, но тем не менее, этот язык сложно назвать страдающим от недостатка популярности. Это один из самых старых среди активно используемых сегодня в реальной практике разработки программного обеспечения алгоритмических языков. На нем разрабатывают то, что принято обозначать «низкоуровневым программированием» — драйверы устройств, компоненты операционных систем, различные управляющие приборами и встраиваемые в них программы.

Спрос на специалистов по языку C не слишком велик, но достаточно стабилен, но при этом, в связи со спецификой разрабатываемых на Си программ, требования к таким программистам очень высокие. Можно с уверенностью сказать, что начинающему C-разработчику в СНГ сегодня практически невозможно будет подыскать себе работу. При этом учить C можно и нужно, ведь большинство современных языков «выросли» именно из него. Просто нужно быть готовым к тому, что, изучая C, вы заложите фундамент для длинной и успешной карьеры, а не сможете делать какие-то прикладные решения вроде сайтов и мобильных приложений сразу.

C++

Название этого языка программирования не зря так похоже на C. C++ — это «улучшенный C», но в результате такого улучшения получился достаточно непростой в изучении и, как многие считают, и в применении язык, который, тем не менее, остается востребованным уже очень много лет. «Си плюс плюс» — это пропуск в мир разработки всего, что должно работать максимально быстро. Игры, поисковые системы, антивирусы – это только очень краткий список того, что сегодня разрабатывают с помощью C++.

Обычно этот язык изучают, уже получив опыт работы с C или другим более простым в изучении языком, и в качестве первого его выбирать вряд ли стоит, особенно если ваша текущая сфера деятельности далека от математики и алгоритмов. Но если вы мечтаете делать игры, причем не мобильные тетрисы, а что-то вроде легендарных Doom, Quake и WarCraft, то учить C++ стоит. Но сначала попрограммируйте на чем-нибудь еще.

C#

Еще один потомок языка C, разработанный корпорацией Microsoft для своей платформы .NET. В отличие от C++, курсы C# подойдут и тем, кто только начинает программировать. На C# (си-шарп) сегодня создают программы для Windows, пишут Web-приложения, а кое-кто еще продолжает разрабатывать и мобильные приложения для Windows Phone, в надежде на то, что Microsoft ещё не совсем забросила свою мобильную операционную систему. Вакансий для начинающих программистов C# сегодня в СНГ достаточно – во всяком случай, если вы хорошо освоили программирование на этом языке, то наверняка найдутся компании, готовые поручить вам более-менее простые задачи на нем. В общем, если вы хотите стабильную работу, которая достаточно неплохо оплачивается, то стать «шарпистом» — далеко не худший вариант.

Objective C

Четвертый только в нашем списке язык программирования, авторы которого вдохновлялись языком Си. Но при этом он стоит особняком от остальных «наследников Си», ведь когда-то его выбрала в качестве основного инструмента корпорация Apple. Поэтому Objective C применяется практически только для программирования под MacOS и iOS, но в связи с популярностью продуктов «яблочной компании» спрос на разработчиков, использующих Objective C, довольно высок. Впрочем, относительно недавно Apple выпустила новый язык, так что будущее Objective C выглядит не таким уж безоблачным. Да и сложность написания ПО на нем заставляет усомниться в том, что начинать изучения программирования с Objective C – хороший выбор.

Swift

На смену не всегда удобному и вызывающему немало нареканий у разработчиков Objective C компания Apple выпустила новый язык программирования – Swift. Пока что нельзя сказать, чтобы он совсем уж заменил своего предшественника в разработке под iOS и MacOS, но популярность Swift во всех рейтингах стабильно растет, в то время как популярность Objective C так же стабильно падает. Так что если вы хотите программировать под Apple-устройства, вполне можно сразу садиться за изучение Swift, не тратя время на Objective C.

PHP

Некогда самый популярный язык для написания сайтов и Web-приложений, сегодня PHP уже выглядит несколько устаревшим, особенно когда речь заходит о больших проектах для международных рынков.

Тем не менее, благодаря простоте освоения и большому количеству небольших проектов, PHP можно рекомендовать в качестве первого языка для изучения даже тем, кто не имеет ни малейшего представления о программировании вообще. Карьерные перспективы у PHP-разработчиков пока что тоже достаточно неплохи, потому что существует большое количество проектов, ранее уже написанных на PHP, и нуждающихся, как минимум, в поддержке. Хотя при этом зарплата даже у высококвалифицированного PHP-разработчика будет ниже, чем у его коллеги, имеющего аналогичный по продолжительности работы, но использующего C++ или Java.

Java

Второй по популярности язык программирования в мире, который применяется так же широко, как C++, но не имеет большинства его недостатков. Java – это и разработка больших высоконагруженных продуктов для больших транснациональных компании, и небольшие приложения и игры для Android. Программисты, пишущие код на Java, востребованы во всем мире, и страны СНГ– не исключение. При этом Java уже много лет остается одной из самых хорошо оплачиваемых массовых специальностей для разработчиков. При этом вероятность того, что в обозримом будущем Java исчезнет из списка востребованных специальностей, ничтожно мала. Правда, и цена за эти преимущества достаточно высока: для изучения Java вам потребуется гораздо больше времени и усилий, чем для изучения того же PHP. Но и отдача будет высокой.

JavaScript

Этот язык часто путают с Java, и неудивительно – когда-то название ему выбрали на волне популярности платформы Java, и с тех под JavaScript постоянно борется за звание настоящего языка. Сегодня, кажется, это уже в прошлом, потому что именно JavaScript – самый популярный язык программирования в мире. Своей популярностью он обязан, конечно, развитию Web, ведь именно JavaScript используется для написания Front-end (браузерной части) всех тех интерактивных Web-приложений, которые сделали браузер таким же рабочим инструментом, как Word, Excel и тысячи других традиционных приложений для Windows.

Но сегодня JavaScript (часто пишут сокращенно JS) используется и для серверного программирования, и количество новых сфер применения этого языка растет буквально с каждым годом. При этом порог вхождения в профессию здесь заметно ниже, чем в случае с Java, а зарплаты могут быть часто на том же уровне. С уверенностью можно сказать, что JavaScript сегодня – один из лучших языков для старта карьеры программиста.

Python

Еще один достаточно универсальный и относительно несложный для изучения язык. Python (он же питон, читается как «пайтон») прочно утвердился в очень и очень перспектиной области, которую называют data mining. Если говорить упрощенно, то так называют применение различных данных, накопленных в бизнесе, для поиска скрытых закономерностей спроса и возможностей развития бизнеса. Но Python также активно используется для написания Web-сервисов, серверной части многопользовательских игр и многих других задач. Спрос на Python-разработчиков довольно быстро растет, поэтому если вы решите изучать этот язык программирования, то вряд ли прогадаете.

R

В отличие от «питона», этот язык заточен исключительно под анализ данных, что естественным образом сказывается на его распространенности и востребованности у работодателей. Правда, и платить узкому специалисту по R, видимо, будут больше, чем «питонисту», но попробуйте еще найти подходящую вакансию! В общем, курсы R будут полезны, если вы работаете в сфере анализа данных, и хотите освоить полезный навык. Начинать же карьеру программиста с такого специфического языка вряд ли будет разумным решением.

Scratch

В общем-то, Scratch – это даже не язык, а среда визуального программирования, придуманная для обучения программированию детей. Поэтому 99% курсов Scratch адресованы детям довольно юного возраста, и если вы уже к ним не относитесь, то себе посмотрите что-то другое. Если же у вас есть ребенок, которому 7-12 лет, то курсы Scratch – отличный вариант, чтобы заинтересовать его программированием. Кстати, здесь у нас есть еще подборка отличных советов, как заинтересовать ребенка программированием.

Ruby

Один из достаточно популярных языков Web-программирования, который, в прочем, на белорусском рынке труда не всегда способен обеспечить своего носителя топовым по заработной плате рабочим местом. Курсы Ruby вряд ли стоит изучать для освоения первого языка программирования, потому что с высокой долей вероятности поиски работодателя затянутся, ведь вакансии для junoir’ов на Ruby появляются довольно редко.

Delphi

Еще пять-семь лет назад именно Delphi был стандартным первым языком программирования — еще бы, ведь язык Pascal, который является предшественником Delphi, и был придуман для обучения школьников и студентов программированию. Но для реальной жизни Delphi уже подходит из рук вон плохо, поскольку программирование на нём оплачивается заметно ниже среднего, а новых крупных проектов на этом языке вы не найдете. Поэтому рекомендовать курсы Delphi начинающим программистам в наши дни уже вряд ли стоит.

ActionScript

Ещё один язык из славного прошлого – ActionScript был (да и остается) языком платформы Adobe Flash, на которой еще недавно была написана половина игр для Web. Сегодня уже Flash – это пережиток прошлого, и ActionScript тоже нужен разве что для поддержки всего того, что было раньше написано на Flash’е.

VBA

Язык программирования макросов для пакета Microsoft Office. VBA расшифровывается как Visual Basic for Applications, и используется для автоматизации рутинных действий в офисных пакетах. Так что если ваша работа тесно связана с Word и Excel, то курсы VBA будут полезны, но программистов на VBA на рынке труда никто не ищет, и вряд ли будет искать в обозримом будущем.

1C

Язык программирования для одноименной бухгалтерской платформы. Специалисты по программированию на 1С сегодня нужны не только в ИТ-компаниях; практически каждая крупная организация имеет в своем штате сегодня 1С-программистов. Так что курсы программирования 1С – хороший вариант для тех, кто не очень близок с английским языком, но при этом хочет работать в ИТ-сфере.

Давайте подытожим то, что написано выше. Если вы решили учить программирование сегодня, то самое перспективное – это JavaScrip, Java, Python, 1С, Swift и C#. Но, конечно, это не значит, что остальные языки второсортные или неподходящие. Помните, главное – это стремление к цели и упорный труд, которые обязательно будут вознаграждены по достоинству.

newscomputer.ru

Преимущества C++ как первого языка для обучения программированию / Хабр

Всем доброго времени суток!

Это статья о том, почему же все-таки стоит выбрать C++ в качестве первого языка программирования для обучения студентов, и немного о проблемах преподавания в ВУЗах. Часть суждения, касающегося процесса обучения, основывается на личном опыте преподавания (три года, во время учёбы в аспирантуре), а также на общении с преподавателями и студентами. Рассматриваются преимущества языка программирования C++ именно для обучения и с точки зрения лучшего понимания основных концепций. Остальные кандидаты на роль первого языка (Pascal/Python/C#/Java) не рассматриваются, дабы не разжигать холивар. Еще раз отмечу: не для промышленной разработки и не с точки зрения такого субъективного критерия, как удобство. Написано под впечатлением откровенно рекламного поста «Delphi XE5 как основа для обучения программированию» (на момент написания, доступна только версия «от гугла»).

0 Введение
Для начала, хотелось бы отметить, что для студентов не профильных специальностей вопрос выбора первого языка программирования не рассматривается. Основы алгоритмизации (если они необходимы) можно осваивать хоть на Python, хоть на C++ (Java, C#, Pascal и т.д.). В данном случае, чем проще язык, тем он лучше: у людей необходимо сформировать хоть какую-то культуру алгоритмического мышления и понимания базовых конструкций. Студентам некоторых специальностей (юридические, экономические, гуманитарные), изучение ЯП совсем не требуется. Несмотря на всю очевидность написанного выше, многим студентам-экономистам первого курса преподают программирование на Pascal на практических занятиях по информатике. Студентам, которые ещё толком не умеют работать с MS Word. Польза от таких занятий весьма и весьма сомнительна. Точно так же, студентов-математиков могут пару лет учить программировать на C++/C#/Java… но зачем? Гораздо полезнее для последующего применения своих знаний изучить программы вроде Mathcad, Simulink, Surfer и т.д. Учитывая вышеизложенное, рассмотрим процесс выбора первого языка исключительно для студентов профильных специальностей (например, «Программная инженерия») и смешанных специальностей с уклоном в сторону IT (например, «Прикладная математика и информатика»). Во-первых, учебный план таких специальностей предполагает достаточное количество лекций и практик (т.к. рассматривается первый язык, учитывается только первый курс): для двух связанных дисциплин (информатика и программирование) около 230 часов, в зависимости от специальности. Во-вторых, наличие заинтересованности и определённого склада ума у студентов. Такие студенты чаще всего уже пробовали программировать, а возможно даже и написали сайт/игрушку. Две эти причины, в совокупности, дают неплохую базу для начала обучения и понижают порог вхождения для обучения языку. К тому же, выпускникам рассматриваемых специальностей предстоит в дальнейшем работать в индустрии разработки ПО. Следовательно, выбор первого языка для них особо важен.
1 Почему же C++?
На первом курсе закладывается базис для дальнейшего обучения и формируется подход студента к дальнейшему получению знаний. Язык программирования играет здесь не последнюю роль. Для того чтобы выбрать C++ в качестве первого языка программирования существует четыре причины:
  1. Компилируемый язык со статической типизацией.
  2. Сочетание высокоуровневых и низкоуровневых средств.
  3. Реализация ООП.
  4. STL.
Рассмотрим данные причины более подробно.

Компилятор. Тут C++ предстаёт во всей красе. Множество компиляторов, консольные команды, этапы сборки программы… Да, первую программу нужно написать в простом текстовом редакторе без подсветки синтаксиса и автокомплита, найти чем и как её можно запустить. Такой подход формирует у человека некоторое понимание того, как всё устроено:

  • Код программы – это просто текст, который сам по себе не заработает.
  • Компилятор – это отдельная программа, которой надо указать, что и как сделать с исходным кодом, чтобы он превратился в исполняемый файл. Текстовый редактор – это тоже отдельная программа, предназначенная для написания исходного кода.
  • Существуют опции сборки, и существует не один компилятор.
  • Исходный код, написанный программистом, может быть предварительно обработан и изменён (например, препроцессором).
Будущий специалист осознает, что код сам по себе не запускается (в дальнейшем он быть может и заинтересуется, как работает, например, интерпретатор Python или JIT-компиляция). Человек будет задавать себе вопросы: «А почему?», «А в чём отличие?», «Как?». Не будет иллюзий по поводу того, что всё работает по нажатию двух волшебных кнопок или в интерактивной командной строке. Студент будет знать, что процесс сборки программы можно настроить и что исходный код может быть обработан сторонними программами. В будущем, при использовании IDE, человек будет понимать, что это всего лишь удобный комплекс программ, выполняющий большую часть рутинных операций и в случае недостаточной гибкости от неё можно отказаться или расширить.

Статическая типизация. На примере языка со статической типизацией проще понять, что такое тип данных, зачем он нужен и от чего зависит. Видно, что собой представляет объявление, определение и инициализация. Использование языка C++ даёт это явно увидеть, что способствует дальнейшему пониманию того, как работают эти механизмы в других языках. Помимо этого можно на реальных примерах понять, чем беззнаковые целые отличаются от целых со знаком, чем отличаются числа двойной и одинарной точности, чем отличается символ от строки и т.д.

Высокоуровневые и низкоуровневые средства. Использование таких средств, как указатели и динамическое выделение памяти, позволяет понять (или в дальнейшем способствует пониманию), что такое стэк, куча, стэк вызовов, раскрутка стэка и т.д. Помимо этого, на практике закрепляется понимание концепции адресов и адресной арифметики. На примерах демонстрируется, что память надо выделять, освобождать, потому что она не бесконечная, что существуют утечки памяти. В будущем, при изучении языков с GC проще будет понять, что же это такое. Отдельно стоит отметить простой механизм передачи значений по ссылке, значению, указателю и перенос объекта. Что такое изменяемые и не изменяемые параметры. В дальнейшем данные концепции могут быть использованы и при изучении других языков. Студент будет понимать, например, что объект в языке N передаётся по ссылке, и если его значение изменить в функции-члене, то оно изменится везде.

Реализация ООП. Это относительно чистая реализация ООП без всякого синтаксического сахара (относительно некоторых других языков). Чётко разграниченные уровни доступа к членам класса, возможность множественного наследования и динамический полиморфизм дают возможность быстро усвоить основные концепции ООП (абстракция, наследование, инкапсуляция и полиморфизм). Указатели и динамическое выделение памяти позволяют наглядно понять такие важные механизмы, как upcasting и downcasting. В дальнейшем, основываясь на этих знаниях, легко можно понять весь синтаксический сахар в других языках. Необходимость контроля ресурсов (в том числе и «правило трёх» или уже «правило пяти», с учётом C++11), захват их в конструкторе и освобождение в деструкторе также способствуют более глубокому пониманию ООП. Стоит отметить такой важный момент, как не принудительное ООП. То есть данный подход к программированию применяется тогда, когда это удобно, и его можно смешивать, например, с функциональным программированием. Это способствует формированию понимания того, что средства реализации выбираются исходя из задачи.

STL. Сама по себе концепция шаблонов C++, генерации кода и применения широкого спектра алгоритмов к различным контейнерам положительно влияет на процесс обучения. Здесь все на поверхности и понятно, почему можно создать вектор целых чисел и вектор пользовательских объектов на основе одного класса-контейнера. Почему можно применить некоторую операцию к последовательности объектов или как отсортировать объекты, для которых не предусмотрена встроенная операция сравнения. Можно понять, как осуществляется доступ к элементам, и узнать о категориях итераторов. Помимо этого закрепляется понимание обобщённого программирования.

2 Немного о проблемах обучения
Процесс обучения, пожалуй, одна из наиболее существенных преград, для того, чтобы реализовать все то, о чём написано в предыдущем пункте. Вероятно, этот вопрос не касается топовых IT-вузов, но если взять рядовые образовательные учреждения, то ощущается дефицит квалифицированных кадров и слабая мотивация студентов. Для большей части практических дисциплин редко привлекаются специалисты, занимающиеся непосредственно разработкой ПО. Например, человек, который не применял STL в реальных проектах, вряд ли сможет объяснить, как это делать, и главное зачем. Так же, как и преподаватель, искренне считающий, что программирование на Delphi с формочками уже есть самое настоящее ООП, учитывая, что весь код (без намёка на собственные классы, абстракцию и инкапсуляцию) пишется в обработчике нажатия на кнопку с очень понятным именем «Button1», не способствует процессу обучения. Проблемы есть и со стороны студентов, которые толком не поняли, куда и зачем они поступили. Многие студенты, не имеют мотивации к дальнейшему обучению и пониманию, а также и к самообразованию. Не смотря на то, что такие студенты и преподаватели прекрасно дополняют друг друга, в конце обучения не получится специалист, претендующий на junior-вакансию.
3 Заключение
В настоящий момент в мире разработки программного обеспечения сложилась ситуация, что в цене знание определённых технологий и опыт их применения, а не понимание. Современному обществу необходимо много программистов, которые могут выполнять строго определённые функции. Отчасти этому способствуют и развивающиеся технологии разработки. Возможно, что большая часть разработчиков, умеющих просто пользоваться определённым набором инструментов, никогда не столкнётся с «законом дырявых абстракций». Однако людям, претендующим на должности ведущих разработчиков, занимающихся оптимизацией и вопросами архитектуры, необходимо более глубокое понимание того, как всё устроено. Одним из факторов, приводящих к такому пониманию, может отказаться и верный выбор первого языка программирования. На основании этого, язык C++, являющийся статически типизированным, компилируемым, поддерживающий низкоуровневую работу с памятью и не перегруженную синтаксическим сахаром реализацию ООП, можно рекомендовать в качестве первого языка программирования.

habr.com

Для чего нужнв языки: С; С++; С#; Objektive - C?

Для чего нужнв языки: С; С++; С#; Objektive

Вопрос таки в том, "для чего нужны?"

Для того, чтобы писать программы, как очевидно бы это не звучало. А вот область применения - вещь отдельная.

Си - это не только драйвера и низкоуровневые программы, но ещё и GNOME, и графического (и не очень) прикладного софта для никсов. Везде, где приложение становится performance-critical, применяют Си. Или плюсы. О них ниже.

Плюсы были задуманы как "усовершенствованный Си с ООП и безопасными типами". Разрозненность сообщества, ввиду отсутствия (и невозможности создать) гетерогренной среды, и, как следствие, отсутствие даже намёка на вменяемые единые style guidelines, выродили язык в нечто неописуемо прекрасное в своей гениальной уродливости. Язык популярен и развивается, на него существует множество библиотек и фреймворков разного качества, от "помыть руки после использования" (вспомним MFC, гори он в аду, мразь), до более-менее приемлемого (Qt, boost). От себя скажу, что я рад, что мне не приходится его использовать.

Шарп долгое время был "одним из" языков для .NET-платформы Microsoft, по сути являясь "улучшенной Джавой". После того, как в MS окончательно открестились от всяких бредовых решений типа Visual Basic.NET, стал де-факто стандартным языком платформы. Язык общего назначения, однако видно, что ориентировался изначально на GUI-приложения (поддержка ивентов на уровне языка, вот это всё). Много полезных фич - language-level асинхронность, неймспейсы вместо пакетов, etc. Периодически метит в Энтерпрайз и Веб, но в первом до сих пор Java, а во втором и без шарпа хватает. Позже расширился на мобильные приложения, монополизировал Unity и стал опенсорсным, что позволяет уверенно пророчить рост популярности - язык-то хороший.

Objective-C был языком для яблочных продуктов. В теории является "Си с классами", на практике - странная каша из непонятного синтаксиса. Постепенно вытесняется Swift.

thequestion.ru

Непостижимая эффективность языка C | Статья

Не так давно издательство O’Reilly выпустило книгу «21st Century C: C Tips from the New School», которая собрала на Amazon.com довольно противоречивые отзывы. Поэтому я решил написать исключительно оптимистичный материал о «древнем языке» C и предлагаю обсудить его настоящее (а если желаете — прошлое и будущее).Слово Дамьену Катцу, автору CouchDB. В настоящее время он является главным техническим директором (CTO) в Couchbase.

Много лет я всеми правдами и неправдами пытался расстаться с языком C. Слишком прост по составу, требуется управлять множеством деталей, слишком старый и неработоспособный, на первый взгляд — слишком низкоуровневый. Я крутил бурные и страстные интрижки с Java, C++ и Erlang. На всех этих языках у меня есть выполненные проекты, которыми я горжусь, но все эти языки в свое время разбили мне сердце. Они сулили что-то и не сдерживали обещаний, создавали культуры, в которых ты сосредотачиваешься не на том, на чем следует, а также требовали идти на катастрофические компромиссы, которые не оборачивались ничем, кроме горестных разочарований. И я на коленях приползал обратно к C.

Язык C универсален. Это единственный язык, который может одновременно похвастаться и высокой продуктивностью и исключительной скоростью, превосходным инструментарием для любых областей, огромным сообществом разработчиков, высокопрофессиональной культурой. Да, не без компромиссов — но этот язык их не стыдится.

На других языках вы, возможно, быстрее напишете работоспособное решение, но в долгосрочной перспективе, когда речь зайдет о производительности и надежности, именно C избавит вас от массы головных болей. Я усвоил этот урок на собственном горьком опыте.

Простота и выразительность

С — поразительно высокоуровневый язык. Да, я не оговорился, и повторю еще раз: C — фантастически высокоуровневый язык. Конечно, не такой высокоуровневый, как Java или C#, и далеко не такой, как Erlang, Python или JavaScript. Но он не менее высокоуровневый, чем C++, зато гораздо, гораздо проще. Разумеется, C++ предлагает больше абстракций, но эти абстракции недалеко ушли от C. Работая с C++, вы все равно должны в совершенстве знать C, а также еще кое-какую смешную дребедень.

Если кто-то вам скажет: «Мне нужен язык программирования, на котором мне всего лишь достаточно сказать, чего я хочу — и все будет готово», дайте ему карамельку». Алан Дж. Перлис

Сложно вспомнить какие-нибудь низкоуровневые языки, которые могли бы заменить C на практике. Это объясняется тем, что C так чертовски успешно абстрагирует свойства той машины, на которой работает, и делает это на таком высоком уровне, что остальные низкоуровневые языки просто не нужны, если есть C. Язык C действительно хорош в том, для чего предназначается.

Синтаксис и семантика C удивительно сильны и выразительны. На этом языке удобно судить и о высокоуровневых алгоритмах, и о низкоуровневом оборудовании. Семантика C настолько проста, а синтаксис так удобен, что значительно упрощается чисто когнитивная сторона работы. Программист может сосредоточиться на том, что действительно важно.

Язык C задал планку для по-настоящему хорошего низкоуровневого языка и избавился от всего, что этой планке не соответствует. Таким образом, С полностью перевернул представление о том, что такое «качественный низкоуровневый язык». Черт возьми, это впечатляет!

Более простой код, более простые типы

C — статически типизированный язык со слабым контролем типов, его система типов довольно проста. В отличие от C++ или Java, здесь нет классов, в которых требуется определять всевозможные новые варианты поведения типов, действующие во время исполнения. Вы работаете практически только со структурами и объединениями, и все вызывающие элементы должны предельно точно описывать, как они используют типы.

«Даром» вызывающая сторона не получает почти никакой информации.

«Вы хотели банан, но оказались наедине с гориллой, которая держит этот банан. А вокруг вас — джунгли». Джо Армстронг

Иногда кажущаяся слабость оказывается преимуществом. Именно такова ситуация с API языка C: их «поверхностная область» кажется очень маленькой и простой. Вместо массивных фреймворков здесь делается ставка на хорошо прослеживаемые тенденции и культуру создания компактных библиотек, которые представляют собой легковесные абстракции простых типов.   Сравните это с объектно-ориентированными языками, где в базах кода зачастую развиваются огромные взаимозависимые интерфейсы из сложных типов, где аргументы и возвращаемые типы оказываются сложнее. Такая сложность становится фрактальной: каждый тип является классом, определенным в контексте методов с аргументами и возвращаемыми типами, которые, в свою очередь, также могут быть сложными возвращаемыми типами.

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

Самый быстрый

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

«Если вы пытаетесь перехитрить компилятор, то практически сводите на нет его пользу». Керниган и Плоджер, The Elements of Programming Style

Всякий раз, когда вам рассказывают о том, что на высокоуровневом языке, например, Java или Haskell, удалось достичь производительности «почти как на C» — изучите детали. В лучшем случае это окажется плоской шуткой. Таким «обгонятелям» приходится вытворять неуклюжие обратные сальто, пользоваться специальными знаниями об «умных» компиляторах и внутренних механизмах виртуальной машины, чтобы достичь сравнимой скорости. Обычно такие эксперименты приводят к тому, что простая и выразительная природа языка тонет в мудреных оптимизациях, специфичных для конкретных версий. Выигрыш в скорости обычно получается минимальным.

Если вы пишете на C программу, которая должна работать быстро, вы знаете, почему она получится быстрой. Такая программа не будет существенно замедляться при использовании различных компиляторов и сред исполнения, как это происходит при использовании виртуальной машины, экспериментах с настройками сборщика мусора (они могут радикально влиять на производительность и длительность пауз). Не случится и такого, что срабатывание какого-то фрагмента кода в приложении коренным образом изменит профиль сборки мусора во всей остальной программе.

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

Ускоренные циклы сборки-запуска-отладки

Эффективность и продуктивность труда разработчика исключительно сильно зависят от цикла «сборка-запуск-отладка». Чем быстрее этот цикл, тем более интерактивна сама разработка и тем дольше вы остаетесь в движении, тратя время именно на решение задачи. C обладает наивысшей интерактивностью разработки среди всех широко распространенных статически типизированных языков.

«Оптимизм — это профессиональная болезнь всего программирования. Обратная связь — это лекарство от этой болезни». Кент Бек

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

Вездесущие отладчики и удобные аварийные дампы

Практически в любой системе, куда вам может потребоваться портировать программу, найдутся готовые отладчики C и инструменты для аварийных дампов. Это бесценные вещи, если нужно быстро найти источник проблем. А проблемы будут.

«Ошибка, отсутствует клавиатура — для продолжения нажмите F1».

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

Если же код написан только на C, то вы сможете вызывать стеки, переменные, аргументы, локальные поточные переменные и глобальные переменные — практически все, что встречается в памяти. Это поразительно полезно, особенно если приходится решать проблему, которая усугублялась уже несколько дней в долгоживущем серверном процессе, а как-либо иначе воспроизвести ее невозможно. Если вы потеряете такой контекст в высокоуровневом языке — я вам не завидую.

Вызывается отовсюду

В языке C есть стандартизированный бинарный интерфейс приложений (ABI), поддерживаемый всеми существующими операционными системами, языками и платформами. Он не требует ни среды времени исполнения, ни каких-либо иных неизбежных издержек. Таким образом, код, написанный вами на C, полезен не только для вызывающих элементов из C, но и для любой мыслимой библиотеки, языка или среды, какие только существуют в природе.

«Ключ к портируемости — немногочисленные концепции и полное описание». Дж. Пальме

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

Да, у него есть и недостатки

В C много «недостатков». В нем нет контроля границ, в памяти легко что-нибудь повредить, встречаются висящие указатели и утечки памяти/ресурсов, поддержка параллелизма прикручена кое-как, нет модулей и пространств имен. Обработка ошибок может быть страшно затруднительной и пространной. Легко допустить целый класс ошибок, о которые разбивается стек вызовов, а ваш процесс захватывается зловредным вводом. Замыкания? Смешно! 

«Если ничего не получается, прочтите инструкцию». Л. Ласельо

Недостатки C очень хорошо известны, и это радует. Во всех языках и реализациях есть свои сбои и проблемы. Язык C просто их не скрывает. Существует масса статических и динамических инструментов, позволяющих справляться с наиболее распространенными и опасными ошибками в этом языке. Тот факт, что некоторые наиболее востребованные и надежные программы в мире написаны именно на C, доказывает, что недостатки языка преувеличены, ошибки легко отслеживать и устранять.

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

Сначала, из соображений производительности, мы стали все активнее переписывать код Couchbase на C, именно на этом языке реализовали несколько новых фич. Но когда мы столкнулись с проблемами, оказалось, что их совсем несложно отлаживать и исправлять. Итак, в долгосрочной перспективе язык C более продуктивен.

Где-то в подсознании я желаю сделать язык C немного лучше. Просто сгладить некоторые острые края и исправить кое-какие вопиющие проблемы. Но, наверное, не удастся исправить все сверху донизу — синтаксис, семантику, инструментарий. Возможно, это и не стоит усилий. На сегодняшний день язык C непостижимо эффективен, и ситуация вряд ли изменится в обозримом будущем.

Источник

dev.by

Какие языки программирования для чего нужны?

C

Начнем по алфавиту. Курсов C (Си) в каталоге Recoursia не так уж и много, но тем не менее, этот язык сложно назвать страдающим от недостатка популярности. Это один из самых старых среди активно используемых сегодня в реальной практике разработки программного обеспечения алгоритмических языков. На нем разрабатывают то, что принято обозначать «низкоуровневым программированием» - драйверы устройств, компоненты операционных систем, различные управляющие приборами и встраиваемые в них программы. Спрос на специалистов по языку C не слишком велик, но достаточно стабилен, но при этом, в связи со спецификой разрабатываемых на Си программ, требования к таким программистам очень высокие. Можно с уверенностью сказать, что начинающему C-разработчику в Беларуси сегодня практически невозможно будет подыскать себе работу. При этом учить C можно и нужно, ведь большинство современных языков «выросли» именно из него. Просто нужно быть готовым к тому, что, изучая C, вы заложите фундамент для длинной и успешной карьеры, а не сможете делать какие-то прикладные решения вроде сайтов и мобильных приложений сразу.

C++

Название этого языка программирования не зря так похоже на C. C++ - это «улучшенный C», но в результате такого улучшения получился достаточно непростой в изучении и, как многие считают, и в применении язык, который, тем не менее, остается востребованным уже очень много лет. «Си плюс плюс» - это пропуск в мир разработки всего, что должно работать максимально быстро. Игры, поисковые системы, антивирусы – это только очень краткий список того, что сегодня разрабатывают с помощью C++. Обычно этот язык изучают, уже получив опыт работы с C или другим более простым в изучении языком, и в качестве первого его выбирать вряд ли стоит, особенно если ваша текущая сфера деятельности далека от математики и алгоритмов. Но если вы мечтаете делать игры, причем не мобильные тетрисы, а что-то вроде легендарных Doom, Quake и WarCraft, то учить C++ стоит. Но сначала попрограммируйте на чем-нибудь еще.

C#

Еще один потомок языка C, разработанный корпорацией Microsoft для своей платформы .NET. В отличие от C++, курсы C# подойдут и тем, кто только начинает программировать. На C# (си-шарп) сегодня создают программы для Windows, пишут Web-приложения, а кое-кто еще продолжает разрабатывать и мобильные приложения для Windows Phone, в надежде на то, что Microsoft ещё не совсем забросила свою мобильную операционную систему. Вакансий для начинающих программистов C# сегодня в Беларуси достаточно – во всяком случай, если вы хорошо освоили программирование на этом языке, то наверняка найдутся компании, готовые поручить вам более-менее простые задачи на нем. В общем, если вы хотите стабильную работу, которая достаточно неплохо оплачивается, то стать «шарпистом» - далеко не худший вариант.

ObjectiveC

Четвертый только в нашем списке язык программирования, авторы которого вдохновлялись языком Си. Но при этом он стоит особняком от остальных «наследников Си», ведь когда-то его выбрала в качестве основного инструмента корпорация Apple. Поэтому Objective C применяется практически только для программирования под MacOS и iOS, но в связи с популярностью продуктов «яблочной компании» спрос на разработчиков, использующих Objective C, довольно высок. Впрочем, относительно недавно Apple выпустила новый язык, так что будущее Objective C выглядит не таким уж безоблачным. Да и сложность написания ПО на нем заставляет усомниться в том, что начинать изучения программирования с Objective C – хороший выбор.

Swift

На смену не всегда удобному и вызывающему немало нареканий у разработчиков Objective C компания Apple выпустила новый язык программирования – Swift. Пока что нельзя сказать, чтобы он совсем уж заменил своего предшественника в разработке под iOS и MacOS, но популярность Swift во всех рейтингах стабильно растет, в то время как популярность Objective C так же стабильно падает. Так что если вы хотите программировать под Apple-устройства, вполне можно сразу садиться за изучение Swift, не тратя время на Objective C.

PHP

Некогда самый популярный язык для написания сайтов и Web-приложений, сегодня PHP уже выглядит несколько устаревшим, особенно когда речь заходит о больших проектах для международных рынков.

Тем не менее, благодаря простоте освоения и большому количеству небольших проектов, PHP можно рекомендовать в качестве первого языка для изучения даже тем, кто не имеет ни малейшего представления о программировании вообще. Карьерные перспективы у PHP-разработчиков пока что тоже достаточно неплохи, потому что существует большое количество проектов, ранее уже написанных на PHP, и нуждающихся, как минимум, в поддержке. Хотя при этом зарплата даже у высококвалифицированного PHP-разработчика будет ниже, чем у его коллеги, имеющего аналогичный по продолжительности работы, но использующего C++ или Java.

Java

Второй по популярности язык программирования в мире, который применяется так же широко, как C++, но не имеет большинства его недостатков. Java – это и разработка больших высоконагруженных продуктов для больших транснациональных компании, и небольшие приложения и игры для Android. Программисты, пишущие код на Java, востребованы во всем мире, и Беларусь – не исключение. При этом Java уже много лет остается одной из самых хорошо оплачиваемых массовых специальностей для разработчиков. При этом вероятность того, что в обозримом будущем Java исчезнет из списка востребованных специальностей, ничтожно мала. Правда, и цена за эти преимущества достаточно высока: для изучения Java вам потребуется гораздо больше времени и усилий, чем для изучения того же PHP. Но и отдача будет высокой.

JavaScript

Этот язык часто путают с Java, и неудивительно – когда-то название ему выбрали на волне популярности платформы Java, и с тех под JavaScript постоянно борется за звание настоящего языка. Сегодня, кажется, это уже в прошлом, потому что именно JavaScript – самый популярный язык программирования в мире. Своей популярностью он обязан, конечно, развитию Web, ведь именно JavaScript используется для написания Front-end (браузерной части) всех тех интерактивных Web-приложений, которые сделали браузер таким же рабочим инструментом, как Word, Excel и тысячи других традиционных приложений для Windows. Но сегодня JavaScript (часто пишут сокращенно JS) используется и для серверного программирования, и количество новых сфер применения этого языка растет буквально с каждым годом. При этом порог вхождения в профессию здесь заметно ниже, чем в случае с Java, а зарплаты могут быть часто на том же уровне. С уверенностью можно сказать, что JavaScript сегодня – один из лучших языков для старта карьеры программиста.

Python

Еще один достаточно универсальный и относительно несложный для изучения язык. Python (он же питон, читается как «пайтон») прочно утвердился в очень и очень перспектиной области, которую называют data mining. Если говорить упрощенно, то так называют применение различных данных, накопленных в бизнесе, для поиска скрытых закономерностей спроса и возможностей развития бизнеса. Но Python также активно используется для написания Web-сервисов, серверной части многопользовательских игр и многих других задач. Спрос на Python-разработчиков довольно быстро растет, поэтому если вы решите изучать этот язык программирования, то вряд ли прогадаете.

R

В отличие от «питона», этот язык заточен исключительно под анализ данных, что естественным образом сказывается на его распространенности и востребованности у работодателей. Правда, и платить узкому специалисту по R, видимо, будут больше, чем «питонисту», но попробуйте еще найти подходящую вакансию! В общем, курсы R будут полезны, если вы работаете в сфере анализа данных, и хотите освоить полезный навык. Начинать же карьеру программиста с такого специфического языка вряд ли будет разумным решением.

Scratch

В общем-то, Scratch – это даже не язык, а среда визуального программирования, придуманная для обучения программированию детей. Поэтому 99% курсов Scratch адресованы детям довольно юного возраста, и если вы уже к ним не относитесь, то себе посмотрите что-то другое. Если же у вас есть ребенок, которому 7-12 лет, то курсы Scratch – отличный вариант, чтобы заинтересовать его программированием. Кстати, здесь у нас есть еще подборка отличных советов, как заинтересовать ребенка программированием.

Ruby

Один из достаточно популярных языков Web-программирования, который, в прочем, на белорусском рынке труда не всегда способен обеспечить своего носителя топовым по заработной плате рабочим местом. Курсы Ruby вряд ли стоит изучать для освоения первого языка программирования, потому что с высокой долей вероятности поиски работодателя затянутся, ведь вакансии для junoir’ов на Ruby появляются довольно редко.

Delphi

Еще пять-семь лет назад именно Delphi был стандартным первым языком программирования - еще бы, ведь язык Pascal, который является предшественником Delphi, и был придуман для обучения школьников и студентов программированию. Но для реальной жизни Delphi уже подходит из рук вон плохо, поскольку программирование на нём оплачивается заметно ниже среднего, а новых крупных проектов на этом языке вы не найдете. Поэтому рекомендовать курсы Delphi начинающим программистам в наши дни уже вряд ли стоит.

ActionScript

Ещё один язык из славного прошлого – ActionScript был (да и остается) языком платформы Adobe Flash, на которой еще недавно была написана половина игр для Web. Сегодня уже Flash – это пережиток прошлого, и ActionScript тоже нужен разве что для поддержки всего того, что было раньше написано на Flash’е.

VBA

Язык программирования макросов для пакета Microsoft Office. VBA расшифровывается как Visual Basic for Applications, и используется для автоматизации рутинных действий в офисных пакетах. Так что если ваша работа тесно связана с Word и Excel, то курсы VBA будут полезны, но программистов на VBA на рынке труда никто не ищет, и вряд ли будет искать в обозримом будущем.

1C

Язык программирования для одноименной бухгалтерской платформы. Специалисты по программированию на 1С сегодня нужны не только в ИТ-компаниях; практически каждая крупная организация имеет в своем штате сегодня 1С-программистов. Так что курсы программирования 1С – хороший вариант для тех, кто не очень близок с английским языком, но при этом хочет работать в ИТ-сфере.

Давайте подытожим то, что написано выше. Если вы решили учить программирование сегодня, то самое перспективное – это JavaScrip, Java, Python, 1С, Swift и C#. Но, конечно, это не значит, что остальные языки второсортные или неподходящие. Помните, главное – это стремление к цели и упорный труд, которые обязательно будут вознаграждены по достоинству.

spark.ru

Языки которые должен знать программист: Си

Я писал о том, что программист должен знать несколько языков программирования. Теперь я конкретизирую какие именно языки должны быть известному каждому программисту. Начну с языка программирования Си. Согласно индексу TIOBE, язык Си является самым популярным языком программирования уже очень продолжительное время. Он иногда уступает первую позицию, но в общем стабильно держится первым.

Язык Си в целом стандартизован и компиляторы для него существуют практически под любую платформу. Большая часть системного программного обеспечение пишется на языке Си. Ядро операционной системы Linux, да и многих других, полностью написано на языке Си. Разработчики системного ПО стараются сводить к минимуму платформенно-зависимые вставки на ассемблере, что позволяет повторно использовать большую часть кода.

По сути, язык Си это переносимый макроассемблер современности. Язык Си позволяет решать задачи на уровне абстракции, который максимально приближен к железу. В нем нет никакого скрытого поведения за исключением макропроцессора. Каждая инструкция языка транслируется в машинный код прямым и понятным образом. Исполняется ровно тот код, который программист видит на экране. Это естественным образом способствует написанию быстрого кода без лишних накладных расходов. Ведь для того, чтобы код написанный на Си работал медленно, выполняя какие-нибудь лишние операции, вызовы этих лишних операций явным образом запрограммировать.

Зачем же нужно знание языка Си программисту, который пишет прикладное программное обеспечение на других языках? Во первых, все первые пять наиболее популярных сейчас языков программирования так или иначе основаны на языке Си. В дополнение к самому Си на первом месте, C++ и Objective-C являются его расширениями в том или ином виде, а Java и C# используют синтаксис основанный на языке Си.

Во вторых, если программист пишет на каком-нибудь узкоспециализированном или универсальном динамическом языке (PHP, JavaScript, Python, Perl и т.п.), то его среда исполнения, интерпретатор, и основные библиотеки в большинстве случаев написаны на Си (ну или иногда на C++, что не отменяет необходимость знать Си). А значит для того, чтобы понять что же именно происходит в том или ином куске кода, почему та или иная операция занимает какое-то определенное время или потребляет какие-то ресурсы нужно иметь представление о языке Си. Любая нестандартная ситуация или неожиданное поведение — и вот уже приходится изучать исходные тексты библиотеки на Си. Любой выход за рамки задач, которые были предусмотрены разработчиками языка — и вот уже приходится самому писать расширение на языке Си. Собственно, все универсальные языки программирования поддерживают тот или иной способ взаимодействия с кодом написанным на Си, что подчеркивает особый статус языка Си в современном мире.

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

Язык Си это лингва франка современного программистского мира. Хотите, чтобы ваши идеи были понятны наибольшему число программистов? Изложите их на языке Си или, на крайний случай, на одном из Си-подобных языков. Хотите понимать максимальный круг литературы, написанной для программистов про алгоритмы, дизайн и т.п.? Учите язык Си.

UPDATE: В догонку про C++.

elizarov.livejournal.com

Публикации для программистов — xBB.uz

Избранные доки Подписаться через RSS2Email.ru Программируем на R: как перестать бояться и начать считать 28.11.2014 Возможно, вас заинтересовала проблема глобального потепления, и нужно сравнить погодные показатели с архивными данными времен вашего детства. Калькулятором тут не обойтись. Да и такие программы для обработки электронных таблиц, как Microsoft Excel или Open Calc, пригодны только для простых вычислений. Придется изучать специализированный статистический софт. В этой статье мы расскажем об одном из популярнейших решений — языке программирования R. Smart Install Maker. Создаем установщик 23.11.2014 Появляется все больше инди-разработчиков, которые создают собственное программное обеспечение для компьютеров. Однако, чтобы продукт выглядел качественным, необходимо продумать все до мелочей, в том числе и систему установки программы. Тратить время на написание собственных инсталляторов никто не хочет, поэтому на рынке появляется все больше специализированных утилит, которые все сделают за вас. Они дают целевому пользователю то, что ему необходимо. Функции в языке программирования C++ 18.11.2014 Функцией называют обособленный модуль программы, внутри которого производятся некоторые вычисления и преобразования. Помимо непосредственных вычислений внутри данного модуля могут создаваться и удаляться переменные. Теперь расскажем о том, из каких основных частей состоит функция в C++. Самая первая часть — это тип возвращаемого значения. Он показывает, что будет передавать функция в основную программу после своих внутренних преобразований... Урок «Hello world» на Microsoft Visual Studio 2013 13.11.2014 Статья предназначена для новичков, которые пока не знают даже как создать файл C++ в среде Visual Studio. Перед вводом кода нужно сделать проект: «File — New — Project» или при помощи быстро-вызова через Ctrl+Shift+N. В открывшемся окне слева выбираем шаблоны «Visual C++». В центральной же части нажимаем на «Empty Project». Затем вводим значимое имя проекта, чтобы помнить зачем он создавался (в нашем случае подойдёт Lesson), и нажимаем «OK»... Код, который почти невозможно взломать 05.11.2014 Современные программы могут хранить в своем коде бесценные секреты. С помощью алгоритмов можно предсказать, какой товар на Amazon будет продаваться лучше всего или станет ли популярным сюжет нового фильма. Само собой, разработчики подобных программ не хотят, чтобы посторонние люди имели возможность изучить их код. Исследователи из Калифорнийского университета, IBM и Техасского университета в Остине не оставляют попыток избавиться от этой угрозы. Программирование на заказ как бизнес 10.06.2014 Этот вид бизнеса, — программирование на заказ, — распространен не только в режиме оффлайн, но и онлайн. Эффективность бизнеса определяется не только хорошими познаниями и умениями в области составления программ, но и способностью отслеживать инновации, новыми технологиями и инструментами, вовремя проведенным реинжинирингом. Чаще всего эта услуга привлекается небольшими предприятиями и даже физическими лицами для автоматизации бизнес-процессов. Лёгкое создание виртуальных машин с помощью PuPHPet. Часть 3 14.05.2014 Выполнение всех этих шагов может поначалу показаться чересчур долгим. Но когда вы разберетесь с этим лучше, сможете проделывать их быстро. Тем более, что вам ненужно каждый раз пересоздавать все с нуля. Если вы перетащите puppet/hieradata/common.yaml на puphpet.com, он автоматически заполнит форму соответственно этой конфигурации. Вам останется только откорректировать ее как надо. Один раз проделав работу, вы сможете выполнять ее быстрее и легче. Лёгкое создание виртуальных машин с помощью PuPHPet. Часть 2 12.05.2014 Apache или Nginx? В этом руководстве я остановлюсь на Apache. Опции его конфигурирования просты. Сначала укажем модули, которые нужно установить и включить. Для этого наберем их в поле Apache Modules. При этом выпадет список доступных модулей. Это позволяет избежать ошибок при наборе. Далее перейдем к конфигурации Virtual Host. Каким должно быть имя сервера и алиас вашего приложения? Сначала указываем их, потом корневую директорию и порт. Лёгкое создание виртуальных машин с помощью PuPHPet 12.05.2014 Окружение — одна из моих любимых мозолей в разработке софта. Его каждый раз приходится создавать заново для разных проектов с разными потребностями. Приходится обеспечивать соответствие окружения для всех разработчиков в команде (в том числе и для уделенных). Создавать окружения для разработки, тестирования и продакшена. Вас напрягает создавать и настраивать среду разработки? Это замедляет вашу работу? Если да, могу предложить решение — PuPHPet! Краткое введение в трейты в PHP 21.04.2014 Трейт, по существу, — это группа чистых методов, которые служат строительным блоком для классов и являются элементарной единицей повторного использования кода. В этой модели классы составляются как наборы трейтов, для чего служит специальный склеивающий код, соединяющий трейты вместе и задающий их нужное состояние. Практическое обоснование трейтов заключается в том, что классы иногда слишком велики для оправданного повторного использования кода. 6 подсказок по отладке для каждого PHP-кодера. Часть 2 11.04.2014 Иногда баги очень хитры или сообщения об ошибках совершенно непонятны. В таких случаях используйте дебагер и точки останова (для этого можно воспользоваться XDebug), добавляйте в лог-файл дополнительную отладочную информацию, помещайте ошибки в песочницу и отлаживайте «с уткой». Я надеюсь, что эти подсказки сэкономят ваше время на отладке и сделают ее чуть приятнее! И не стесняйтесь делиться своими собственными подсказками в разделе комментариев!
код, отладка, php, практика программирования, кодер, программисты, баги, отладка кода, разработчики, программирование, разработка нет комментариев
6 подсказок по отладке для каждого PHP-кодера 09.04.2014 Программисты тратят на отладку больше времени, чем на написание кода. Когда я был новичком, я тратил уйму времени на ковыряние кода в надежде, что баги исчезнут сами собой. Не делайте этого! Представьте, сколько времени я потерял! Ваш код не работает, а вы видите лишь то, что браузер не показывает того, что должен был показать? В этой статье я покажу вам пару трюков, которые позволяют работать эффективнее, но ключевая тема — это отладка кода.
код, отладка, php, практика программирования, кодер, программисты, баги, отладка кода, разработчики, программирование, разработка нет комментариев
Курсоры в хранимых процедурах MySQL. Часть 3 26.03.2014 Мы углубились в хранимые процедуры MySQL, рассмотрели функциональность курсоров. В предыдущих частях статьи мы продемонстрировали, как получать скалярные данные с помощью параметров вывода (заданных как out var_name vartype в объявлении ХП). Теперь рассмотрим, как получать вычисляемые наборы данных посредством временных таблиц. Попутно будут рассмотрены некоторые другие аспекты хранимых процедур. Также продемонстрируем вызов ХП из кода PHP.
процедуры, курсоры, хранимые процедуры, mysql, хранимки, процедуры mysql, cursor, sql, бд, хранимые процедуры mysql, db, хп, procedure нет комментариев
Курсоры в хранимых процедурах MySQL. Часть 2 24.03.2014 В данной части статьи на примерах демонстрируется, как создать хранимую процедуру с помощью MySQL Workbench и как использовать в этой хранимке курсор. Построчно объясняется, как работают курсоры в хранимых процедурах MySQL, основные принципы их применения. Затем в статье демонстрируется, как вызывать написанную ХП из кода PHP. В качестве примера используется реальная задача по обработке статистики игр для баскетбольного клуба ЛА Лейкерс.
процедуры, курсоры, хранимые процедуры, mysql, хранимки, процедуры mysql, cursor, sql, бд, хранимые процедуры mysql, db, хп, procedure нет комментариев
Курсоры в хранимых процедурах MySQL 19.03.2014 Курсоры не могут использоваться в MySQL сами по себе. Они — неотъемлемые компоненты хранимых процедур. Я считаю их аналогами указателей в C/C++, или итераторов в цикле foreach. С помощью курсоров мы можем обойти весь набор данных и над каждой записью произвести требуемые действия. Такие операции могут производиться и на стороне PHP, но если мы хотим уменьшить объем передаваемых данных, мы можем просто получить в PHP уже готовые обобщенные данные.
процедуры, курсоры, хранимые процедуры, mysql, хранимки, процедуры mysql, cursor, sql, бд, хранимые процедуры mysql, db, хп, procedure нет комментариев
Хранимые процедуры в MySQL и PHP. Часть 2 12.03.2014 В этой статье мы рассмотрим давно забытую составляющую баз данных MySQL: хранимые процедуры. Преимущества использования ХП очевидны, но напомним: Хранимые процедуры позволяют нам применять более строгий контроль доступа к определенным данным, когда это требуется бизнес-логикой. Кроме того, мы продемонстрируем основные шаги в создании хранимых процедур, пользователей и назначения соответствующих привилегий, покажем, как ХП вызываются из PHP.
db, mysql, базы данных, php, процедуры, базы данных mysql, хп, sql, хранимые процедуры, бд, программирование, mysql и php, базы нет комментариев
Хранимые процедуры в MySQL и PHP 10.03.2014 Проще говоря, хранимые процедуры («ХП») — это сохраненные в базе данных процедуры (написанные с помощью SQL и других управляющих операторов), которые могут быть выполнены движком баз данных и вызваны из программного кода, который с этим движком работает. В этой статье мы рассмотрим создание ХП в MySQL и их выполнение на сервере MySQL из кода PHP. ХП доступны и в других СУБД. Поэтому статья поможет лучше понять работу с базами данных в целом.
db, mysql, базы данных, php, процедуры, базы данных mysql, хп, sql, хранимые процедуры, бд, программирование, mysql и php, базы нет комментариев
WebDAV Mini-Redirector (MRXDAV.SYS). Версии и проблемы 28.02.2014 WebDAV Mini-Redirector (MRXDAV.SYS) — это компонент Windows, реализующий клиент для серверов WebDAV по технологии «веб-дисков». Протокол WebDAV — это расширение HTTP, реализующее работу с распределенной файловой системой с версионированием. В предлагаемом документе дается список известных версий MRXDAV.SYS и их багов. Этот список полезен, прежде всего, разработчикам, работающим над программным обеспечением, использующем протокол WebDAV. Настройка аутентификации в SabreDAV 21.02.2014 После того как вы создали свой сервер WebDAV, вы, вероятно, хотите сделать его безопасным. Аутентификация в WebDAV производится с помощью базовой или дайджест-аутентификации. Хотя ее несложно реализовать самостоятельно, SabreDAV предоставляет некоторые средства, которые могут облегчить ваш труд. SabreDAV поставляется с плагином, который производит аутентификацию. Он включает в себя два бэкэнда. Один хранит логины в файле, другой — в БД. Особенности реализации WebDAV в Microsoft Windows. Часть 2 15.02.2014 Во второй части статьи рассказывается о том, 1) как Windows понимает свойства WebDAV; 2) в каких кодировках шлет HTTP-запросы, получает ответы и о связанных с этим проблемах; 3) о баге с поддержкой {DAV:}displayname; 4) о различных других багах; 5) об имеющихся ограничениях на размер сохраняемых файлов; 6) о поддержке аутентификации на сервере WebDAV; 7) прочая информация и ссылки на ресурсы, где можно узнать больше о том или ином аспекте. Особенности реализации WebDAV в Microsoft Windows 13.02.2014 Windows имеет два клиента WebDAV. Предпочтительным на данный момент является «веб-клиент». Старый известен как «веб-папки». Веб-клиент назначает диску букву, что весьма полезно в плане его интеграции с операционной системой. Веб-папки не позволяют редактировать файлы непосредственно, а только перетаскивать их в/из папки WebDAV. Для работы веб-клиента сервис Web Client должен быть включен и запущен. В некоторых версиях ОС он по умолчанию выключен. Реализация файловой системы WebDAV с помощью PHP и SabreDAV. Часть 6 29.01.2014 Ранее мы добавили поддержку блокировки файлов, требуемую некоторыми клиентами WebDAV. Затем мы реализовали систему HTTP дайджест-аутентификации. Это означает, что пользователи должны вводить свои логины и пароли для доступа к серверу WebDAV. Теперь кратко опишем, как реализовать собственную виртуальную файловую систему с SabreDAV, позволяющую легко добавить WebDAV в уже существующее веб-приложение (такое как Система управления контентом).
webdav, файловая система, php, система webdav, sabredav, реализации webdav, веб, сервер webdav, файлы, библиотека sabredav, web нет комментариев
Реализация файловой системы WebDAV с помощью PHP и SabreDAV. Часть 5 27.01.2014 Последним шагом в создании нашего сервера WebDAV станет добавление аутентификации. SabreDAV облегчает добавление как базовой, так и дайджест HTTP-аутентификации. Однако пользователи Windows могут использовать базовую аутентификацию только на защищенном сервере. Другими словами, не-SSL сервера WebDAV должны либо не использовать аутентификацию, либо использовать дайджест-аутентификацию. Раз так, покажем добавление дайджест-аутентификации.
webdav, файловая система, php, система webdav, sabredav, реализации webdav, веб, сервер webdav, файлы, библиотека sabredav, web нет комментариев
Реализация файловой системы WebDAV с помощью PHP и SabreDAV. Часть 4 24.01.2014 Вы можете добавить несколько плагинов к серверу. Они предоставляют такие функции, как обработка блокировки файлов или промежуточные операции над файлами. С SabreDAV поставляется несколько плагинов, включающих: драйвер, который позволяет вам просматривать сервер WebDAV с помощью браузера; драйвер для блокировки файла; драйвер для игнорирования файлов ресурсов (таких, как Thumbs.db в Windows, файлы .DS_Store и «точка-подчеркивание» в Mac OS X.
webdav, файловая система, php, система webdav, sabredav, реализации webdav, веб, сервер webdav, файлы, библиотека sabredav, web нет комментариев
Реализация файловой системы WebDAV с помощью PHP и SabreDAV. Часть 3 22.01.2014 Начало работы с SabreDAV очень простое. После того как мы сохранили наши файлы на сервере, можно использовать уже готовый обработчик локальной файловой системы. Позже в этой статье мы кратко рассмотрим создание виртуальных файловых систем, если вы хотите хранить файлы в базе данных. В этом же разделе мы начнем пошагово создавать server.php, уже упомянутый в этой статье. Затем покажем вам, как монтировать ново-созданный диск к вашему компьютеру.
webdav, файловая система, php, система webdav, sabredav, реализации webdav, веб, сервер webdav, файлы, библиотека sabredav, web нет комментариев
Реализация файловой системы WebDAV с помощью PHP и SabreDAV. Часть 2 20.01.2014 Давайте создадим виртуальный хост для сервера WebDAV. Эта статья предполагает, что вы используете HTTP-сервер Apache на Unix-платформе. Если это не так, вам понадобится корректировка. В целях сохранения простоты мы не будем затрагивать SSL в этой статье. Если у вас есть доступный защищенный сервер, вы можете попытаться использовать его. После того, как у нас появится виртуальный хост, назначенный серверу WebDAV, скачаем и установим SabreDAV.
webdav, файловая система, php, система webdav, sabredav, реализации webdav, веб, сервер webdav, файлы, библиотека sabredav, web нет комментариев
Реализация файловой системы WebDAV с помощью PHP и SabreDAV 17.01.2014 Покажем вам, как создавать файловую систему WebDAV с помощью PHP и открытой библиотеки SabreDAV. Мы создадим простой веб-диск, который будет сохранять файлы в заданной директории на веб-сервере. К концу статьи вы сможете эффективно примонтировать эту директорию к локальному компьютеру и обновлять в ней файлы из своей операционной системы. WebDAV — это, проще говоря, расширение HTTP, которое позволяет управлять файлами на удаленном веб-сервере.
webdav, файловая система, php, система webdav, sabredav, реализации webdav, веб, сервер webdav, файлы, библиотека sabredav, web нет комментариев
Дональд Кнут. Человек, книга и программа 08.01.2014 Есть люди, вклад которых в развитие какой-то области деятельности невозможно не заметить, но трудно оценить. Дональд Кнут, имя которого каждому программисту известно по определению, именно таков. Американский математик и специалист в области компьютерных наук Дональд Кнут является автором самой фундаментальной монографии, посвященной программированию, 4-томного «Искусства программирования», настольной книги и Библии программистов всего мира. Особенности программирования под iOS 18.12.2013 Если вы никогда не использовали систему Cocoa или её предшественниц NeXTSTEP и OpenStep, то, возможно, среда разработки приложений Cocoa Touch покажется вам недружелюбной. Она отличается от обычных сред разработки, используемых, например, для разработки приложений для платформы .NET или на языке Java. Не стоит беспокоиться о том, что на первых порах вам будет несколько неудобно. Просто покорпите над упражнениями, и всё встанет на свои места. Что такое машина Тьюринга 01.04.2013 Дело было в 1936-м году. Молодой учёный Алан Мэтисон Тьюринг решил растолковать человечеству принцип алгоритмических вычислений. Дело в том, что мистер Тьюринг являлся пророком компьютерной эпохи, поэтому попросту не мог не поведать людям о том, что такое алгоритм. Вот и придумал абстрактную машину, которую назвали его именем. То бишь фамилией. Следует сразу обозначить важный момент: машина Тьюринга — исключительно умозрительное устройство...
что такое, машина, что, машина тьюринга, тьюринг, что такое машина, виртуальная машина, компьютеры, информатика, информационные технологии, программное обеспечение, ит, программирование, it, компьютерные технологии, икт, цифровые технологии, алгоритм нет комментариев

xbb.uz