Как написали первую программу без программы для написания программ?
Если коротко, то новые языки программирования и другие инструменты создаются на основе уже существующих. Полная аналогия с другими областями техники, где новые станки и материалы позволяют создавать всё более совершенные станки и материалы. Как все станки начались с палки-копалки и кремниевого рубила, так и языки программирования начались с перфокарт и нечитаемого двоичного кода.
Центральный процессор вашего компьютера понимает только программы, написанные на языке ноликов и единичек. Например, команда «прибавить константу 5 к числу, записанному в регистре AL» записывается так:
Здесь 0000 0100 — код операции «прибавить число к регистру AL», а 0000 0101 — двоичное представление числа 5.
На заре индустрии для ввода программы в компьютер нужно было либо перещёлкнуть сотни тумблеров на специальной панели (тумблер ВЫКЛ — нолик, тумблер ВКЛ — единичка), либо пробить дырочки в специальной перфокарте. Ошиблись в одной ячейке из тысячи — программа будет работать неправильно, будьте добры сами найти ошибку методом пристального взгляда.
Ясно, что такой способ программирования жутко неудобен и подвержен ошибкам. Чтобы не тратить время на это занудство, ленивые программисты начали думать, как переложить неблагодарную работу на машину.
Можно один раз хорошенько помучиться и написать на языке ноликов и единичек вспомогательную программу, которая называется ассемблер («сборщик»). Этот волшебный ассемблер принимает на вход человеко-читаемый текст и преобразует его в нолики и единички. Например, та же самая команда «прибавить константу 5 к числу, записанному в регистре AL» записывается на языке ассемблера x86 так:
Думаю, вы согласитесь, что это всё-таки более читаемо, чем 0000 0100 0000 0101. Здесь хотя бы понятно, что речь идёт о сложении (ADD) и числе 5. Теперь уже дело ассемблера преобразовать эту строчку в 0000 0100 0000 0101. На языке ассемблера сложно писать большие программы, процессоры разных производителей могут требовать разных ассемблеров, но всё равно это был большой шаг вперёд.
Дальше инженерную мысль было не остановить. Нужно один раз помучиться, чтобы написать на ассемблере компилятор языка программирования, например Фортрана. Потом ещё немного помучиться, чтобы написать на Фортране компилятор Алгола. Затем передохнуть, помучиться и написать на Алголе компилятор языка CPL. Ещё немного мучений, и можно на основе CPL написать компилятор языка C. Дальше можно уже не мучиться и в свое удовольствие писать на C компиляторы C++, Java, C# и других современных языков. Впрочем, никто не запретит использовать Java чтобы написать ассемблер x86 и замкнуть рекурсию.
Источник статьи: http://thequestion.ru/questions/27943/kak_napisali_pervuiu_programmu_bez_dlia_5847e150
Как программисты написали программы для программирования без программ для программирования?
В командной строке. А до этого вручную на перфокарту или её предшественника. Вы и сейчас можете написать программку ручкой на бумаге и скормить по веб-камере программе определения текста.
Как программисты написали интерпретатор командной строки?
В программировании полный 0. Стоит ли начинать изучать его с языка Python?
Python — хороший выбор. Он сравнительно прост, не требует компиляции, но при этом востребован практически везде.
А вообще в программировании важнее не язык, а логика. На любом языке можно сделать практически что угодно. И если понять основные принципы и моменты (сама логика, создание функций, использование переменных и циклов, исключения, регулярные выражения и пр.), то на другой язык можно будет переключиться относительно быстро. Поэтому начинать можно с любого*.
*Понятно, что с Ассемблера или Брэйнфака начинать не желательно. Но если речь про основные популярные языки вроде Python, C/C++, Java, JS, PHP, Ruby и т.д., то для старта подходит любой.
Очень хочу научиться программировать. На каких языках мне лучше начинать?
JavaScript прекрасно решает свою задачу: быть скриптовым языком на вебе, но для обучения он слишком мутный. Его придумали в кратчайшие сроки (у создателей было 10 дней до презентации) прежде всего из маркетинговых соображений. Яваскрипт быстро развивается, но остается прежде всего прикладным инструментом для работы с вебом. Лучше оставьте Яваскрипт на потом, он никуда от вас не денется.
Python — один из лучших вариантов для начинающих. Питон вырос из языка ABC, который как раз создавался для обучения программированию. Питон придуман для того, чтобы быть первым языком.
Питон все чаще используют при обучении в ВУЗах и школах. По Питону гораздо больше качественных фундаментальных учебных материалов, чем по другим языкам. В общем профессиональные преподаватели все чаще выбирают Питон, чтобы именно учить программированию.
Питон — язык программирования общего назначения. На нем можно писать программы для десктопов, делать сайты, игры, мобильные приложения, программировать квадрокоптеры, умные дома и черт знает что еще. Многие выбирают Питон за его простоту и ясность.
И самое главное, Питон дисциплинирует и приучает писать понятный и структурированный код.
Программист прежде всего работает с алгоритмами, а язык — это инструмент. Для начинающих Питон — отличный инструмент. Начните с Питона, а когда освоите, то выбирайте язык под задачу.
Есть ли толк в онлайн-курсах по программированию типа Codecademy, GeekBrains, Яндекс.Практикум, DataCamp? Можно ли там чему-то научиться с нуля не только для интереса, а для потенциальной работы?
Скажу тебе как программист который был в ВУЗе, на курсах и учусь сам до сих пор. Если ты не понимаешь смысл курсов по программированию и программу, которую там дают — попробуй начать с азов.
Прочти книгу Code — Charles Petzold, пройди гарвардский курс cs50, он есть на edx. Это бесплатно.
Вот отличная статья по computer science Как самостоятельно разобраться в computer science знания из этой статьи не устаревают но это фундамент. Т.е. ты не научишься анализу данных из неё но точно будешь понимать что ты делаешь от и до. Это займёт много времени но оно окупится.
Тебя не будет ставить в тупик требование написать сортировку вставкой, оценить сложность алгоритма и т.д. Станет понятно что такое октеты, как устроены хеш-таблицы, почему тебя спрашивают про числа формата 0xABC, как без оператора умножения умножить/разделить число и прочее. С этого момента ты сам поймёшь какие курсы тебе нужны и нужны ли вообще.
Я видел твой комментарий про яндекс.практикум python и sql — в Яндексе работают отличные специалисты, они знают что дают. Они будут давать тебе, в том числе, математику связанную с анализом данных, отсутствие sql в курсе по анализу данных не говорит ни о чём т.к. сам анализ данных не строится вокруг sql
Должен ли SEO-специалист уметь программировать и создавать сайты?
Отвечаю по-порядку заданных вопросов.
Не обязательно иметь навыки программирования (хотя они, безусловно будут плюсом!), но в большинстве своем это «хлеб» программиста.
Для полноценных аудитов, анализа кода сайтов на предмет ошибок, достаточно знать основы создания сайтов (HTML/CSS)
Что примерно может войти перечень того, что надо изучить и применять:
- Основные понятия в веб-разработке (виды сайтов, веб-страница, гипертекст, теги и атрибуты, структура HTML-документа);
- Основы языка разметки документов HTML (Спецсимволы; комментарии в HTML; гиперссылки; типы изображений для web; загрузка изображений на страницу; списки, формы и их элементы);
- Основы языка оформления стилей документа CSS (синтаксис CSS; способы объявления CSS; селекторы (id, class, tag); селекторы атрибутов.; основные свойства стилей; вложенность; наследование и группирование свойств; проверка подключения файла стилей);
- Псевдоклассы и псевдоэлементы, табличная верстка (Приоритеты применения стилей; псевдоклассы и псевдоэлементы; создание таблиц; объединение ячеек; вложенные таблицы; стилевое оформление таблиц);
- Формирование блочной модели, блочная верстка (теги для верстки (div и span); отступы элементов (margin и padding); обтекаемые элементы; позиционирование блоков);
- Разметка сайта и Bootstrap (разметка сайта; применение overflow и clear в вёрстке, применение Bootstrap);
- Стандарты web («кроссбраузерность»; стандарты HTML/CSS; стандарты HTML5 и CSS3; грамотная, универсальная вёрстка).
Большинство толковых курсов для SEO специалистов так или иначе содержат основы HTML/CSS
Пока есть те, кто выполняет свои обязанности абы как, есть возможность получить клиентов на длительный срок сотрудничества
Начинающему SEO специалисту, прежде всего следует начать с:
- пройти курсы, где пошагово учат основам SEO продвижения (желательно от зарекомендовавших себя специалистов, например, Шакин, Девака и проч.);
- попробовать свои силы на собственном проекте (так вы понабьете «шишек», обкатаете на практике тому, чему научитесь на курсах);
- определиться с бизнес-моделью (или работаете в офисе или на фрилансе, один или в паре с программистом и т.д.);
- со временем определиться в типами сайтов, которые будете продвигать — специализация (e-commerce, статейники, сайты услуг или все подряд);
- регулярно вкладывать деньги в свое обучение, например, покупать видео-записи конференций, черпать опыт в тематических группах/пабликах.
Источник статьи: http://yandex.ru/q/question/kak_programmisty_napisali_programmy_dlia_2039757b/
Как создали программы для программирования без программ для программирования?
Если коротко, то новые языки программирования и другие инструменты создаются на основе уже существующих. Полная аналогия с другими областями техники, где новые станки и материалы позволяют создавать всё более совершенные станки и материалы. Как все станки начались с палки-копалки и кремниевого рубила, так и языки программирования начались с перфокарт и нечитаемого двоичного кода.
Центральный процессор вашего компьютера понимает только программы, написанные на языке ноликов и единичек. Например, команда «прибавить константу 5 к числу, записанному в регистре AL» записывается так:
Здесь 0000 0100 — код операции «прибавить число к регистру AL», а 0000 0101 — двоичное представление числа 5.
На заре индустрии для ввода программы в компьютер нужно было либо перещёлкнуть сотни тумблеров на специальной панели (тумблер ВЫКЛ — нолик, тумблер ВКЛ — единичка), либо пробить дырочки в специальной перфокарте. Ошиблись в одной ячейке из тысячи — программа будет работать неправильно, будьте добры сами найти ошибку методом пристального взгляда.
Ясно, что такой способ программирования жутко неудобен и подвержен ошибкам. Чтобы не тратить время на это занудство, ленивые программисты начали думать, как переложить неблагодарную работу на машину.
Можно один раз хорошенько помучиться и написать на языке ноликов и единичек вспомогательную программу, которая называется ассемблер («сборщик»). Этот волшебный ассемблер принимает на вход человеко-читаемый текст и преобразует его в нолики и единички. Например, та же самая команда «прибавить константу 5 к числу, записанному в регистре AL» записывается на языке ассемблера x86 так:
Думаю, вы согласитесь, что это всё-таки более читаемо, чем 0000 0100 0000 0101. Здесь хотя бы понятно, что речь идёт о сложении (ADD) и числе 5. Теперь уже дело ассемблера преобразовать эту строчку в 0000 0100 0000 0101. На языке ассемблера сложно писать большие программы, процессоры разных производителей могут требовать разных ассемблеров, но всё равно это был большой шаг вперёд.
Дальше инженерную мысль было не остановить. Нужно один раз помучиться, чтобы написать на ассемблере компилятор языка программирования, например Фортрана. Потом ещё немного помучиться, чтобы написать на Фортране компилятор Алгола. Затем передохнуть, помучиться и написать на Алголе компилятор языка CPL. Ещё немного мучений, и можно на основе CPL написать компилятор языка C. Дальше можно уже не мучиться и в свое удовольствие писать на C компиляторы C++, Java, C# и других современных языков. Впрочем, никто не запретит использовать Java чтобы написать ассемблер x86 и замкнуть рекурсию.
Источник статьи: http://otvet.mail.ru/question/203892208
Как сделали программу для программирования без программы для программирования?
Сделать какие-то примитивные средства разработки в двоичном коде(или в каком-то там ещё), а уже с их помощью начали созывать нормальные программы для программирования.
Можно ли при изучения программирования начать с легкого языка что бы понять «физику» программирования или сразу начать с С++?
Что такое «лёгкие языки»?) Pascal, VBA?
Программирование — это не про языки, это про алгоритмы и образ мыслей, логику. Начинать постигать это все, конечно, лучше с того что попроще. Я как студент, в свое время начинала именно с Pascal. Потом уже были C++, C# и т.д. На мой взгляд, это правильно. Pascal не перегружен сложным синтаксисом, после него легко было перейти на что-то другое.
Существуют ли языки программирования на русском?
Да, в детском садике нас водили в компьютерный класс и там была программа Кукарача, мы ее программировали словами «вверх» «влево» и т.д. И потом по алгоритму тараканчик бегал по экрану и передвигал кубики. Это единственный язык программирования на русском, известный лично мне.
Какой самый сложный и самый легкий языки программирования?
Языков программирования масса, так что назвать прям в точности самый простой и самых сложный не представляется возможным. Но кое-что всё же можно сказать.
Есть такой класс языков программирования, как эзотерические. На них редко пишут серьёзные программы, их цель — реализовать интересный концепт, поиграться с фундаментальными принципами программирования, а иногда — просто поржать. HQ9+ — отличный пример языка для «поржать», написать на нём почти ничего нельзя. Так вот, среди таких языков есть и те, что созданы для того, чтобы на них было можно, но адски сложно писать код. Ярким представителем таких является язык Malbolge. Он не только устроен очень запутанно и непонятно, но и текст на нём приходится писать в зашифрованном виде, так что код выглядит, как случайный набор символов.
Кстати, среди тех же эзотерических языков можно найти и супер-простые. Так, синтаксис языка Brainf*ck состоит всего из 8 команд, каждая из которых — лишь один символ. Правда, из-за такой простоты на языке сложно писать что-то по-настоящему полезное, а код выглядит нечитаемо, но освоить синтаксис можно за 10 минут.
Из «нормальных» языков особо сложным считается Ассемблер (это не совсем язык, а скорее семейство языков, ну да ладно). Этот язык используется для написания низкоуровневого кода для исполнения на процессоре. Его сложно учить, на нём сложно писать, но временами без него не обойтись. Ещё есть языки, несущие в себе сложную идею. Например, язык Haskell использует парадигму Функционального программирования, которая очень сильно отличается от привычных нам концепций. Изучать его тоже непросто.
Относительно простых языков много. Считается, что Python очень прост, и с этим сложно не согласиться: синтаксис довольно минималистичен, сложные компоненты языка упрятаны подальше от пользователя, чтобы он, так сказать, не думал о плохом. Есть другие языки, похожие по сложности: PHP, Javascript, Pascal (на Pascal почти никто ничего не пишет, но его до сих пор изучают во многих российских школах, как раз из-за его простоты), Ruby и другие.
Как изучить языки программирования и стать программистом? Обязательно ли институтское образование, или же «самоучки» тоже имеют хороший шанс «пробиться»?
Образование не обязательно, но желательно. Но если образования нет, а какой-нибудь язык выучить хочется, то надо брать и учить, как бы банально это ни звучало.
Нет большой разницы какой язык выбрать первым. Во-первых, нет «лучших» языков программирования. Во-вторых, тебе придётся несколько раз переучиться на другие языки, чтобы не остаться на обочине. Я советую выбирать что-то популярное и близкое к той платформе, которая на твоём основном компьютере. Это облегчит сам процесс, поиск информации и увеличит шансы встретить людей, которые помогут разобраться. Если у тебя Mac, то твоим первым языком, скорее всего, будет Objective C или Swift. Если у тебя Windows, то C#. Если Linux, то С++. Есть ещё Java – этот язык подойдёт для большинства платформ, но не надо думать, что это серебряная пуля. Есть ещё очень много других языков и постоянно добавляются новые. Гнаться за ними бессмысленно. Когда у тебя будет понимание о том, чего ты хочешь, ты сможешь узнать о них и выучить.
Когда выбор будет сделан, нужно подготовить всё для начала практического освоения. Да, сразу практика. Никаких книжечек для чайников, рисований блок-схем на листочке, динозавриков и прочего. Если Windows – качай Visual Studio Community с сайта Microsoft (бесплатно без смс и регистрации). Если Mac – xCode с сайта Apple. Если Linux, то ты бы не задавал этот вопрос.
У Microsoft и Apple (и не только) есть руководства для начинающих. Они помогут написать простенькие программки. Что-то серьёзное писать сразу не стоит. Лучше 10 законченных маленьких и бестолковых программ, чем одна, но большая и незаконченная. Разберись в них. Ты должен понимать в них каждую строчку и быть способным объяснить постановку каждой запятой или точки. Надо научиться воспринимать программы не как один монолитный кусок магии, а как совокупность маленьких и вполне материальных частей, тесно связанных между собой и мало полезных по отдельности.
Когда наиграешься с калькуляторами и хелоуворлдами, начинай ставить сам себе задания. Что-то вроде «хочу часы с будильником, чтобы вот они ещё мышкой по экрану так уууу». Знаний будет не хватать – ищи в интернете. Как получить время, как вывести время на экран, как обновлять значение этого времени. Чем конкретнее вопрос и чем меньше он охватывает, тем лучше.
Дикий труд пару лет, минимум личной жизни, синяки под глазами и вот ты джуниор в какой-нибудь компании с зарплатой «на чай и булочку». Но реальный опыт в разы ускорит развитие. Ещё через пару-тройку лет можно будет сменить компанию и просить уже достойную зарплату.
Профессия программиста очень сложна. Далеко не все тут становятся теми счастливыми ребятами на яхтах. Придётся постоянно учиться. Если только ты вдруг решишь, что стал уже крутым и матёрым прогером и можешь написать что угодно – ты пропал.
И да, самоучки имеют вполне хорошие шансы. Я самоучка. Первую программу написал в 12 лет, а к поступлению в университет знал на несколько курсов вперёд. Разумеется, мне не хватало знаний о best practies и всём таком, но на их изучение ушло относительно мало времени, нужно было только узнать о их существовании.
Источник статьи: http://yandex.ru/q/question/computers/kak_sdelali_programmu_dlia_bez_programmy_a692b6ea/