Язык для начинающих
Всем привет,
Планирую вспомнить старое и начать понемногу программировать. Пока для души, если душе понравится, то уже перейти на профессиональную основу.
Есть два направления в которые хочу попробовать войти:
1. Приложения для Android, и в перспективе для iOS
2. Приложения в области связи. Будут взаимодействовать через API с телекоммуникационным оборудованием, и с SQL базами.
Какие бы языки программирования посоветуете для этих направлений?
1. Для iOS язык называется Swift. В AppStore есть бесплатные книжки (на английском) по этому языку.
2. Отталкивайтесь от API к этому оборудованию. Т.е. если библиотека для работы с оборудованием написана для языка C или Java, тогда их и изучайте. Посмотрите описание этого оборудования, и станет понятно, на каких языках к нему пишется доступ. Вот простой пример: https://www.velleman.eu/support/downloads/?code=K8055
Спасибо, за ответ.
По iOS выбирать особо не из чего, поэтому вопросов больше нет.
А вот по второму вопросу вариантов масса.
Первым делом потренеруюсь на Mikrotik.
Там API реализован через отправку команд на определенный tcp порт. Поэтому язык любой подойдёт. Хотелось бы силы потратить на то что сейчас в тренде и востребовано на рынке труда.
Приложения для Android, и в перспективе для iOS
Если и то и другое и без особых претензий, то C# Xamarin нормально справляется.
Будут взаимодействовать через API с телекоммуникационным оборудованием, и с SQL базами.
ну тут как бы особых преград нет.
Я бы начал с того, а что именно Вы знали раньше и как хорошо?
Для iOS язык называется Swing
Оговорка по Фрейду?)) Swift он. Для андроида Java/Kotlin. Xamarin c C# сейчас для мобильной разработки все ещё намного менее популярны, чем нативные языки.
Подробно про выбор языка под андроид: https://www.androidauthority.com/develop-android-apps-lang...
ерундой был так до сих пор лучше не стал
Не знаю, мне для домашних поделок пока хватает. Хотя требуется только для андроида.
А какие еще есть варианты с С#? Или хотя бы с одним языком для двух платформ?
Мы в 2014-15 искали что-то на чём можно было бы писать одновременно и для андроида и для iOS (в идеале и микрософтовские аппы). Но ничего подходящего не нашли. Основная проблема была с гуевым дизайном. Слишком по-разному должны выглядеть и вести себя андроидовские и эппловские приложения. Ничто из опробованного не генерировало из одного кода прилично и то и другое.
Понравилась только Corona. Пишешь на Lua, генеришь что захочешь. Но она для игрушек, дизайн "бизнес-приложений" она делать не помогает.
Есть оказывается еще варианты
https://code.tutsplus.com/articles/mobile-development-lang...
Но для С# больше пока ничего не знаю
На что на Java2ME на Google Play приложения уже не делают?
Раньше было так, лет 7 назад. Регистрируешся на Google Play как Android Developer, платишь там 35 евро в год.
Скачиваешь Java и Java2ME копилятор. Затем делаешь приложение, проверяешь его на наличие ошибок напомню в каком эмитаторе телефонов и затем загружаешь своё приложение на Google Play. И ждёшь когда приложение станет популярным чтобы собирать бабло.
Я этого не достиг.
Помню только что Google меня заблокировал за пиратство. Потому что я делал Так и закончилась моя карьера программиста.
Я к сожалению, не занимаюсь разработкой мобильных приложений на работе, чисто так для личных нужд и расширения кругозора.
Так что актуальный тренд мне неизвестен. Но вроде пищали недавно от Flutter. J2ME похоже совсем не популярный стал.
Но раз раньше разобрались я Явой, то Ява скрипт будет вероятно проще всего.
Всем спасибо за комментарии и ссылки.
Решил следующее:
1. Начну с Kotlin, как перспективный и относительно простой язык для Android
2. Далее хочу освоить Питон, тоже как я понял перспективный и функциональный язык
3. Если понравится и захочу перейти на профессиональный уровень, возьмусь за PHP\Java как наиболее востребованные на рынке языки.
Ну я могу на интернете посмотреть как «Hello World» написать на Java. И сюда код закинуть, но постепенно мы перейдём к более сложным вещам.
Кто нибудь другой должен этот код ввести в свой комп и переслать третьему, у меня то компа нет, а третий снять скриншоты и сюда закинуть, чтобы всем видно было.
У каждого должно быть задание по способностям и возможностям.
я бы не рекомендовал бы соваться в шарп. Там в основновном asp.net, а это считай конкурируй со студентами. Или очень специфичные вещи (железо, enterprise mobility, test automation)
Ява гораздо более стабильна, денежна и нет конкурентов, готовых работать за еду.
Естественно я имею ввиду полный цикл, начиная HTML и CSS, JavaScript и Vue/React, заканчивая тонкой настройкой osgi контейнера.
Там в основновном asp.net
По вакансиям, вполне возможно, но мне всего раз попался проект на asp.net и то потому, что не захотел на этой же фирме опять С++ проект делать.
Естественно я имею ввиду полный цикл, начиная HTML и CSS, JavaScript и Vue/React
А у нас полный цикл это С# (хотя формочки тоже нужно знать как делать), а Vue/React микрософт обещает вообще убить.
Что еще странно, что лично мне очень редко попадаются хорошие проги на Яве, обычно только глюкообразные монстры один вид которых вызывает отвращение.
Но раз раньше разобрались я Явой, то Ява скрипт будет вероятно проще всего.
Нет. Во первых Ява с явойскриптом ничего общего не имеет. Во вторых яваскрипт это такое дерьмо, которое вообще ни с чем общего не имеет, не зря его в постскрипт оборачивают
Лет 6 назад более менее крупные компании кинули клич - по возможности делать неперсонализированный рабочие места. Ну типа пришел, плюхнулся за ближайший комп и работаешь. Это привело к тому, что эти компании захотели съэкономить на установке десктопного програмного обеспечения. Ну типа не пара сотен клиентских приложений, которые нужно инсталлировать, а браузерные приложения. Набрал интернетовский адрес, попал в корпоративную программу и работаешь дальше. Хоть из дома, хоть в дороге, хоть с хэнди. Отсюда взрыв веб-технологий и востребованность явистов(а они востребованы для бэкенда) и фронтэндщиков.
Ява для андроида есть. По крайней мере у нас на фирме книга валяется. Но это вообще не моя область и тут я ничего сказать не могу.
крупные компании кинули клич
Прошло как-то мимо меня, но не думаю, что это может быть основной причиной. Просто возникло много задач для которых веб решение более оптимально.
В то же время есть еще достаточно задач для которых десктопное решение более оптимально.
Вот как раз сам столкнулся - учет рабочего времени по задачам. Веб решений полно, но ими пользоваться практически невозможно, так как при закрытии бровсера текущее состояние просто теряется. Еще после длительного ожидания поле на автомате не обновляется.
А еще были рабочие места просто без интернета - это когда возле машины нужно было сидеть.
Современный JS это нормальный фактически компилируемый
Нет. Код пересылается в браузер и интерпретируется там
де-факто объектно ориентированный язык
Да. Но ООП и вообще концепт классов автор языка понимал по своему. Не как авторы остальных языков. Отсюда и ООП через жопу - прототипное программирование. Добавьте нетипизированные переменные и вы получите то, что некоторые считают языком😄
Я это к чему. На яваскрипте программировать можно. Даже нужно, ибо браузеры никаких других языков не понимают. Но не стоит с него ИМХО начинать, иначе начнутся проблемы с восприятием других языков.
Ещё раз имхо
большинство браузеров реализуют jist in time компиляцию кода, например: https://hacks.mozilla.org/2017/02/a-crash-course-in-just-i...
P.S. это я не к тому, что JS - хороший язык :-)
6 лет назад - это круто сказано - вся ява оттуда началась. Тоже, запускай приложение где хочешь.
А еще можно вспомнить Sun Ray: https://en.wikipedia.org/wiki/Sun_Ray - это было круто, приходишь, втыкаешь корпоративную карту в любой компьютер, и весь твой десктоп у тебя...
Вот не знаете js и ругаете его.
Современный проект на фронтенде собирается (фактически - компилируется) всякими вебпаками и бабелями из некоего условно называемого JavaScript на стероидах (вы не поверите - с классами и прочими плюшкми) в тот самый минифицированный фактически machine only readable JavaScript код, который непосредственно исполняется браузерами. А исполнение производится компиляцией минифицированного кода в машкод.
Код пересылается в браузер и интерпретируется там
Садись, двойка. Если бы JS был бы интерпретируемым, то вряд ли бы ты сейчас смог бы SPA писать юзать
и нода и браузер уже давно комплируют в машкод.
https://ru.m.wikipedia.org/wiki/V8_(движок_JavaScript)
Вот не знаете js и ругаете его.
Мне нельзя ругать JS? Место святое?
Если бы JS был бы интерпретируемым, то вряд ли бы ты сейчас смог бы SPA писать юзать
https://ru.wikipedia.org/wiki/JavaScript
JavaScript интерпретируется напрямую из файла (но часто с незаметной JIT-компиляцией).
Смысл в том, что в место испольнения программа доставляется не в виде машинного кода, как компилированные языки типа с++ и не в виде байт-кода, как ява, а в виде программного кода и там, на месте, в браузере, перед исполнением, программный код должен быть переведен в машинный. Но вобщем для программиста это не проблема, мне все равно на какой стадии код начнет исполнятся. Проблема не в этом.
Современный проект на фронтенде собирается (фактически - компилируется) всякими вебпаками и бабелями из некоего условно называемого JavaScript на стероидах
Хрень какая то. Именно поэтому вы и пишете условно называемый и на стероидах. Потому что существуют обертки для языка, позволяюще нормальным людям писать на этой хрени.
ибо браузеры никаких других языков не понимают.
------
Вполне себе понимают.
Были у меня и серверный ЯваСкрипт с клиентским ЯваСкриптом и АПСшный сервер с ВбСкриптами...
И, где-то в 2002-м, фронт делался на С++Билдере - в сраницу внедрялись АктивеХ объекты...
еще раз: современный яваскрипт проходит дважды КОМПИЛЯЦИЮ: вебпаком (с дополнительной компиляцией бабелем в браузеро-понимаемый яваскрипт) и компиляция уже в браузере движком В8 в машкод.
На входе этого тулчейна поставляется некий новый ЯваСкрипт (смесь Vanilla JS/TypeScript/flow ), который вообше говоря не понимается браузером в старом смысле этого слова
вебпаком (с дополнительной компиляцией бабелем в браузеро-понимаемый яваскрипт)
https://ru.wikipedia.org/wiki/Комп�%...
Компиля́ция — сборка программы, включающая трансляцию.......в эквивалентные программные модули на низкоуровневом языке, близком машинному коду (......) или непосредственно на машинном языке
Нa выходе вебпака действительно получается машинный код?
На входе этого тулчейна поставляется некий новый ЯваСкрипт
Нет никакого нового яваскрипта. Есть просто яваскрипт.И eсть например постскрипт и это ни разу не яваскрипт. Вообще. Именно поэтому на нем можно программировать и программируют. И именно поэтому его не понимают браузеры. И есть тулы, транслирующие этот язык в яваскрипт. А на яваскрипте писать жопа.
webpack is used to compile JavaScript modules
Babel is a JavaScript compiler
Термины заимствованны непосредственно у производителя
А теперь читаем нормальную викидипедию:
A compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language).
А на яваскрипте писать жопа.
По тебе видно, раз ты его до сих пор считаешь ИНТЕРПРЕТИРУЕМЫМ.
Babel is a JavaScript compiler
Babel is a free and open-source JavaScript compiler that is mainly used to convert ECMAScript 2015+ (ES6+) code into a backwards compatible version of JavaScript
webpack is used to compile JavaScript modules
Webpack is an open-source JavaScript module bundler
Нa выходе вебпака действительно получается машинный код?
Вы прочитали неверное определение компилятора. Он компилирует из одного языка в другой. Целевой язык не обязан быть машинным.
И да, v8 таки компилирует в машкод.
Кроме того, компиляция происходит и бабелем.
Нет никакого нового яваскрипта.
Есть. Это новые редакции ecmascript. Но они напрямую большинством браузеров не поддерживаются. И поэтому код должен компилироваться в тот js, который сможет исполнить браузер.
С точки зрения программиста ему будет казаться, что он пишет на новой версии javaScript.
По тебе видно, раз ты его до сих пор считаешь ИНТЕРПРЕТИРУЕМЫМ.
Ну по мне не видно. Хотя бы по тому, что мне наплевать, интерпретируемый язык или компилированный. Но тут вопрос. Вы пишите НЕ на ява-скрипте. А на другом языке, который вы транслируете (упс, сорры, компилируете) в яву-скрипт. Зачем такая жопа? Почему сразу не пишете на ява-скрипте?
Нет никакого нового яваскрипта.
Есть. Это новые редакции ecmascript. Но они
Ага. Есть такой ява-скрипт, который на самом деле не ява скрипт а ecmascript, который все таки не ява скрипт, потому что его приходится все таки переводить (сорры компилировать) в ява -скрипт.
А у вас не скучно
таки компилирует в машкод
-----
Поясни, плс, доставку машкода в браузер.
Специально и отдельно поясни совместимость с ХТТП(С)...
Чтобы было понятно - HTTP - Hypertext Transfer Protocol - протокол передачи ТЕКСТА с разметкой.
Целевой язык не обязан быть машинным.
-----
Нее, не обязан. Но он обязан быть другим языком.
Для случая когда язык остается тем же термин компилятор/компиляция заменяется на компрессор/компрессия/сжатие/обфускация...
В случае с жабьимскриптом - используется куча компрессоров - язык остается тем же, доставляется на клиента/браузер в виде текста и интерпретируется по местu...
А на какой графической библиотеке написана IntelliJ IDEA?
Ищите...
Вы знаете как работает современный веб?
По http передаётся минифицированный js bundle, который оптимизирован для передачи по сетям. И который движок v8 или аналогичные движки других браузеров смогут скомпилировать в маш код. На стороне браузера.
Без этого у вас Google Maps, Google Mail и прочие тяжелрвесные приложения вряд ли бы нормально работал бы. Скорее всего юзер бы ничего не увидел бы.
Зачем такая жопа? Почему сразу не пишете на ява-скрипте?
Затем, что EcmaScript учитывает потребности современных программистов современного веба.
Надоела ёлочка колбеков? На вам async await. И не нужно тащить сторонние либы.
Хочешь нормального ООП с Class? Пожалуйста.
Только вот браузеры не торопятся реализовать это. Поэтому и нам приходится компилировать ESXX в поддерживаемый браузером JS
Затем, что EcmaScript учитывает потребности современных программистов современного веба.JS это язык. С конкретным синтаксисом, с конкретными конструкциями. Библиотеки это не язык. Это сборник функций. То же самое и фрэймворк. Вы не пишете какой то функционалитет сами, а используете готовый. Но то, что вы пишите сами, вы пишете на каком то языке. Так вот нормальные классы с нормальным ООП вы на JS не пишете. Язык не поддерживает. Ну нет таких конструкций в этом языке. А броузеры поддерживают стандарты. А пишете вы на чем то, что потом будет транслировано в эти уродливые извращения JS.
Поэтому и нам приходится компилировать ESXX в поддерживаемый браузером JS
Причем транслировать не обязательно. Тот же Ангулер по умолчанию использует Постскрипт. Но тонкие извращенцы могут писать прямо на JS.
Я пишу на яве. Берем ваадин. Или EXT2. Компилируем. Гм. И получаем на выходе JS. Ups. Видимо Ява это всет таки яваскрипт
TypeScript, наверно.
Мда, спасибо
Вообще непонятно, о чем вы спорите.
Ну я начал с того, что начинать изучать програмирование с ЯваСкрипта не стоит. Поскольку синтаксические конструкции и вообще концепт ООП у него сильно отличаются от других распостраненных языков. Ну а потом спор ушел в сторону теории, что такое яваскрипт вообще.
Ну а кроме того я лично считаю, что писать десктопные проги на яве смысла не имеет. Просто из опыта в большинстве случаев фирмы или пишут на яве бэкенд для веба или ищут другой более подходящий язык. В смысле для последующего трудоустройства малоперспективно.
У нас неплохо получается на javafx, например.
Неправильная постановка задачи в контексте темы. Задача не писать что бы лучше, а что бы выучить наиболее востребованный на рынке труда язык и при этом приобрести знания, которые помогут освоить другие языки.
Так вот нормальные классы с нормальным ООП вы на JS не пишете. Язык не поддерживает
Лолшто? Я уже выше несколько раз писал.
В EcmaScript новых версий есть "нормальное" ООП. В смысле ты можешь писать слова class.
Есть понятия методов, свойств и прочего добра, которые навязываются фреймворком, который ты используешь.
Зы. Вроде бы опытный программист, а рассуждаете как какой то практикант бундесвера, пришедший на на месяц в фирму.
Хотя я щас призадумался, но так и не смог вспомнить, как я в свое время учился программировать.
Ха, а я помню. Бейсик на ДВК и Ямахах и паскаль.
Сегодня я бы обучал на чём-нибудь функциональном. Haskell, SML, ну или пусть будет scheme. В крайнем случае питон с явой. Но не дай бог учиться программировать на пыхыпы, перле, или яваскрипте.
А питон... как всегда - глобальные переменные и методы с кучей сторонних эффектов.
Отстрелить себе ногу, можно практически на любом языке, если постараться. А если "уметь его готовить" - то все хорошо
По сабжу - современное программирование, стоит начинать с Java/C#, оба неплохо вправляют мозги в плане ООП. С Python имхо, начинать плохо, т.к. многое на условностях и вольностях, которых в других языках нет, и начав с него, есть неиллюзорный шанс потом поиметь проблемы с пониманием других языков. А вот наоборт - пожалуйста.
современное программирование, стоит начинать с Java/C#, оба неплохо вправляют мозги в плане ООП
-----
До ООП нужно довольно долго и нудно объяснять целую кучу вещей.
Простейшая из них - понимание того, что только соответствующее синтаксису языка может быть странслировано/интерпретировано.
Простейшая из них - понимание того, что только соответствующее синтаксису языка может быть странслировано/интерпретировано.
Это можно сказать о любом языке программирования, и это учится обычно еще в школе. Любой, кроме сельской или старосоветской, где код пишется/писался на доске, компиляция и проверка синтаксиса разве что в голове учителя, а дебаг - никогда )))
Остальная "куча вещей" обычно специфична для каждого языка, его экосистемы, структур данных и пр. поэтому не столь важно, с какого начинать. А вот принципы ООП/ООД в современных языках более менее схожи, а потому имеют значение.
и это учится обычно еще в школе.
-----
Угу, угу...
Вот только мне случается видеть прогеров после западных шараг которые этого еще не понимают.
поэтому не столь важно, с какого начинать.
-----
Нее, не важно...
Что важно - возможность студентов понимать объяснения преподавателя - конечна.
Как только сложность превышает порог - начинаются проблемы в понимании что, где, как...
Случалось видеть кодеров, для которых не представляло никакого труда написать охрененно сложную иерархию классов и интерфейсов, но со сложностями в использовании цикла и массива.
А так - да, без разницы.
Просто используя тот же Паскаль проще объяснять базовые моменты на понятном студенту уровне - у них меньше возможности допустить ошибку и допускаемые ошибки легко понять и объяснить.
А вот найти преподавателя, который в состоянии внятно и понятно объяснить начинающему, не понимающему зачем декларировать переменную, концепцию множественного наследования в Плюсах - почти нереально...
А так - да, без разницы.
А вот принципы ООП/ООД в современных языках более менее схожи, а потому имеют значение.
Эти принципы по идее существуют вне языков. Более того, конкретная реализация часто мешает понять принципы в полной мере.