• Почему не создают компьютеры с машинным языком на C/C++?

    15432
    @15432
    Системный программист ^_^
    Процессор это тупая железяка из транзисторов. Ну ладно, не настолько тупая, в современных x86 процессорах машинные коды на лету транслируются в еще более низкий уровень встроенным микрокодом. Но все все равно предположим, что это тупая железяка типа Intel 8086. Как происходит выполнение программы - процессор считывает очередной байт кода и смотрит, что же он такое считал. По значению байта, он определяет, что это за команда (сложение, вычитание) и сколько ещё нужно считать байт конкретно этого машинного слова (а они в x86 могут быть разной длины). Все это происходит на уровне железа, то есть нечто вроде "пятый бит 0, третий бит 1, ага! Это команда сложения двух восьмибитных регистров, надо переключить линию данных на арифметико-логическое устройство и считать туда еще два байта на шину данных. То есть операции очень и очень простые, на уровне бит, сигналов и чтения данных, никакого анализа кода и уж тем более никаких имен переменных. Вы же предлагаете на аппаратном уровне парсить сишный код, в котором при последовательном чтении иногда невозможно определить, что делать в данный момент!! А процессор в это время будет простаивать и считывать из памяти кучу ненужного текста.
    Я вообще не представляю, как на уровне железа и транзисторов можно сделать синтаксический и лексический анализ сишного файла. Разве что сделать настоящий электронный мозг с миллиардом нейронов. Это уж точно не будет быстро, это вообще работать не будет. Изучите устройство компьютера, как именно работает процессор, научитесь думать на языке ассемблера, и поймёте всю абсурдность вашего предложения.
    Ответ написан
    4 комментария
  • Есть ли смысл в изучении новых (совсем молодых) инструментов и языков программирования и какие у них перспективы?

    hrls
    @hrls
    На ответ тянет deadbyelpy
    Добавить можно про определенную категорию языков, работу на которых найти тяжело, но изучить тем не менее стоит. Например, Erlang, OCaml, F# и другие функциональные языки очень сильно развивают мышление в терминах проблемы, а не языка программирования (то, что у МакКоннелла "Программируйте с использованием языка, а не на языке"). Clojure, как пример очень старой основы для языка, но с неимоверно крутыми идеями для современного мира, вроде STM да и в целом моделью параллелизма (отдельно стоит упомянуть ClojureScript и FRP).
    Изучение одного языка сегодня не имеет смысла
    – тяжело не согласиться, т.к. сегодня программист просто вынужден знать несколько языков (думаю 2-3 на уровне библиотек и фреймоворков, 5 на уровне стандартной библиотеки, и с десяток на уровне чтения кода). Провериться можно тут.

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

    Бывалые же советуют всегда держать под рукой интерпретируемый язык программирования, вроде Python или Ruby с REPL, для работ вроде "забрать кучу файлов по адресам из текстового файла". Ну и какой нибудь компилируемый тоже пригодится. Вне зависимости от стека и основного языка на проекте эти два друга будут выручать в любых ситуациях.
    Python/PHP/Ruby для веба являются взаимозаменяемыми (при наличии нормальной архитектуры у приложения). Связка C/Go/Python/JS выглядит мощной и очень достаточной на много лет вперед.

    А то, что все зовут стеками, для других является всего лишь набором старых парадигм, паттернов и практик, кочующих от одного языка к другому, но суть от этого не меняется (тут ООП и MVC передают приветы Smalltalk'у, а бородатый Лисп недоумевает, т.к. все эти DSL и приемы метапрограммирования давно живут своей жизнью и забыли истоки).
    Ответ написан
    1 комментарий
  • Есть ли смысл в изучении новых (совсем молодых) инструментов и языков программирования и какие у них перспективы?

    ЯП - это инструмент. Само по себе знание ЯП (любого) не имеет ценности. Важна связка ЯП и области приложения. Профессионализм программиста зависит в первую очередь от понимания области приложения.
    Например, будь Вы программистом, который знает все тонкости C++. Вам это не поможет написать АБС, если у Вас нет знаний по бухгалтерии кредитных организаций.

    Соответственно, изучение новых языков не так важно, как изучение области приложения.
    Ответ написан
    3 комментария
  • Есть ли смысл в изучении новых (совсем молодых) инструментов и языков программирования и какие у них перспективы?

    barmaley_exe
    @barmaley_exe
    Как справедливо заметили выше, Python и Ruby существуют уже 20+ лет, так что популярность они набрали уже давно.

    Go, Dart, Rust, D, etc интересны для изучения в целях расширения кругозора, но "в продакшен" не годятся: за 5 лет обширным сообществом не обзаведёшься, а, значит, ни выбора в плане библиотек, ни профессиональных кадров. Конечно, могут существовать отдельные проекты, исповедующие эти языки, но таких меньшинство.

    В последнее время многие прыгают вокруг JavaScript'а: сначала его перенесли на сервер (на самом деле, это сделали задолго до Node.JS, но не взлетело), а потом стали использовать чуть ли всюду (в win8, например, или PhoneGap). Но JS'у повезло иметь довольно больше коммьюнити на момент разгара этого хайпа, потому и понеслось.

    Выберите что-то из Python, Ruby, JS и разберитесь в этом (не столько в самом языке, сколько в его экосистеме, т.е. библиотеках, фреймворках и паттернах). Будет нужно — разберётесь в другом языке с его экосистемой. Идеи везде одни и те же, отличается только синтаксический сахар.
    Ответ написан
    Комментировать
  • Есть ли смысл в изучении новых (совсем молодых) инструментов и языков программирования и какие у них перспективы?

    deadbyelpy
    @deadbyelpy
    веб-шмеб
    "Постоянно появляются новые языки, вроде GO, Dart, "
    можете привести пример? Эти языки уже как 2-4 года существуют и обкатываются.
    Самый свежий - Swift, про другие не в курсе

    "набирает популярность Phyton, Ruby on Rails (хотя в российских компаниях мало востребованы)."
    что то вы опоздали, Python и Ruby уже прочно заняли свою нишу, особенно Py.

    "Больше всего беспокоит вопрос потраченного времени - будет обидно, если в дальнейшем ты не будешь востребован на рынке."
    если вы начнете изучать Python (который "набирает популярность") то вы найдете свою нишу.
    даже с более свежим Go вы не пропадете.
    но вот если учить язык у которого:
    1) нет сообщества
    2) главный мейнтейнер - Григорий с соседнего подъезда
    3) ничем не отличается от С
    у вас не много шансов найти работу имея знания этого языка.

    Фриланс, фриланс...
    "Сейчас имеются базовые знания по php+js+html+css." - если все на среднем уровне вы и так сможете себя прокормить.
    Изучите python, ruby, js на проф уровне - вам дорога в более оплачиваемую работу.
    Хорошо можно и с pjhc зарабатывать, но тут нужен опыт, ибо сайт визитка - копейки по сравнению с сервисом.

    Совет.
    Сейчас востребован фулл веб стек.
    Изучите лучше то с чего уже начали. Углубитесь в фронт (js+hml+css) или бек (php+sql+nosql) энд. И вы всегда найдете себе работу, конечно если искать будете.
    Ответ написан
    5 комментариев
  • Linux + .sh + RS-232 + RS-485 как всё это подружить?

    noonv
    @noonv
    а написать программу на C не получится? )
    Ответ написан
    2 комментария
  • Где можно заказать 3д печать 1-10 небольших деталей из термопласта?

    noonv
    @noonv
    разных контор много, но можно попросить кого-нибудь на робофоруме — там сейчас много владельцев 3D-ников.
    Ответ написан
    Комментировать
  • Раскачка C++ скилла

    lightman
    @lightman
    Хотя и полуофф, не смотрели в сторону языка D? Хотя по распространению и кол-ву разных либ он (примечание: с сишными совместим) и уступает C++, сам язык декларируется как современная замена C++, лишённая его исторических недостатков, удобная и практичная.
    Я задавался таким же вопросом как и вы, и пришёл к выводу, что буду смотреть в первую очередь именно D (пока нахожусь в процессе освоения C).
    Ответ написан
    3 комментария
  • Каков список базовых книг по математике?

    @Adamax
    Посмотрите в сторону Курант, Робинс «Что такое математика?»
    Ответ написан
    1 комментарий