Интеллектуальное завершение кода? Там AI должен написать код путем изучения?

Вы можете использовать делегат или экземпляр в приведенном ниже коде. Это будет полезно для всех:

ViewController:

class ViewController: UIViewController {


    @IBOutlet weak var myTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        myTextField.text = "Hello World"
        // Do any additional setup after loading the view, typically from a nib.
    }
    // Without segue
    @IBAction func passData(_ sender: Any) {
        let sb = storyboard?.instantiateViewController(withIdentifier: "viewcontroller2") as! ViewController2
        sb.passText = "Hello World"
        //set self to Delegate
        sb.delegate = self
        //set self to Instance
        sb.instance = self
        present(sb, animated: true, completion: nil)
    }
    // With segue
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let sb = segue.destination as! ViewController2
        sb.passTextSegue = "Hello World with segue"
        //set self to Delegate
        sb.delegate = self
        //set self to Instance
        sb.instance = self
    }




}
extension ViewController : ViewController2Delegate{
    func passValue(Str: String) {
        print(Str)
    }


}

ViewController2:

protocol ViewController2Delegate : class {
    func passValue(Str:String)
}
class ViewController2: UIViewController {
        //Create instance for Delegate
    weak var delegate : ViewController2Delegate?
        //Create instance for ViewController
    var instance: ViewController?

    override func viewDidLoad() {
        super.viewDidLoad()
        myTextField.text = passText
        myTextFieldSegue.text = passTextSegue
        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBOutlet weak var myTextField: UITextField!
    var passText: String?

    @IBOutlet weak var myTextFieldSegue: UITextField!
    var passTextSegue: String?


    @IBAction func manage(_ sender: UIButton) {
        //Pass value using Delegate
        delegate?.passValue(Str: "Happy Coding~")
        //Pass value using Instance
        instance?.myTextField.text = "Happy Coding~ :)"
        dismiss(animated: true, completion: nil)
    }


    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}
7
задан Cody Gray 19 September 2017 в 17:39
поделиться

2 ответа

Такие инструменты существуют. Они - предмет дисциплины под названием Генетическое Программирование. То, как Вы оцениваете их успех, зависит от области их применения.

Они были чрезвычайно успешны (порядки величины, более эффективные, чем люди) для разработки оптимальных программ для управления производственным процессом, автоматизировал медицинский диагноз или дизайн интегральной схемы. Те процессы хорошо ограничиваются с явной и неизменной мерой по успеху и большой суммой "знания вселенной", которое является большим подшипником на том, что является допустимым, работой, программой и что не.

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

Другим доменом, который виден имея дело с "программой, учащейся", является Индуктивное логическое программирование, хотя это более используется для обеспечения автоматической демонстрации или языка / изучение таксономии.

12
ответ дан 6 December 2019 в 09:22
поделиться

Заявление об ограничении ответственности: Я не являюсь носителем английского языка и не специалист в данной области, я любитель - ожидайте неточностей и / или ошибок в дальнейшем. Итак, в духе stackoverflow не бойтесь исправлять и улучшать мою прозу и / или мой контент. Также обратите внимание, что это не полный обзор методов автоматического программирования ( генерация кода (CG) из Model-Driven Architectures (MDA) ) заслуживает хотя бы краткого упоминания).

Я хочу добавить больше к тому, что ответил Вархан (что по существу правильно).

Подход Генетическое программирование (GP) к автоматическому программированию объединяет со своими функциями приспособленности две разные проблемы («самокомпиляция» концептуально очевидна):

  • самосовершенствование / адаптация - синтезированной программы и, при желании, сам синтезатор; и
  • синтез программ .

относительно самосовершенствования / адаптации относятся к машинам Геделя Юргена Шмидхубера : самореференциальных универсальных средств решения задач, делающих доказуемо оптимальные самоулучшения . (В качестве примечания: интересна его работа по искусственному любопытству . ) Также актуальными для этого обсуждения являются автономные системы .

относительно синтеза программ , я думаю, можно классифицировать 3 основные ветви: стохастические (вероятностные - подобные вышеупомянутый GP), индуктивный и дедуктивный .

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

Обычно известен индуктивный программный синтез как Индуктивное программирование (IP), из которых Индуктивное логическое программирование (ILP) является подполем. То есть, Процесс в целом представляет собой статистическую индукцию / вывод - то есть рассмотрение того, что следует включить в неполную спецификацию, сродни случайной выборке.

Генерация и проверка и ] управляемый данными / аналитический § подходы могут быть довольно быстрыми, поэтому оба являются многообещающими (даже если до сих пор публично демонстрируются лишь небольшие синтезированные программы), но генерировать и тестировать (например, GP ) до неприличия параллельна , и тогда можно ожидать заметных улучшений (масштабирование до реалистичных размеров программы). Но обратите внимание, что инкрементное индуктивное программирование (IIP) §, которое по своей сути является последовательным, продемонстрировало, что оно на несколько порядков более эффективно по сравнению с неинкрементными подходами.

§ Эти ссылки ведут непосредственно к файлам PDF: извините , Я не могу найти реферат.

Демонстрационное программирование (PbD) и Программирование на примере (PbE) - это методы разработки для конечных пользователей, которые, как известно, используют ] индуктивный синтез программ практически.

Дедуктивный синтез программ вместо этого начинается с (предполагаемой) полной (формальной) спецификации (логических условий). Один из методов использует автоматические средства доказательства теорем : для синтеза программы создается доказательство существования объекта, отвечающего спецификации; следовательно, через изоморфизм Карри-Ховарда-де Брейна (соответствие доказательств как программ и соответствие формул как типов) он извлекает программу из доказательства. мы больше сконцентрируемся на Domain Engineering и Requirements Analysis and Engineering , чем на ручном проектировании и разработке программного обеспечения, ручной отладке, ручной настройке производительности системы и т. д. (возможно, с меньшим количеством случайных сложность по сравнению с тем, что вводится с текущим руководством, а не с методами самоулучшения / адаптации). Это также повысит уровень маневренности , который еще предстоит продемонстрировать текущими методами.

8
ответ дан 6 December 2019 в 09:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: